私の経験から言えば、プログラマーの「素晴らしさ」は、年齢、学歴、財政状態とはまったく関係ないと言えます。 これは、あなたの行動の仕方、より詳細にはあなたの考え方によるものです。 プログラマーの間で私が尊敬している習慣の永続的なセットに気づきました。 選択したプログラミング言語の十分な知識、データ構造とアルゴリズムの深い理解、長年の経験、コミュニケーション方法、自分自身の管理方法、開発へのアプローチ方法など、すべてが驚くべきレベルのスキルを物語っています。
もちろん、優れたプログラマーであることははるかに多く、これらのプラクティスの有無だけでプログラマーを評価することはしません。 しかし、私はそれを見ると知恵を認識し、プログラマーがこれらの特性を持っているのを見ると、「この人は彼が何をしているか本当に知っている」と思います。
彼らは独自の研究を行います。
または「7回測定して、1回切ります」。 または「グーグルイット」。あなたが言うことは何でも、あなたが直面しているプログラミングの問題のほとんどは、すでに何らかの形で解決されています-エクセルシアテスは、太陽の下では何も新しいことはないと言いました。 github上のライブラリの形式、ブログエントリ、または経験者との連絡のみ。 優れたプログラマーは、問題を解決しようとする前にまず何を探すべきかを知っています。
優秀なプログラマーでさえ急いで決断を下しました。しかし、私が一緒に働いた最悪のプログラマーは他のプログラマーと相談することはありません。 そして、残念ながら、彼らは後で自分の過ちの代価を払います。
彼らはエラーメッセージを読みます(そしてそれらに応答します)
これには、呼び出しスタックの操作が含まれます。 はい、それは難しくてlyいです-しかし、あなたがそれをする準備ができていないなら、あなたはどのように問題が何であるかを理解する予定ですか? 私が知っている最も効果的なプログラマーは、問題の根底に到達することを恐れていません。最も効果の低いものは、エラーがあったことを確認しますが、エラーメッセージを読むことさえ気にしません。 (これはおもしろそうに聞こえますが、あなたがどれだけ頻繁にこれに対処しなければならないかに驚くでしょう。)
さらに一歩進んで、優れたプログラマーは問題を見て、解決する必要性を感じていると言えます。 エラーメッセージを読むことは、彼らにとっての始まりに過ぎません。彼らは、問題を深く掘り下げて、それが何であり、何が悪かったのかを突き止めようとします。 彼らは責任を移すことに興味がなく、解決策を見つけたいと思っています。 彼らは本当に責任があります。
彼らはソースに行きます
ドキュメンテーション、テスト、人:これらすべてが嘘です。 もちろん、意図的ではありません。 しかし、何かがどのように機能するかを正確に知りたい場合は、コードを調べる必要があります。これがあなたと「一緒に」いるプログラミング言語でないなら、恐れないでください-あなたが主にRubyで書いており、Cライブラリの1つにエラーがあると仮定するなら、このライブラリを開いて勉強してください。 はい、何も得られない場合があります。 しかし、誰が知っていますか? 少なくとも何かをすることは、何もしないことよりもましです!
ソースにアクセスできない場合、残念ながら、それは難しくなりますが、原則は有効です。 貧しいプログラマーはソースコードの研究にほとんど関心がなく、その結果、問題は研究をする準備ができている人々よりも人生をずっと難しくします。
彼らはただやる
優れたプログラマーは行動する準備ができています。 制御が難しい機能があります。問題を特定したり、新しい機能のリクエストを見つけたりすると、すぐにソリューションを実装します。 しかし、問題に対する本能的な反応は、すぐに解決することです。これは面倒なこともありますが、彼らの熱意は仕事の質の高さの重要な部分です。 一部の人は、問題が自然に消えるのを待っている間、問題を解決し始めています。
簡単に言えば(そしておそらくあまりにも明白なこと):誰かが興奮して問題にしがみついて作業を開始するのを見たなら、おそらくあなたはすでに優秀なプログラマーを持っているでしょう。
彼らは危機を避ける
悪いプログラマーには共通の特徴があります。彼らは人為的な危機から別の危機へとジャンプする傾向があり、最初の理由を本当に理解することはありません。 彼らは責任をプログラムのサードパーティの部分に移し、何がうまくいくかをデバッグするのに何時間も費やします。 彼らは感情を自分自身よりも優先し、完全な詳細な分析ではなく、直感を信じます。急いで問題を突破する(または各問題をグローバルな大惨事と見なす)場合、間違いを犯しているか、主要な問題を解決していないことは間違いありません。 優れたプログラマーは、実際の災害に直面した場合でも、何がうまくいかなかったかを理解するのに時間をかけます。 さらに、彼らは通常の問題を、取り組む必要のあるタスクと見なしています。 したがって、彼らはほとんどの問題をより正確に解決し、組織内の雰囲気を加熱することなくこれを行います。
彼らはうまく通信します
結局のところ、プログラミングはコミュニケーションの一形態です。 簡潔で表現力豊かにあなたの考えを表現する能力は、散文を書くことと同じくらい重要です。できません。これはコードにも適用されます。 もちろん、1行の括弧と中括弧、1文字の関数を書くことができますが、なぜですか? 誰もこれを理解していない場合、そうすることのポイントは何ですか? 優れたプログラマーは、自分がいる環境で自分の考えを適切に伝えるのに時間をかけます。
彼らは情熱的です
これは優れたプログラマーの最も重要な側面であるべきだと思います(そしておそらくこの部分はコンピューターサイエンスだけに当てはまるわけではありません)。仕事だけでなく、趣味、興味、そして賞賛でもあるのであれば、自分がしていることを本当に気にかけているなら、その分野の誰よりも大きな利点があります。 優秀なプログラマーは常にプログラムを作成します。 彼らの同僚は、仕事だけでなく、一般的なプログラミングの分野でも、1日8時間働きます。 彼らには、外部のプログラミングプロジェクトや、コミュニティへの貢献に大きな関心はありません。 彼らは、それらがどのように機能するかを見るためだけに、新しいトリッキーなメソッドやクレイジーなプログラミング言語を試しません。
週末の趣味プロジェクトを自分で作成し、毎日使用するユーティリティの作成に携わり、新しく興味深いものに魅了されているプログラマを見ると、驚くべき人がいることを確信しています。 最終的に、優れたプログラマーは、お金を稼ぐ方法としてだけでなく、人生をより良くする機会としても自分の職業を選択します。 私はそれが彼らが誰であるか良いプログラマーになると思います。 彼らにとって、コーディングは世界を変える方法です。 そして私はそれを尊敬と賞賛に値すると思います。