プログラミング
ソフトウェアエンジニアリングの基本はますます重要になる
Software Engineering fundamentals matter more (rhonabwy.com)
要約
AIやエージェント型エンジニアリングの熱狂的なブームの中で、この記事はソフトウェア開発におけるテスト容易性、保守性、クリーンなインターフェースといった基本的なエンジニアリング原則の永続的な重要性を強調しています。LLMは予測は得意ですが、推論や複雑なソフトウェア設計における根本的な課題は依然として人間のエンジニアのスキルに依存すると論じています。
全文翻訳
私にとって、そして今日における、インポスター症候群の現れは、ソフトウェアエンジニアであるとはどういうことかということです。エージェント型エンジニアリング、達成可能なこと、そしてその将来への影響について、インターネット上にはシグナルよりもノイズの方がはるかに多く存在します。私が選んだタイトルはそれを物語っています。それは、ソフトウェアやシステム開発のパズルを解く際に、慎重に選ばなければならないすべてのことについてです。「主要なモデルプロバイダー」の誇大広告やジャンキーのようなマーケティング熱狂を超えて、私はHarnessとモデルの組み合わせで非常に興味深いパワーツールを見つけました。友人たちがこれらのツールをどのように使っているかをフォローしており、多くのことを学んでいます。いつものように、最も素晴らしいことをしている人々は、それを大声で叫んだり、この職業の終わりについてソーシャルメディアに物語的な短い投稿をしたりする人々ではありません。彼らは「巨大な鉄の棒」を見つけ、支点のポイントを探求し、そして良い古いアルキメデスのようにそのてこに力を入れて、世界を動かしています。過去1年で、エージェントハーネスは「それは可能か」というルビコン川を渡りました。(そう、ローマの参照に飛び込みます)。私は、世界中の知識が無許可かつ無配慮に持ち去られたり、狂人がそうでなければ低迷している米国経済を覆い隠すような経済的自己取引に手を出すことを望みませんでした。私が目にしたどのレポートからも、大規模モデルの経済モデルは実行可能ではありませんが、その能力は消えていくわけではありません。むしろ、それは(急速に)縮小しています。オープンウェイトモデルは、(強力な)パーソナルコンピュータでも同じことをかなり高いレベルで実行できるようになっています。それらはそれほど効果的ではありませんが、時間と能力の差は大きくありません。「それは可能か」は始まりに過ぎず、ソフトウェアまたはシステムエンジニアの職業の大部分にはほど遠いものです。それは私が20代で溶接を学んだときと同じです。私はすぐに持ち上げられないもの、あるいはショップから外に出すことさえできないものを作ってしまいました。(アセチレン溶接機があってよかった)。その時に学んだことは、今でも同じ教訓だと思います、媒体は違いますが:どのように物事が組み合わさるかが、すべてを変えるのです。もしあなたが先見の明を持ってエージェント型ハーネスを使って開発するなら、「それは動く」だけでなく、「テスト可能である」(私は「red/green TDDで開発する」というプロンプトを強く支持しています)という結果を得ることができます。しかし、それ以上のものにはあまり堅牢ではありません。コードがどのように機能するか、その「API」、そして他のソフトウェアとどのように適合するかといった「継ぎ目」は、科学と同じくらい芸術です。それは、あなたが今解決していること、そしてそのソフトウェアと長期間どのように付き合っていくかについて、あなたの視点(そして経験、そして推測)に依存する主観的な測定値で構成されています。ソフトウェアをデバッグ可能に、保守可能に、階層化し、構成可能にすること – それは依然として非常に難しい技術です。その作業の多くは、広範で思慮深い推論を必要とします。そして、今日のLLM、たとえ最先端の「能力」を持つフロンティアモデルであっても、それが不足しているのはまさにその点です。LLMは「推論しない」ことを知っておくと役立ちます。それらは予測し、モデル自体は効果的に圧縮された人間の知識です。したがって、人間がエンコードした知識の中にそれがあれば、人間の推論を反響させることができます。ソフトウェア開発に焦点を当てたエージェントにとって、それらの推論トレースはモデルにとって貴重なデータです。LLMがいかに推論が苦手かを示す、非常に分かりやすい研究論文「The Illusion of Thinking」があります。私は、行動の結果を予測することを含むいくつかの研究をフォローしていますが、それは今日のコーディングエージェントが持っているものではありません。それはかなり異なり、そして魅力的な研究分野です。探求したい場合は、「JEPAモデル」がどのように機能するか、LeWorld Model、そしてYann LeCunの最近の講演について調べてみてください。しかし、LLMを扱っている間、それらをより効果的にするための方法はまだたくさんあります。私たちはまだほとんど引き出せていない進歩がたくさんあると思います。今日私が目にしている勝利のほとんどは、適切なタイミングで、作業するための良い、簡潔なデータを提供し、LLMが自己修正に使用できる自然言語フィードバックを備えた決定論的な検証ツールを提供することを含んでいます。私にとって驚くべきことは、それが書くべきものを予測できることではなく、ツール呼び出しと指示に従うことが効果的であることです。この指示追従のもう一つの欠点は、Simon Willisonが「致命的な三位一体」と名付けたものです。基本的に – LLMモデルは良いアドバイスと悪いアドバイスを区別できません。それらは根本的に、プロンプトインジェクション攻撃を常に一貫して防ぐことができません。「アライメント作業」、安全ハーネス、サンドボックスはすべて最悪のものに対する障壁を追加するのに役立ちますが、根本的なギャップがあります。そして率直に言って、良い推論なしに疲れを知らずに指示に従うことは、私にとって悪夢の燃料です。モデルがトレーニング後に(RLHFのために)推論の等価物を含めるようにトレーニングされる方法で、近い将来の進歩があることを願っています。私の理想的な未来では、これらには、クリーンなインターフェースでソフトウェアを構築すること、デバッグ可能であること、そして強化された評価の重要な部分として保守可能であることが含まれます。ソフトウェア(およびシステム)の継ぎ目を注意深くレビューし、計画し、修正することは、エージェントアシスタントの有無にかかわらず、ソフトウェア開発時に私たちが雇用できる、そして雇用する必要がある重要なスキルの一つです。そして、「ああ、それは実装が簡単だ…」という波と、人々がそれを成し遂げるためにガラクタに手を伸ばすのを見るにつれて、それはこれまで以上に重要だと思います。ソフトウェアのクラフトについて、そして私たちがより良い職人になる方法について、書き、話し、共有する人々をフォローするには素晴らしい時期です。それが明白であることを願っていますが、単一の答え、万能薬は決してありません。それは常にトレードオフであり、目の前の問題にとって理にかなっているものを選択することです。何十年にもわたる、そして現在の多くの偉大な知性の共有された考えの助けを借りて、私たちはこの仕事のための素晴らしいツールチェストを持っています。それは、適切な抽象化を選択するか、より良い選択肢に移行するために再構築することです。その核心は、認知負荷を管理し、どの部分が安定している必要があるか、そして私たちの仕事がどこで柔軟に曲がるべきか(そしてどのように)を学ぶことです。そしてはい、私は自分でそのダッシュ(em-dash)を書きました。私は文章の中で再帰的な括弧に夢中になりすぎて、カンマや括弧からの休憩が好きです。共有: Xで共有 (新規ウィンドウで開きます) X Facebookで共有 (新規ウィンドウで開きます) Facebook 友達にリンクをメールで送信 (新規ウィンドウで開きます) メール LinkedInで共有 (新規ウィンドウで開きます) LinkedIn Redditで共有 (新規ウィンドウで開きます) Reddit その他 印刷 (新規ウィンドウで開きます) 印刷 Tumblrで共有 (新規ウィンドウで開きます) Tumblr いいね... 関連 公開者 heckj 開発者、著者、そして生涯学習者。https://rhonabwy.com/ でオンラインで執筆しています。その他の投稿を見る