まず、LinkedIn で私が交わした短いやりとりです。
私> ひどいコードを書いたり、ひどい設計を作成した無知なエンジニアがたくさんいます。
Raja> なぜこれがほぼすべての組織で起こるのか不思議です。そしてこれは、最高のチーム、プロセス、ツールなどを持っているという組織の主張にもかかわらずです。
ああ…私は「なぜ」という質問が大好きです。それでは、詳しく見ていきましょう。
実際彼らは悪くない
まず、これらのひどい結果の多くは、エンジニア自体が悪かったからではないと私は信じています。
それほど上級ではないエンジニアを採用し、弱いマネジメントと弱い技術的リーダーシップを追加し、プレッシャーを強めるだけで、相手には大量のクソコードが届くことになるでしょう。
ところで。私が説明したことは、悪い結果をもたらす方法の 1 つにすぎません。他にも方法はあります。組織内で知識を共有しない文化、メンターシップの欠如、要件の絶え間ない大幅な変更による不明確な方向性などです。
「ゴミを入れたらゴミが出てくる」というプログラミングの言葉をご存知ですか?
つまり、実際には、人、プロセス、文化などの複数の入力と 1 つの出力 (ソフトウェア) があるということです。
優秀な (または大丈夫な) 人材がいるかもしれませんが、残りの入力がゴミであれば、必ず別の端でゴミを受け取ることになります。
補足: 人々が善良であれば、プロセスや文化などを修正できる/修正すべきであると主張することもできます。それを根本から修正しようとするのは非常に苦痛であり、うまくいくことはほとんどありません。
インピーダンスの不整合
これは、「ある会社のひどいエンジニアが、別の会社では優れたアーキテクトである」という記事で書いたもう 1 つのトピックです。
場合によっては、会社にうまく馴染めない人もいます。その人は良い人かもしれない。会社は良いかもしれない。ただし、異なる波長で動作し、異なるものに価値を置き、異なる領域を重視する場合があります。
そして時には、ある(それなりに良い)環境では全くダメだった人が、別の環境ではどのように活躍するのかを見ると驚くことがあります。
金金金
OK…OK…最後の 2 つのセクションでは、私は優しくてソフトでした。さあ、大きな武器を引き出す時が来ました。
私たちは世界中のソフトウェア エンジニアの数が 3,000 万人に急速に近づいています。2000 年には約 500 万、1980 年には 100 万程度でした。(ちなみに、これらはいくつかの情報源から集めた非常に大まかな数字ですので、話半分に聞いてください)。1960 年に遡ると、一種のソフトウェア エンジニアリング (ハードウェア エンジニアリングと膨大な組み合わせ) を行っている人の数は数万人でした。
ところで。これらの数字はすべて純粋にソフトウェア エンジニアを数えたものです。これに製品管理、ソフトウェア エンジニアリング管理、IT、運用などを加えると、その数字と成長はさらに驚くべきものになるでしょう。
60年という期間は、人間にとっては長い期間に思えるかもしれません。しかし、社会から見ればそれはあっという間です。そしてこの 60 年間で、業界には 3,000 万人のエンジニアがほとんどいなかった状態になりました。ああ…そして、時価総額上位 10 社のうち 5 社がソフトウェア企業です (ハードウェアも混在しています)。
ダメなソフトウェアエンジニアの話に戻ります。
ソフトウェア業界は、動くもの、「Hello world!」と入力できるものすべてをその軌道に吸い込みました。ソフトウェアに飛び交う巨額の金に釣られた人は山ほどいる(ちなみに、私はその人たちを責めるつもりはない。もし明日、宇宙生物学の分野での給料が年間500万ドルになるとしたら、私は真剣に宇宙生物学についてもっと学び始めようと思うだろう)地球外生命体:))。
問題は、ソフトウェアに興味を持った、あるいはまったく興味のない多くの人々が、(給料が入り続ける限り)もっと学ぶことや改善することに興味がないことです。
成長痛
そして、ソフトウェア業界の爆発的な成長の話題は続いています。
残念なことに、最終的にソフトウェアに携わることになった人の多くは、それに対する十分な準備ができていませんでした。追いつく企業もいるでしょうが、多くはかろうじて立ち往生し、問題の跡を残して企業を渡り歩くことになるでしょう。
この急速な成長によって引き起こされたもう一つのことがあります。
会社が急速に成長すると、通常、エンジニアリングにとっては非常に有害な結果になります。優秀で、ベスト プラクティスを共有、維持、強制できるコア人材が十分にいない場合、何でもできるところまですぐに到達することになります。そしてあらゆるものの品質は急速に低下します。
結局、業界全体でも同じことが起こりました。多くのベストプラクティスがまだ十分に採用されていないにもかかわらず、成長はあまりにも急速に起こりました。実際、採用されたベストプラクティスの多くは合意さえされていないのが地獄です。
その結果、誰もが (本当にあなたも含めて) 同じ車輪の再発明を繰り返し、この業界に参入する人のために大学 1 年目に教えるべきことを発見するためだけにつまずいたり立ち上がったりすることがよくあります。
業界の不均一性
Voyager 1 用の作成ソフトウェアと、趣味のプロジェクトのデータをクリーンアップするための使い捨てスクリプトには、どの程度の共通点がありますか?
1 つ目 (Voyager) は、数十年にわたって存続し、非常に限られたハードウェアで動作する必要があり、文書化し、レビューし、再レビューし、さらに再レビューする必要があります。
もう 1 つは、15 分でまとめられ、1 回実行されて捨てられる、くだらないものである可能性があります。そして実際には、非常に頑丈なセットアップで実行することができますが、文書化やレビューなどは行われません。
ソフトウェアは 30k ビューからは同じに見えます。しかし、実際のところ、テクノロジーはどう考えても均一な業界ではありません。
ソフトウェア市場のある分野で得られた貴重な教訓が、別の分野では有害になる可能性があります。その結果、隣接する業界に移ったエンジニアも誤った教訓をもたらす可能性があります。
まとめ
まず、悪い結果の最大の原因は悪いエンジニアではなく、むしろ悪い会社だと思います。
しかし、悪い企業のすぐ近くには、改善にはまったく興味がなく(そして誠実な仕事に取り組む)、ただ高額な給料のためだけにソフトウェアに入社した人々がいます。
PS モチベーションの問題があるというヴィヴェクさんからの追加点も得ました。お金のためだけにソフトウェア業界に参入した多くの人は、ソフトウェア市場での給与が安くても喜んで享受しているのではないかと思います。そして、より多くのことを学ぶために(それを面白くするのに十分な大きな昇給を得るために)多くの時間とエネルギーを投資するのは非常に面倒である可能性があります。
出典 : https://medium.com/@victor.ronin/why-so-many-software-engineers-are-that-bad-9ab5f29ee47a