私はPeter SeibelのCoders at Workを読んでいますが、書くことができないプログラマーは一般的に貧しいプログラマーになるとよく言われています-ダグラス・クロックフォード、ジョシュア・ブロック、ジョー・アームストロング、ダイクストラ(そして私は本の半分しか読んでいない)。
これについてどう思いますか?英語などの自然言語で書くことで自分を表現できないことは、良いコードを書くことの妨げですか?
私はPeter SeibelのCoders at Workを読んでいますが、書くことができないプログラマーは一般的に貧しいプログラマーになるとよく言われています-ダグラス・クロックフォード、ジョシュア・ブロック、ジョー・アームストロング、ダイクストラ(そして私は本の半分しか読んでいない)。
これについてどう思いますか?英語などの自然言語で書くことで自分を表現できないことは、良いコードを書くことの妨げですか?
回答:
プログラミングには「コードを書く」だけではありません。プログラマーとして成功するためには、コミュニケーションが必要です。顧客とつながり、ニーズを理解し、技術分野に翻訳し、コードで表現し、その結果を顧客に説明できるようになること。
書面で明確に自分自身を表現するのに苦労しているプログラマーは、一般にうまくコミュニケーションをとることができないかもしれませんが、言語と文章をよく理解しているプログラマーは、一般にそれらのスキルを書くコードに翻訳できます。
うまく書くことができず、したがって、コミュニケーションがうまくいくと、非常に優れたプログラマーになることができなくなると思います。
(37signalsの)Jason FriedとDavid Heinemeier Hanssonが彼らの本Reworkで言うように:
あなたが少数の人々の間でポジションを埋めることを決めようとしているなら、最高の作家を雇ってください。
優れた作家であることは、書くこと以上のものです。明確な文章は明確な思考のサインです。偉大な作家はコミュニケーションの方法を知っています。
コードモンキーの大きな障害ではないと思います(母国語で自己を表現するための一定の基本的なレベル/能力を想定しています)。しかし、あなた(開発者)が非技術的な聴衆に対して設計/アーチ/計画をより明確に表現し始めなければならないので、それはすぐに大きな障害になると思います。私の経験では、自分とほぼ同じ技術レベルにある他の人に何かを伝えることは私のほうが簡単で、クライアントやマネージャーに何かを明確にするよりもかなり自然な言語スキルが必要です。同様に、技術的な対象者であっても、主題の具体性が低下するため、それについて書いている(またはそのことについて話している)人はかなり明確にならなければなりません。
それは、「良いコード」の意味に依存します。
正常に機能するコードを意味する場合、人間と通信できることとコンピューターと通信できることの間にはほとんど関係がありません。
動作し、保守可能で、コードの意図を明確に表現するコードを意味する場合、良いコードを書くことと人間専用の言語で書くこととの間には絶対的な関係があります。
理解しやすいコードを書くための優れたライターになるために必要なさまざまなスキルをすべて必要とするわけではありませんが、両方とも人間によって読み取られるため、そこに存在しなければならない要素がいくつかあります。いくつかの点で、コードで意図を説明する必要があるため、良いコードを書くことはさらに難しくなりますが、コンピューターで実行されている間はパフォーマンスが悪いコンストラクトを使用しません。
実は、コーディングはコミュニケーションスキルでもあります。埋め込まれたミューズの電子ニュースレターでジャック・ガンスルは最近ダグ・アボットを引用しました:
あなたがプログラムを書くとき、あなたが本当にしていることは、あなたがコンピュータに何をして欲しいかを他の人間に伝えることです。プログラミングは、他の形式の執筆と同様に、コミュニケーションに関するものです。そのため、コンピュータサイエンスの学生は良い文章に触れる必要があります。しかし、コンピューターサイエンスには貴重なものがほとんどないため、基本的な創造的なライティングクラスが必要なだけかもしれません。
散文の書き方を知らないプログラマーは、おそらくコードの書き方も知らないでしょう。
この興味深い記事の詳細:
これはすべて逸話ですが、次のとおりです。
私がこれまで働いた中で最高の「ロックスター」プログラマーの一人は、非常に貧しい作家でした。そして、私が「非常に貧しい」と言うとき、私は彼が非常に酔っていたか、ほとんど読み書きができないかのように出会ったタイプを意味します-あなたが彼のメールを見たとき。タイプミス、句読点の欠如、アイデアを明確に表現することの難しさ、および一般的なスペルミス(「彼ら/彼ら」など)はすべてあふれています-ほとんど耐え難いほどです。彼のメールのいくつかを読む-私は彼がクライアントに直接メールを送るのを心配していただろう(その会社でそれをする必要はなかった)-それは会社が悪く見えるからだ!
それでも、彼はスーパースターのプログラマーでした。平均より桁違いに生産的でスイッチオン。
どうしたらいいのかわかりません。私はさまざまな人々とこれを数回見ました。座って物事を書くコツを持たない人もいます。そして多くの場合、他の分野の彼らの才能には影響を与えないようです(プログラミングなど、比較的似ていると思われる「知識作業」の才能ですら)。あなたはそれが接続されると思うだろうが、私はそうではなかったこのようないくつかの生きている例を見てきた。彼らが「ルールを証明する例外」である可能性は十分にあると思いますが、おそらくプログラマーではない悪い作家や、そうでない良い作家には気付かないと思います。
彼らがうまく書くことができない場合、彼らはどのように彼らが良いプログラマーであるとあなたに納得させることができますか?
システム構成やアイデアを正確に表現できない人は、それを書くことでコードを書くことができますか?
プログラマーが話し言葉と書き言葉の両方でうまくコミュニケーションできることは非常に重要だと思います。アイデアを言葉に翻訳する能力は、コードを書くための前提条件です。
コンピューターと通信する場合でも、人と通信する場合でも、文法の規則に従って意味をなす順序に単語を並べる必要があります。会話の反対側が単語を理解できるように、単語を正しく発音または綴る必要があります。コンピューターは構文エラーをスローし、同僚は「何?」と言います。または、軽率なせせらぎまたはさらに悪いと言われているもの、刺激的な気晴らしを割り引く。
私は候補者を採用することを強く勧めています。とにかく私たちの上司に雇われた1人の人は、明るく輝く新しい技術やおもちゃに目を奪われたため、時間通りに簡単な任務を果たせないことがわかりました。
ですから、はい、プログラマーがうまくコミュニケーションできることが重要です。彼らが人間と効果的にコミュニケーションできない場合、彼らはコンピュータでそれを行うことができません。
貧しい作家は貧しい作家を作り、それ以外は何もしません。ライティングスキルが低いということは、まったくコミュニケーションが取れないということではありませんが、書くことも表現することもできません。もちろん、会社などでコミュニケーションスキルは重要かつ重要であると誰もが言うことができますが、それはコミュニケーションスキルの低いプログラマーが仕事をうまくできないという意味ではありません。プログラミングとライティングは芸術ですが、種類はまったく異なります。書くことは、他の人にあなたの言っていることを理解させ、それに応じて行動させる方法に関するものですが、プログラミングはコンピューターがユーザーの要件を理解しないようにします(少なくとも現在のIMOから100年以内に)。プログラミングは、要件をプログラミング言語に翻訳する方法に関するものであり、そのため、ライティングスキルはそれほど関連していません。
絶対違う!
優れた作家は優れた作家に過ぎません。優れたライターに、データベースの概念を技術に詳しくない人に説明してもらってください。あなたは何を得ると思いますか...?
良い作家です。優れたプログラマーは優れたコードを記述します。
私は続けて行くつもりでしたが、私はむしろ他の投稿に答えるために時間を費やしたいと思います。私はこの問題について私がどこに立っているか知っていると思います。