AIがソフトウェアエンジニアリングの中間層を消し去る
AI is removing the middle class of software engineering
AIにより、弱いエンジニアリング文化のプロジェクトはより速く失敗するようになった。実装コストが下がり、誰もが大量のコードを生成できる一方で、それを理解・評価できる人材の価値は高まる。悪いエンジニアは採用コストが高くなり、優れたエンジニアへの報酬はさらに集中する。ソフトウェア開発だけでなく、知識労働全般に同様の影響が及ぶと筆者は予測する。
実装は安くなった。あなたは良い判断を下すために報酬をもらっている。
HNでの議論
937- Syntaf
> 悪いエンジニアは常に負債だった
この記事のこの部分は身に沁みます。AIを使えば、「悪い」エンジニアはその「悪い」エンジニアリングを組織全体に10倍に増幅させることができます。私にとって最もひどいケースは、職人技への興味を失った長年在籍しているエンジニアで、出荷するのに十分な能力はあるが、出荷するものを「良い」ものにするための興味はないという危険な組み合わせを生み出しています。
私は今でも「ゴミを入れればゴミが出る」という考えを固く信じています。AIは、あなたがそのために用意した抽象化と契約と同じくらいにしか良くありません。AIが生成したコードが根本的に悪いという考えには賛同しません。ただ、今日の人々は、エージェントをうまく操縦して良いコードを書かせるための適切なスキルを欠いているだけです。
今年の初めに、私は会社向けに、アーキテクチャとデザインの未来が私たちのキャリアにとって何を意味するかについての講演をまとめました。とても誇りに思っており、このトピックについて皆さんが共有したい考えがあれば、ここで共有します: https://youtu.be/SIZrt9Rt05Q?si=W57eirniWmoSFeBu
- scronkfinkle
私はこれを「スタックオーバーフローエンジニアの自動化」と考える方がしっくりきます。エンタープライズソフトウェアでは、常に、書かなければならない大量のコードが交渉の余地なく存在してきました。伝統的に、これはシニアが難しい思考を行い、それをJiraチケットに落とし込み、そのチケットを実際にコードを書き、途中でグーグルにすべてのハードルを打ち込むエンジニアに引き渡すことでオフロードされてきました。この引き渡しはもはや不要です。同じシニアがエージェントを起動して、実装を処理させることができるからです。
これを「自然は癒されている」シナリオと呼ぶ人もいるのを聞いたことがあります。高い給料だけを目的にしていて、自分の仕事について批判的に考えることを気にしなかった人にとっては、これは苦痛になるでしょう。なぜなら、以前は手動だったプロセスが自動化されたからです。価値があると見なされるために必要な最低ラインは引き上げられました。
- eshack94
このブログ投稿は、批判的思考や意思決定をLLMに委ねることを決してしてはならないことの重要性を示しています。また、学習を近道してはいけないことも示しています。学習は困難ですが、適切に学ぶことで、何が起こっているかを理解し、エージェントが行おうとしている変更が、将来の手に負えない技術負債を生み出すことなく、プロジェクトの目標に最も適した変更であるかどうかについて、適切な質問をすることができます。
個人的には(他の人の意見も聞きたいですが)、仕事や開発タスクでLLMを使用するとき、私は決して「フルオート」モードを使用しませんし、理解できないものを手動で承認することもありません。エージェントが何かをしようとしているが理解できない場合、私はそのことについてもっと学び、自分自身を教育するためのサイドクエストに出ます。これには余分な時間がかかりますが、それが正しいことだと思います。そうすることで、盲目的に飛び込んで最善を願うのではなく、より情報に基づいた立場から少なくとも承認/拒否/方向転換ができるからです。
著者が議論していることに加えて、スキルの萎縮、自己満足による停滞(つまり、「エージェントができるならなぜ成長して学ぶ必要があるのか」という考え方)、認知的怠惰は、LLMに過度に依存することに伴う追加のリスクだと思います。人間は考えるように作られています。LLMはツールです。
- rayiner
テクノロジーは何十年もこれをやってきました。私たちの「K字型経済」の議論の多くは、上位中流階級の二極化が、下方移動する教育を受けた若者を生み出していることについてだと思います。私の妻の近親者で大学を卒業した人はいません。彼女と彼女のいとこたちは皆、間違いなく両親より裕福です。私の義父はスープ工場でフォークリフトを運転していました。私の義理の妹は看護師になるために勉強しています。それは大きなステップアップです。しかし、「ホワイトカラー」中流階級は非常に勝者総取りになっています。私の分野の例を挙げると、あなたの父親が地域の法律事務所のパートナーだった場合、その道はおそらくあなたには開かれていません。テクノロジーは統合とスケーリングを可能にしたので、米国のすべての都市に弁護士がいて法的業務を処理する必要はなくなりました。ウォール街のクライアントにサービスを提供する全国規模の法律事務所の弁護士はかつてないほど稼いでいますが、その下の層はかなり急落しています。同じことが、全国の中小企業がAmazonなどと競争することで起こっています。それは小ブルジョアジーに大きな影響を与えました。
もちろん、これは経済的に効率的です。地元の中小企業の経営者の子供たちが平均より良い生活を送れるようにするために、Amazonの当日配達をあきらめる人はいません。
- declan_roberts
AIとH-1Bで世界と競争することの間で、エントリーレベルまたはミッドレベルのソフトウェアエンジニアリングの仕事を得るのはかつてないほど難しくなっています。
つまり、シニアエンジニアへのパイプラインは完全に壊れています。
- aabdi
> すべてのサービスとすべてのデータベースを理解することを期待されたことは一度もなかったでしょう。しかし、少なくとも誰かが理解していて、あなたに説明してくれました。
私はこれのほとんどに同意しますが、これには同意しません。ここにはバラ色の眼鏡があるか、私が長い間不運だったかのどちらかだと思います。
AI以前の生活も悪かったです。誰もあなたに何も説明してくれませんでした!自分で理解する必要がありました。人々はすでに去っているか、他のことで忙しかったです。
誰も(私の基準では)テストを書きませんでした。運用作業のほとんどはスキップされました。ドキュメントはただ存在しませんでした。誰も適切にlintしませんでした。ただひどかった、もう。
- whywhywhywhy
>AIは、エンジニアリング文化が弱いプロジェクトをはるかに速く失敗させます。
>かつては、人々が座ってどうやって何かをするか話し合う時代がありました。今では、エージェントに数時間プロンプトを送ってPRを開くだけです。
>この働き方の最も悲劇的な側面は、訓練されていない目には、それが機能しているように見えることです。
>ブランチをプルしてテストすると、おそらくある程度機能する何かが得られるでしょう。それで彼らはどうするのでしょうか?彼らは続けます。何度も何度も。プロジェクトが誰も何も理解できない地点に達するまで。
これは「より速く失敗する」の反対ではありませんか?最初のいくつかのハードルを乗り越えられずに諦めていたかもしれない人々が、深く入り込んで、その後、プロンプトでどんな混乱からも抜け出せるとの誤った希望を持ち、その結果、ますます深いスパゲッティコードになることを可能にします。
- xvilka
今、問題はこれです - 誰も生まれながらにして優れたエンジニアやプログラマーや科学者ではありませんでした。それはしばしば、眠れない夜、毎日の努力、何百万回の失敗、途中での愚かな間違いの長い道のりであり、時には「経験」と呼ばれる通常の苦しみのパッケージでした。次世代の優れたエンジニアや最高のエンジニアへの道は今どこにあるのでしょうか?同じことをするための機会や予算はもうないでしょう。
- level87
長い時間をかけて何かを学んできたのに、その何かが突然誰にでもアクセス可能になるのは難しいことです。かつて希少で価値があったものが、今や豊富で安価になっています。
まだ手作業で物事を行う機械工はいますが、実際の生産やプロトタイピングでは、ほとんどの人が5軸CNCマシンを使用するでしょう。それにはまだある種のオペレーターが必要ですが、かつて熟練した手動機械加工を必要とした作業の多くは、今ではCNCで行われています。
同じことがここで起こっていると思います。ただ、移行が厄介なだけです。
5年待てば、最終結果にどう到達するかは、今ほど重要ではなくなるでしょう。乱雑なコードベースは無関係になるでしょう。それはLLMによって管理・制御され、あなたや私のためではなく、それ自体のために最適化された方法で書かれるものになるからです。
- liendolucas
私はこれを直接目撃しましたが、それは災害だと言わざるを得ません。私が理解できなかった問題に対する修正を思いついた人物は、自動化された修正が機能することを私に納得させようとあらゆることを試みました。
確かに修正は機能しましたが、私が問題と修正を説明するように頼んだとき、彼はプロンプトを使って答えを得始めました。
その時点で私はただ手放しました。後で言及した唯一のことは、それが私に命じられたのであれば本番にプッシュしても構わないが、私はそれに対して責任を負わないということです。
私は問題を完全に理解し、再現し、解決策を考え出し、そしておそらくコンピューターが生成したものに対してチェックを行うまで、バグを生かしておくことを好みます。
バグは実際の人間のコードベースから来たものですが、複雑でそのコードの部分に精通していなかったため(さらに、コードはサポートやドキュメントなしで私たちに引き渡されました)、私は解決策を思いつくことができない弱い立場に置かれました。
問題を完全に理解せずに、コンピューターが生成したホットフィックスをどうしてそこまで信頼できるのか、今でも困惑しています。
私はまだ支援コーディングの使用に抵抗しています。LLMは私の脳を使う能力を奪うつもりはありません。これらのツールを使うことを強制された日、私は辞める日です。