貧しい作家は貧しいプログラマーになりますか?[閉まっている]


16

私はPeter SeibelのCoders at Workを読んいますが、書くことができないプログラマーは一般的に貧しいプログラマーになるとよく言われています-ダグラス・クロックフォード、ジョシュア・ブロック、ジョー・アームストロング、ダイクストラ(そして私は本の半分しか読んでいない)。

これについてどう思いますか?英語などの自然言語で書くことで自分を表現できないことは、良いコードを書くことの妨げですか?


9
プログラマーとしてのスキルについては知りませんが、プログラマーとして自分自身を売るためには、フリーランスの世界でスマート=セクシーです。したがって、あなたが上手に書く(そして話す)ことができれば、あなたは賢く感じられ、開発者としてより信頼できるとみなされます(それは完全に根拠がないかもしれませんが)。
ダンローゼンスターク

「書くことができない」とは、彼らの文法が間違っているということですか?それはおそらくなど貧しい流れ、のようなものよりも大きな問題だ
Maxpm

1
@Maxpm:たぶん、しかし文法的に正しいにも関わらず、文章で意味を伝えることができない。
ギャブリン

回答:


30

プログラミングには「コードを書く」だけではありません。プログラマーとして成功するためには、コミュニケーションが必要です。顧客とつながり、ニーズを理解し、技術分野に翻訳し、コードで表現し、その結果を顧客に説明できるようになること。

書面で明確に自分自身を表現するのに苦労しているプログラマーは、一般にうまくコミュニケーションをとることができないかもしれませんが、言語と文章をよく理解しているプログラマーは、一般にそれらのスキルを書くコードに翻訳できます。

うまく書くことができず、したがって、コミュニケーションがうまくいくと、非常に優れたプログラマーになることができなくなると思います。

(37signalsの)Jason FriedとDavid Heinemeier Hanssonが彼らの本Reworkで言うように:

あなたが少数の人々の間でポジションを埋めることを決めようとしているなら、最高の作家を雇ってください。

優れた作家であることは、書くこと以上のものです。明確な文章は明確な思考のサインです。偉大な作家はコミュニケーションの方法を知っています。


2
うん、そして、ほとんどの人が、優れたプログラマーの質の1つはコードで自分自身を明確に表現する能力であることに同意すると思います。コード内(およびその逆)。+1
n1ckp

2
私はこれに次ぐだろう。マシンとだけでなく、通信する必要があります。あなたの周りの人々とあなたの後に来るプログラマーは、話したり書いたりするコミュニケーションを明確にする必要があります。遅かれ早かれ人々と話さなければならないので話されて、それがあなたのコードとあなたのコメントであるので書かれました。
すぐに今すぐ

あなたの答えはとても面白いと思いました!しかし、記憶を振り返って、私が一緒に働いたり、働いたり、働いたりした最高のプログラマーを見つけたとき、私は彼らの多くが執筆が非常に下手だと感じました。しかし、彼らはとてつもなく良かった。ただし、優れた回答を心に留めて、今後も試してみます。+1

16
  • 何かを十分に説明できない場合、おそらく十分に理解していないでしょう。 賢い人であるということは、他の賢い人と働くことを意味し、彼らと効果的にコミュニケーションする必要があります。
  • あなたの頭の中だけに存在する素晴らしいアイデアは役に立たない
    。あなたのアイデアを効果的に伝えることができるということは、大きな理解のしるしです。これは、プログラミングの分野だけではありません。

4

質問を調べると、答えが直接得られると思います。

英語などの自然言語で書くことで自分を表現できないことは、良いコードを書くことの妨げですか?

良いコードを書くとはどういう意味ですか?

プログラムは、人が読むことができるように作成する必要があり、偶発的にマシンが実行するようにする必要があります。
-Abelson&Sussman、コンピュータープログラムの構造と解釈

それは、プログラミング言語で明確に、簡潔に、正確に、そしてエレガントに書くことを意味します。

英語またはプログラミング言語で巧みに表現することの唯一の違いは、英語がはるかに寛容であることです。


3

