そのような無能さは、他の工学分野では決して逃げられなかったでしょう。いかなる状況においても、平均的なソフトウェアシステムと同じくらい多くのバグがあるブリッジを受け入れることはありません。なぜソフトウェア設計の状況はそれほど悲惨なのですか?なぜ世界にこんなにたくさんのイチジクプログラムがあるのですか?
この理由を理解するには、まず、開発者のスキルが、特定の問題を解決するために作成するソフトウェアの有用性とどのように関連しているかを理解する必要があります。
最初のカテゴリーには、本質的に無能な「開発者」がいます。このカテゴリにはさまざまなスキルの習熟度がありますが、最終製品が機能的に役に立たないという点で、このカテゴリのすべての人が似ています。コンピュータはこの点で冷酷です-アプリケーションをコンパイルする方法がわからない場合は、まったく記述しない方がよいでしょう。アプリケーションの基本的な機能を作成する方法がわからない場合は、誰もそれを使用しません。特定のスキルしきい値を下回ると、使用可能なソフトウェアを作成できなくなります。このカテゴリのほとんどの「開発者」は、暇なときにコードを試し、プロのソフトウェアを作成することはめったにありません。
ただし、しきい値を超えると、状況は劇的に変化します。グラフの下部には、実行可能な最小限のソフトウェアシステムを作成できる開発者がいます。そして、これらの開発者が向上すれば、彼らのソフトウェアの有用性も急速に高まります。 「動作」したものの、速度が遅く、バグが多く、安全でなく、混乱を招くアプリケーションは、徐々にバグが少なくなり、パフォーマンスが向上し、安全になり、理解しやすくなりました。他の2つのカテゴリとは異なり、このカテゴリの開発者がスキルを開発すると、作成するソフトウェアが大幅に向上します。
最後に、開発者が特定のスキルしきい値に達すると、それを超えます。
そして3番目のカテゴリーに分類されます。誰もが(解決しようとしているタスクに関して)非常に高いレベルの能力に達しており、それ以上の個人的な成長が最終製品に与える影響は最小限であるというカテゴリーでは。たとえば、Googleからの任意のランダムに選択されたエンジニアは、CRUDアプリケーションと同様に作成することができ ジェフ・ディーンを。
理想的な世界では、第1および第2のカテゴリーの開発者は、学生または若い専門家だけです。そして、すべてのプロフェッショナルソフトウェアシステムは、主に3番目のカテゴリの開発者によって作成されます。問題を解決し、理論上の理想に非常に近いソリューションを作成するために必要なすべてのスキルを完全に習得した開発者。このような驚くべき世界では、私たちの周りのすべてのソフトウェアはほぼ同じ高レベルの品質であり、最適なパフォーマンスでセキュリティホールなしで期待どおりに動作します。この世界では、社会は煩わしさではなく、喜びをもってすべてのソフトウェアに反応します。
しかし、私たちとこのユートピアの間には2つの問題があります。
まず、3番目のカテゴリの開発者の数は2番目のカテゴリに比べて非常に少ないです。プログラミングは「習得は簡単ですが、習得するのは難しい」です。何百万人もの人々が機能するスクリプトを書くことができますが、ソフトウェア設計の技術を習得した人はほとんどいません。さらに、ソフトウェア開発業界に参入する上での障害はありません。プログラマーにとって、米国医師会や国際法曹協会に類似したものはありません。有能な専門家の数と比較して、初期および中級の能力を持つ人々がはるかに多いことは驚くべきことではありません。
第二に、開発者の需要は信じられないほどです。ソフトウェア開発者は、事実上すべての業界に多大な貢献をする機会があります。機会が厳しく制限されている天文学のようなよりニッチな職業と比較して、ソフトウェア開発は才能がひどく不足している分野です。つまり、主な問題は、才能のあるソフトウェア開発者を見つけることであり、彼らに適した仕事を見つけることではありません。
これら2つの問題を組み合わせると、専門の開発者を雇いたいほとんどの企業にはそうする機会がないことがわかります。雇うのに十分な優秀な人材が不足しており、市場に出ている人々は、FANGレベルの企業や急成長している新興企業から比類のないほど良い取引を受け取ることがよくあります。
したがって、他のすべての企業は、このような状況で最適な選択を行います。彼らは2番目のカテゴリーから開発者を雇います。一般的に「十分に良い」と言える開発者。それらのアプリケーションにはバグやセキュリティの脆弱性があり、高負荷を処理できません。しかし、少なくともこれらの人々は「機能する」何かを作成することができます。現状よりも便利なもの。最小限の重要な分析で本番環境に展開できるもの。
この状況は全世界とすべての専門家にとって自然なことであると誤解される可能性があります。しかし、実際にはそうではありません。
真面目な研修が必要なポジションはたくさんありますが、「習得しやすい」に分類されます。これらは、タクシーの運転手、建設作業員、バーテンダーなどの職業です。そのような職業では、高い能力のカテゴリーに達した労働者の割合が高く、スキルをさらに向上させても実質的に何の利益ももたらされません。
機会が非常に限られているため、雇用主が優秀な専門家だけを雇うことを好む職業もたくさんあります。たとえば、これはピアニストに適用されます。アマチュアピアニストは多くの家族に見られますが、才能のあるピアニストの数が予定されているコンサートの数をはるかに超えているため、コンサートホールで演奏することはありません。
最後に、習得するのが難しく、多くの機会がある職業がありますが、参入障壁があります。たとえば、医療行為。オバマケア以前の世界には、健康保険をかける余裕がなく、まったくないのではなく「少なくともいくつかの」医療を喜んで選択する人がたくさんいました (これを行う価値があるかどうかは別の難しい質問です)..。ただし、厳格な規則により、高い能力を証明した者のみが医療サービスを提供することができます。状況は、橋や超高層ビルの建設、医療機器の製造など、強力な規制の精査の対象となる多くの工学分野でも同様です。
ソフトウェア開発は、上記のすべての奇妙な交差点になっています。学ぶのは簡単なので、世界中に「十分に優れた」開発者がたくさんいます。非常に便利なソフトウェアソリューションを作成しているが、バグやセキュリティの脆弱性に満ちている開発者。同時に、この職業を高いレベルで習得することは難しいため、そのような落とし穴を回避できる開発者を見つけることははるかに困難です。
ソフトウェア業界は機会が非常に豊富であるため、ほとんどの企業は優秀な専門家を雇うことはほとんど不可能だと感じています。それは非常に豊富な機会があるので、世界中に新人開発者の軍団がありますが、彼らの一人一人のための仕事があります。
最後に、ソフトウェア開発では、入力制御はありません。誰でもコーディングトレーニングプログラムを受講し、いくつかのオンラインコーディングコースを受講して、翌日Upworkでサービスの提供を開始できます。そして、彼らの労働の産物は、規制管理なしですぐに生産に展開することができます。
すべてをまとめると、なぜ世界にこれほど多くの不完全なソフトウェアがあるのかを理解できます。ソフトウェアはバグやセキュリティホールを伴って世界を食い尽くしています。
: , , . , .
, , . CEO, «» — , .