私がこのようなことを言うとすぐに、人々はたくさんのコメントをし、あなたは間違っている、間違っている、完全に間違っていると批判するでしょう。 優れたプログラマーにはコミュニケーション スキルが必要であり、他の人と協力して作業する能力も必要です。チームのメンバーはあなただけではありません。実際、人々はこう言うでしょう。企業文化により適した人材を見つけるために、技術的な要件については妥協したほうがよいでしょう。
これはもっと適切に言ったほうがいいかもしれません。技術的に優れていて、企業文化に適応できる人が見つからない場合は、彼が見つかるまで待ちます。
このような贅沢をあえてする企業はめったにありません。Google のような企業でさえ、常に「プログラマーの採用に必死」の状態にありました。待つことにした場合、各プログラマーの採用まで長い時間待たなければならず、プログラマー不足による経営破綻は目前に迫っていることが予想されます。
では、どちらが優れているのでしょうか?
善良で一生懸命働く、平均的または劣ったプログラマーについて考えてみましょう。 彼らのプログラムは不十分に書かれています。彼らのプログラムは単に彼らが望むように動作しません。また、たとえ動作したとしても、保守が困難な悪いプログラムです。彼らは、複雑な問題を解決することはおろか、基本的な機能を探求することにも苦労しています。しかし、彼らはチームについていくことができており、プロジェクトの進捗状況は毎日更新されます。彼らが毎日席で奮闘しているのがわかります。すべて順調で、チームは順調に進んでいるように見えるので、マネージャーも満足しているでしょう。
リリース日を延期しなければならず、製品にバグが多すぎて使用できない場合、人々はソフトウェアの作成が本質的に難しいと嘆くでしょう。そのため、問題を解決するためにさらに多くの愛想の良い凡庸なプログラマーが投入されます。 誰もがこの問題の結果を知っていると思います。
プログラマーにとって、親切心で解決できることはそう多くはありません。フレンドリーな平凡なプログラマは、その愛想とわずかな技術知識を利用して、ビジネス アナリスト、技術営業員、またはその他の役職になれる可能性があります。彼らはこの種の仕事に非常に満足するでしょうが、これはすべてお茶会の仕事であり、良いソフトウェアを作成する効果的な方法を見つけるものではありません。
もう 1 つの選択肢は、プログラマーを見つけることです。彼は良いプログラムを作ることができますが、おそらく他の人と仲良くするのが苦手であったり、いつも遅刻したりすることもあります。彼は設計どおりに動作するソフトウェアを開発でき、複雑な問題を単純な問題に抽象化することができます。ソフトウェアは使いやすく、保守しやすく、必要に応じていつでも変更できます。
世界はとても現実的で、私たちが失敗する方法はたくさんありますが、少なくとも私たちにはチャンスがあります。人は良い印象を与えることができます。チームはうまく構築できます。従業員はあなたのために長時間働いてくれるので、それは良いことです。多くのビジネスは計画どおりに機能しませんでしたが、それでも機能し、悪くはありませんでした。しかし、優れたソフトウェアは凡庸なプログラマーによって実装されることはありません。 .
証明はコードにあります。 それでおしまい。