コードモンキーの大きな障害ではないと思います(母国語で自己を表現するための一定の基本的なレベル/能力を想定しています)。しかし、あなた(開発者)が非技術的な聴衆に対して設計/アーチ/計画をより明確に表現し始めなければならないので、それはすぐに大きな障害になると思います。私の経験では、自分とほぼ同じ技術レベルにある他の人に何かを伝えることは私のほうが簡単で、クライアントやマネージャーに何かを明確にするよりもかなり自然な言語スキルが必要です。同様に、技術的な対象者であっても、主題の具体性が低下するため、それについて書いている(またはそのことについて話している)人はかなり明確にならなければなりません。


3

それは、「良いコード」の意味に依存します。

正常に機能するコードを意味する場合、人間と通信できることとコンピューターと通信できることの間にはほとんど関係がありません。

動作し、保守可能で、コードの意図を明確に表現するコードを意味する場合、良いコードを書くことと人間専用の言語で書くこととの間には絶対的な関係があります。

理解しやすいコードを書くための優れたライターになるために必要なさまざまなスキルをすべて必要とするわけではありませんが、両方とも人間によって読み取られるため、そこに存在しなければならない要素がいくつかあります。いくつかの点で、コードで意図を説明する必要があるため、良いコードを書くことはさらに難しくなりますが、コンピューターで実行されている間はパフォーマンスが悪いコンストラクトを使用しません。


2

実は、コーディングはコミュニケーションスキルでもあります。埋め込まれたミューズの電子ニュースレターでジャック・ガンスルは最近ダグ・アボットを引用しました:

あなたがプログラムを書くとき、あなたが本当にしていることは、あなたがコンピュータに何をして欲しいかを他の人間に伝えることです。プログラミングは、他の形式の執筆と同様に、コミュニケーションに関するものです。そのため、コンピュータサイエンスの学生は良い文章に触れる必要があります。しかし、コンピューターサイエンスには貴重なものがほとんどないため、基本的な創造的なライティングクラスが必要なだけかもしれません。

散文の書き方を知らないプログラマーは、おそらくコードの書き方も知らないでしょう。

この興味深い記事の詳細:

悪い文章は貧しいプログラミングスキルを反映していますか?


2

これはすべて逸話ですが、次のとおりです。

私がこれまで働いた中で最高の「ロックスター」プログラマーの一人は、非常に貧しい作家でした。そして、私が「非常に貧しい」と言うとき、私は彼が非常に酔っていたか、ほとんど読み書きができないかのように出会ったタイプを意味します-あなたが彼のメールを見たとき。タイプミス、句読点の欠如、アイデアを明確に表現することの難しさ、および一般的なスペルミス(「彼ら/彼ら」など)はすべてあふれています-ほとんど耐え難いほどです。彼のメールのいくつかを読む-私は彼がクライアントに直接メールを送るのを心配していただろう(その会社でそれをする必要はなかった)-それは会社が悪く見えるからだ!

それでも、彼はスーパースターのプログラマーでした。平均より桁違いに生産的でスイッチオン。

どうしたらいいのかわかりません。私はさまざまな人々とこれを数回見ました。座って物事を書くコツを持たない人もいます。そして多くの場合、他の分野の彼らの才能には影響を与えないようです(プログラミングなど、比較的似ていると思われる「知識作業」の才能ですら)。あなたはそれが接続されると思うだろうが、私はそうではなかったこのようないくつかの生きている例を見てきた。彼らが「ルールを証明する例外」である可能性は十分にあると思いますが、おそらくプログラマーではない悪い作家や、そうでない良い作家に気付かないと思います


3
ルールには常に例外があります。私は少数の素晴らしい人たちとも仕事をしました。彼らはひき肉にされたであろうから、顧客の近くに決していません。私は、ドキュメントのタイプミスなどを修正するために年齢を費やしました。ただし、技術的な問題を与えると、洞察と解決策の閃光は驚くべきものでした。これはすべて、ここでの答えが一般化であることを示しています。ただし、一般化は大多数の人に適用されます。
すぐに

3
@quickly_now:彼らのコードがどのように読み取られるのか(あなたが指定しなかったので)私は疑問に思うでしょう。彼らは非常に賢くて良い問題解決者になる可能性がありますが、コードが読めない場合、私の意見が必要な場合、それほど素晴らしいプログラマーではありません。
n1ckp

