HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

重要でなかった難しい部分への別れ

Goodbye to the Hard Parts That Never Mattered (jakegoldsborough.com)

35 pointsby JumpCrisscross25 コメント

要約

AIコーディングエージェントの台頭により、ソフトウェアエンジニアリングは、退屈で価値の低いタスクから、より高次の判断、検証、責任といったエンジニアリング活動へと焦点を移しています。著者は、AIはエンジニアを代替するのではなく、より複雑な問題や創造的なプロジェクトを探求する時間を増やすことで、エンジニアリングの可能性を広げていると論じています。この変化は、ソフトウェアエンジニアリングの終わりではなく、むしろその進化と再定義であると結論づけています。

全文翻訳

重要でなかった難しい部分への別れ 2026年9月26日 8分読書 #ai #dev #craft デイブ・キスのソフトウェアエンジニアの追悼記事を読み、一つの疑問が頭から離れませんでした。私たちは一体何に別れを告げているのでしょうか? ひどい正規表現? もう一つの使い捨てのパーサーをひどいデータのために書くこと? 明確な理由もなく奇妙な構文を暗記すること? ビルドシステムが、あなたがすでに理解していることを行う前に期待する特定の呪文に午後を費やすこと? もしこれらが死んだものなら、葬儀が必要かどうか分かりません。 デイブの議論は、タイトルが示唆するよりも希望に満ちています。彼は記事の終盤で、棺の蓋を再び開けます。スキルは私たちのものです。エンジニアは出荷されるものに対して責任を持ち続けます。おそらく、彼は、私たちは墓石に間違った名前をつけたのだろうと書いています。私はそのほとんどに同意します。ただ、墓石は全く必要ないと思います。私には、これはソフトウェアエンジニアの死ではなく、再生のように感じられます。 費用は決して目的地ではなかった ソフトウェアエンジニアリングには、常に解決しようとしている問題にわずかに関連するだけの多くの作業が含まれていました。あなたは、小さな醜いデータの山をあるシステムから別のシステムに移動する必要があるため、CSVパーサーの境界条件を学ぶのに半日を費やします。サービスが何をすべきかを正確に知っていますが、まず、6ヶ月触っていないフレームワークの構文を思い出さなければなりません。バグは理解していますが、修正は、見慣れないリポジトリのレイアウト、3層の間接参照、そして誰も書き留めなかったテストコマンドの背後に埋もれています。 私たちは、そうしなければならなかったから、この仕事に長けていました。その中には楽しいものさえありました。ついに正規表現を完成させたり、システム全体を奇妙に振る舞わせた一つの行を見つけたりすることには、真の満足感があります。しかし、困難は価値と同じではありません。これのほとんどは、問題を理解することとシステムを変更することの間の費用でした。それは決して目的地ではありませんでした。 もしエージェントがその翻訳の多くを引き受けることができるなら、私はエンジニアでなくなったわけではありません。私は、そもそもエンジニアを必要とした部分により多くの時間を費やすことができます。 仕事は移動した 私は毎日コーディングエージェントを使用しています。それらは私よりも速くコードベースを移動でき、数秒でパーサーを生成し、通常は私が検索したであろうライブラリの呼び出しを覚えています。それらはまた、悪い仮定をし、ローカルの慣習を誤解し、自信を持って存在しないAPIを使用し、変更したものをテストする前に勝利を宣言します。タイピングは簡単になりました。エンジニアリングは消えませんでした。 私はまだ、どこを見るべきかを知るのに十分なほどシステムを理解する必要があります。もっともらしい答えが間違っていることを認識する必要があります。変更がアプリケーション、プラグイン、オペレーションリポジトリ、あるいはどこにも属さないかを決定する必要があります。失敗を再現し、トレードオフを選択し、結果をテストし、本番環境に到達するものに対して責任を持つ必要があります。 エージェントはパーサーを書くことができます。しかし、ひどいデータを説明し、行が静かに消えることに気づき、現実がフォーマットに違反したときに何が起こるべきかを決定するのは、まだ誰かです。それがソフトウェアエンジニアリングです。 これは、私が「あなたが読むすべての単語を私はタイプしない」で書いたシフトと同じです。仕事は消えませんでした。それは移動しました。そのうち、手作業で全ての文字を生成することに費やされる部分は少なくなりました。より多くの部分は、指示、判断、検証、そして責任に費やされます。 私はより多くを学んでいます、少なくない 私が理解できる一つの懸念は、難しい方法を取り除くことで学習も取り除かれるということです。もし機械がコードを書くなら、どうすれば誰もそれが正しいかどうかを知るために必要な直感を開発できるのでしょうか? そのリスクは現実です。あなたは差分に現れるものを何でも受け入れ、何も実行せず、何も学ばず、かつては不可能だった速度でゴミを出荷することができます。 あなたはまた、同じツールを使って、以前は探求するにはコストが高すぎたコンピューティングの領域に入ることができます。私はエージェントを使ってTypeScriptプログラムをRustに書き換えたり、リポジトリを横断して本番インフラをトレースしたり、見慣れないデータベースの動作を理解したり、ターミナルツールを構築したり、無料の週末を正当化するのに十分な理由がなかったアイデアをテストしたりしました。私はそれらのプロジェクトから、Rust、Linux、あるいは関与したシステムについて少なく知って出てきたわけではありません。 エージェントは構文と足場(scaffolding)の多くを処理してくれたので、私は興味のある糸を引っ張り続けることができました。学習ループはよりタイトになりました。質問をする。回答を調べる。コードを実行する。それを壊す。実装を読む。仮定を修正する。もう一度試す。 それは理解の代わりではありません。それはあなたの理解の限界を見つけるための非常に速い方法です。その境界を越え続けることは、私たちにかかっています。もし私たちがエージェントを単に物事を知ることを避けるために使うなら、私たちはより悪いエンジニアになるでしょう。もし私たちがそれらを次の質問に速く到達するために使うなら、私たちははるかに良いエンジニアになることができます。 キャンバスは大きくなった 私が最もエキサイティングだと感じる部分は、同じチケットがより少ない時間で終わるということではありません。それは、完全に異なるプロジェクトが人間の寿命の中に収まるようになったということです。 ソフトウェアは常に、アイデアから最初の動作する形態までのコストが異常に高いものでした。小さなアイデアでさえ、新しい言語、フレームワーク、認証システム、デプロイメント、テスト、そしてアイデアが実際に良いかどうかを知る前に、多くの接着剤を必要とする可能性がありました。そのコストは、多くのアイデアをコードになる前に殺しました。 今、私はプログラミングを楽しくさせる、奇妙な小さな「もし~だったら」という考えの多くを追求することができます。フォーラムソフトウェアがゲームエンジンだったら? ターミナルオーディオブックプレーヤーが私の音楽プレーヤーと全く同じように動作したら? ツールがどのように機能するかを理解するためだけに、別の言語でツールを再構築したら? これらは仮説的な例ではありません。私はそれらを構築しました。それらは私にリアルタイム状態、メディアコンテナ、ターミナルインターフェース、システムプログラミング、そして私を助けてくれるツールの境界について教えてくれました。 私はそこで縮小する職業を見ていません。私は、これまでになかった規模で利用可能になった創造的な媒体を見ています。 懸念すべき理由はまだあります これらすべてが良い結果になるとは限りません。企業は生産性の物語を、人々を削減するための隠れ蓑として使うでしょう。生成されたコードは、私たちが準備できていない規模での失敗を生み出すでしょう。ジュニアエンジニアから経験豊富なエンジニアへの伝統的な道は変わるでしょう、そして私は誰もそれが何に取って代わるのか正直に知っているとは思えません。 アクセスも重要です。最高のツールが毎月数百ドルを必要とするなら、その職業は新しく開かれたと呼ぶことはできません。それらは深刻な問題です。それらは、AIがツールであるというスローガンや、誰もが10倍生産的になるという予測以上のものを必要とします。 しかし、それらはテクノロジーの恩恵を受けるのは誰か、どのように教えるか、そしてどのように仕事を進めるかについての質問です。それらは、ソフトウェアエンジニアリングが消滅したという証拠ではありません。むしろ、より速い生成はエンジニアリング規律をより重要にします。 コードの生成が遅かった頃は、悪い決定もゆっくりと蓄積していました。今や、悪い仮定は昼食前に3000行になる可能性があります。明確な要件、テスト、レビュー、オブザーバビリティ、そしてセンスは、その世界ではそれほど重要ではなくなっていません。それらは、増加した出力を有用に保つ唯一のものです。 葬儀はない 私はデイブの記事にある悲しみは理解できます。多くの私たち自身のアイデンティティを築き上げてきた働き方が、非常に速く変化しています。私もそれを惜しむ部分があるでしょう。難しい方法で何かを解決することは、特にそれがどのように解決できるかを学んだ方法であった場合、信じられないほど素晴らしいと感じることがあります。 しかし、私は障害と技術を混同したくありません。技術とは、問題を深く理解してそれを変えることでした。それは、不完全な情報でトレードオフを行うことです。それは、技術的には機能するシステムの中で、間違った音に気づくことです。それは、結果に対して責任を取ることです。 私たちはまだそのすべてを必要としています。今、私たちはより多くの問題に、より多くの領域で、はるかに大きなツールのセットを使ってそれを適用することができます。 だから、私はソフトウェアエンジニアを埋葬する準備はできていません。私たちは新しい働き方を学んでいます。私たちはテクノロジーの新しい層を構築しています。