@ n1ck:あなたがそれについて言及した今、私が考えている人は彼のコードを文書化するのがあまり得意ではありませんでした。コード自体は優れていて、適切に設計されていましたが、本質的に複雑なコードの一部についてコメントを付けていませんでした。それを考えていませんでした。:)
ボビーテーブル

@ n1ckpに同意します。私はまた、変数/メソッド/クラスの名前の選択が不可解で混乱することもあると確信しています。長期的な保守性を改善するために少し余分な時間を費やすことになることが多いため、私は非常に高い生産性を持つプログラマーに非常に警戒する傾向があります。
幻滅

2

彼らがうまく書くことができない場合、彼らはどのように彼らが良いプログラマーであるあなたに納得させることができますか?


0

システム構成やアイデアを正確に表現できない人は、それを書くことでコードを書くことができますか?


ただし、コードが正しく記述されていないと、コンピューターから非常に明確で即時のフィードバックループが発生します。あなたが改善する必要があるフィードバックを考えると、あなたが極端に書かれた英語が非常に貧弱で、それについて語られることさえほとんどないのではないかと思います。
Carson63000

コンパイラーを使用しても、明確で正しいことを学ばなければなりません。
クライム

0

プログラマーが話し言葉と書き言葉の両方でうまくコミュニケーションできることは非常に重要だと思います。アイデアを言葉に翻訳する能力は、コードを書くための前提条件です。

コンピューターと通信する場合でも、人と通信する場合でも、文法の規則に従って意味をなす順序に単語を並べる必要があります。会話の反対側が単語を理解できるように、単語を正しく発音または綴る必要があります。コンピューターは構文エラーをスローし、同僚は「何?」と言います。または、軽率なせせらぎまたはさらに悪いと言われているもの、刺激的な気晴らしを割り引く。

私は候補者を採用することを強く勧めています。とにかく私たちの上司に雇われた1人の人は、明るく輝く新しい技術やおもちゃに目を奪われたため、時間通りに簡単な任務を果たせないことがわかりました。

ですから、はい、プログラマーがうまくコミュニケーションできることが重要です。彼らが人間と効果的にコミュニケーションできない場合、彼らはコンピュータでそれを行うことができません。


0

貧しい作家は貧しい作家を作り、それ以外は何もしません。ライティングスキルが低いということは、まったくコミュニケーションが取れないということではありませんが、書くことも表現することもできません。もちろん、会社などでコミュニケーションスキルは重要かつ重要であると誰もが言うことができますが、それはコミュニケーションスキルの低いプログラマーが仕事をうまくできないという意味ではありません。プログラミングとライティングは芸術ですが、種類はまったく異なります。書くことは、他の人にあなたの言っていることを理解させ、それに応じて行動させる方法に関するものですが、プログラミングはコンピューターがユーザーの要件を理解しないようにします(少なくとも現在のIMOから100年以内に)。プログラミングは、要件をプログラミング言語に翻訳する方法に関するものであり、そのため、ライティングスキルはそれほど関連していません。


1
プログラマーの仕事の一部は、コンピューターだけでなく他の人間もコードを読むことができるように、コード(およびコメント)で明確に自分自身を表現することです。これらのスキルが相互に関連していることは理にかなっています(ただし、証明されていません)。
n1ckp

0

絶対違う!

優れた作家は優れた作家に過ぎません。優れたライターに、データベースの概念を技術に詳しくない人に説明してもらってください。あなたは何を得ると思いますか...?

良い作家です。優れたプログラマーは優れたコードを記述します。

  • 開発されてから6か月後に他の人が読むことができるコード。
  • システムに障害が発生してデバッグが行われている午前2時の時点で意味のあるコード。
  • 理解しやすく、簡単に変更できるため、他の誰もが借りたいコード
  • 24時間365日動作するコード

私は続けて行くつもりでしたが、私はむしろ他の投稿に答えるために時間を費やしたいと思います。私はこの問題について私がどこに立っているか知っていると思います。


1
箇条書き1、2、および3では、優れたプログラマーであることに加えて、優れたライターであることが必要だと思います。本質的に、あなたは良いライティングスキルを暗黙の特性として考えています。
マムタD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.