14 ポイント 投稿者 GN⁺ 1 일 전 | 4件のコメント | WhatsAppで共有
  • ソフトウェアエンジニアの役割は、コードを書くことを超えてソフトウェアファクトリーを構築・維持することへと広がったが、システムを理解し改善するには、今なお自分でコードを扱う必要がある
  • プロンプト、AGENTS.md、ナレッジベースでエージェントを導き、テスト、リンティング、型システム、評価で成果を守れば、性能の低いモデルでも十分に実用的な変更を生み出せる
  • 自分でコーディングすると、英語を介さずに実行環境で考えることができ、受け身のコードレビューだけでは見落としやすい脆弱性・弱いテスト・不要な例外を実感できる
  • エージェントはコンパイラよりも新しく加わったインターンに近く、既存コードや不正確な要求に保守的に従い、人間の一度きりのミスまでラッピングや間接層として増幅しかねない
  • 人間がまずアプローチを自分で試してパターンを確立し、エージェントにそれを繰り返させることで、当事者意識と判断力を保ちながら自動化の生産性を活用できる

エージェントが働くソフトウェアファクトリー

  • ソフトウェアエンジニアはソフトウェアそのものだけでなく、誰でも変更をプロンプトで依頼し、すぐにデプロイできるようにする組立ラインも維持する
    • プロンプト、スキル、AGENTS.md、ナレッジベースを通じて、エージェントが成功できるインフラを先回りして整える
    • テスト、リンティング、型システム、評価、他のAIを活用した自動評価によって、結果を事後的に保護する
  • 十分な制約と最新のコンテキストを与えれば、知能の低いモデルでも逸脱せずに実用的な変更を作れるため、人間がコードを読んだり直接書いたりする必要はないようにも見える
  • しかし、Fableレベルの知能を持つエージェントがいたとしても、直接コーディングすることは、英語という中間層なしに実行環境で直接考えることを可能にする
  • エージェントが作ったdiffやパッチを受け身で読むだけでは、システムアーキテクチャと深く結びつくのは難しい
    • コードを自分で扱えば、その上に機能を追加したとき何が壊れるのかを実感できる
    • コードを整理し、例外が継ぎ足されない一貫したアーキテクチャ原則を文書化すれば、ソフトウェアファクトリーもより安定して動作する
    • デバッグの過程でテスト戦略の弱点を見つけて直せば、新しい種類のバグ全体を防げる
  • 直接コーディングすることだけがソフトウェアを理解する唯一の方法ではなく、磁化された針とぶれない手のように極端な手作業に固執する必要もない
    • 実際のコードの大半をAIが生成するとしても、直接コーディングは依然として有用な手段であり続ける

直接コーディングで守る思考力と当事者意識

  • コードを読んで承認するだけの逆向きケンタウロスの役割にとどまると、集中力と当事者意識が落ち、低品質なコードがレビューを通りやすくなり、細かな調整も難しくなる
    • 細部に注意を払わなければ脆弱性が蓄積し、長期的には低品質コードがエージェントにも悪影響を与える
    • 人間がまずアプローチを自分で試したうえで、エージェントに確立されたパターンを繰り返させれば、結果に継続的に関与し、所有できる
  • 英語は計算を精密に表すには仕様性の足りない言語である
    • アルゴリズム作業では、実行可能なステップとして構想し、考える必要がある
    • 状況に応じて、設計空間の大きい低水準言語や、計算環境がより制約された高水準言語を選び、必要な精度を調整できる
  • コーディングエージェントをコンパイラのように扱うと、ひどく書かれたコードでもデプロイしてよいという態度につながりかねない
    • エージェントはコンパイラよりも新しく入ったインターンに近い
    • 不完全で品質の低い可能性がある既存コードを読み、不正確な変更説明をもとに新しい変更を生成する
    • 人間はインターン集団に思考や嗜好をそのまま委ねることはできないので、消費者にとどまらず自ら関与すべきだ
  • エージェントは、見つけたときより良い状態でコードを残すボーイスカウト・ルールを自発的に守るのが難しく、それを任せるのも気が重い
    • 現在の変更をできるだけ安全にする方向に偏り、既存の判断を保守的に温存する
    • あるコードベースで、人間が何気なく一部の状態にブラウザのローカルストレージを使ったところ、他の状態はバックエンドのデータベースに保存しているにもかかわらず、エージェントがその判断を維持しようとしてラッピングや間接層を追加し、コード行数が約3倍に増えた
    • こうした保守性は、人間が一度だけ下した誤った判断を増幅しうる
  • コードを自分で削除し、探索する過程は、英語だけで指示するよりも、より良いアーキテクチャに到達する助けになる
    • コードに注意を払うほど、思考力、作者としての感覚、ソフトウェアファクトリーを導く能力が強まる
  • ソフトウェアファクトリーでは、アーキテクチャパターンからアルゴリズムや性能まで、細部が重要である
    • エージェントは評価・計測・保護装置の必要性を高め、個人プロジェクトでもCIを後回しではなく初期から追加するよう促した
    • その結果、ソフトウェア開発の状態は大きく改善したが、どんな組立ラインにも依然として弱点は残る
  • 自動車工場でも、組立ラインを分解したり、内燃機関の細部を掘り下げて10%改善したり、現場の問題を早期に発見できなかった理由を探るために一日中ブレーキパッドのテストを観察したりしなければならないことがある
    • ソフトウェアでも、細部と全体構造を結びつけるには、何を自分で扱えるかに恣意的な境界を引くべきではない

4件のコメント

 
jimmy2056 21 시간 전

私がコードを書く瞬間は、何か問題が起きたときだが
そのときも自分で直接やるというよりは
今後そうした問題が起きないようにハーネスを修正するので
コードを書く機会がだんだん減っている

 
shakespeares 1 일 전

思考力とオーナーシップに共感します…

 
choijaekyu 1 일 전

トークンの値がないからです…

 
GN⁺ 1 일 전
Hacker Newsの意見
  • コードを書けなければレビューもできないのは自明に思えるが、Claudeが書いてCodexがレビューすればよいという人や会社がある。それでもアセンブリやコンパイル済みバイナリではなく、PythonやJavaのような高級言語で成果物を求める理由は、結局のところ 人間がコードを読める必要があるから
    開発者にコードを読んでデバッグし推論することを期待しながら、その能力を育てる訓練は与えたくないという態度は矛盾している

    • Claudeにアセンブリを書かせない理由は、アセンブリでCRUDアプリを作る学習資料がほとんどないから。LLMが仕事を侵食するのは嫌だが、最先端モデルがインターネット上で無数に繰り返され文書化された作業をうまくこなすのも現実であり、この数十年のソフトウェア開発のかなりの部分が定型化されたCRUDアプリの生産だったのも事実
      あらゆる創作をLLMに任せながら業界が発展し続けられるのかは疑問
    • コードを書く行為はすなわち 考える行為 なので、コードを書くのをやめれば思考も止まる。より高いレベルで考えるとしても、その高水準設計さえLLMのほうがうまくなるはずで、今の優位は一時的にすぎない
    • 結局は 認知の仕方の違い に見える。英語の説明よりコードのほうが正確で読みやすく、熟練した開発者ならざっと見るだけで動作を把握できる人もいれば、コードを読むのが難しく自然言語のほうが楽だと感じる人もいる
      どちらが優れているという意味ではなく、細部をあまり重視しない人が世界を動かすこともあるし、問題ごとに必要な精密さの度合いが違うのかもしれない
    • Casey MuratoriとDemetri Spanosが動画で扱っていた話だと思うが、バイナリを避ける理由はLLMへの信頼よりも、機械ごとに異なる機械語やオフセット、文脈解釈の難しさに近い。Ghidraが逆コンパイルしたCコードと開発者が書いたCソースの理解しやすさの差のように、高級言語はコードの意図を表現できる
      コンパイラは、LLMが実際にコンパイル・実行されるコードを書くのを助けるが、機械語を直接出力するとそもそも実行不能である可能性が高い。もちろん、コードをまったく書けないならレビューははるかに難しい
    • Claudeがアセンブリやバイナリを直接出力すべきだと本気で主張する人もいる。ただし、複数の機械向けアセンブリにコンパイルできる 高級言語より移植性が低い可能性 が高い
  • 「プログラムを生成できるほど包括的で正確なプロジェクト仕様を業界では何と呼ぶか? コード と呼ぶ」 — CommitStrip
    きちんと書かれていれば、コードの核心は基盤となるビジネスロジックをもっとも単純に表現しているはず。支援レイヤーまですべてレビューする必要はないかもしれないが、コードを読んでいないならビジネスロジックを完全に理解したとは言いにくい

    • 原文リンク
    • この話題について書いた別の記事でも、仕様よりコードを使う ことを勧めていた。エージェントにコードで指示したり、従うべき例を作って渡したりしてもよい
      https://softwaredoug.com/blog/2026/07/04/write-code-not-specs
    • だからこそ Lisp が必要。まずビジネスロジックの基本要素を言語の基本要素にしたプログラミング言語を作り、その新しい言語でビジネスが行うことを記述する簡単なプログラムを書けばよい
  • 重要な問いは、誰が手書きコードに金を払うのかということ。顧客はコードを書くことや生成すること自体ではなく 問題解決 に金を払うので、もっとも低コストで騒ぎも少なく解決する側が仕事を取るし、AIツールが日程を圧縮してくれる利点は無視しがたい
    1990年代からこの業界にいるが、優れていない開発者が平凡な成果物を作ることは昔から多かった。手作業のコードを過度にロマン化しがちだが、実際のコードベースは時間とともに保守しにくくなり、バグだらけになりやすかったし、雑に進められたプロジェクトもまったく新しい現象ではない

    • むしろ 少ない量のコードを自分で書くほうが 生産性を高めると思う。1日かけてアーキテクチャを手作業で組み直せば、数千ドル分のトークン費用と数週間の頭痛の種を節約できる
      今は両手を縛られたままソフトウェア工場を建てようとしているようなもの
    • 平凡な開発者たちは今や 平凡な成果物を10倍多く 生産している
    • 医療・航空・原子力のような ソフトウェア品質が重要で規制される業界 では、これからも手書きコードに金を払ってほしい。ただし、この市場は比較的小さい
  • 集中して理解するには、エージェントを遠くから見守りながらコードを受動的に読むだけでは足りず、自分でコードを体験する必要がある。結局のところ 自分のメンタルモデルを鍛えなければならない ということ
    コーディングしているとき、無意識は「これは正しい感じがする」といった判断を数多く下しているが、これは反復と深い集中によってしか養われず、コードレビューや文書を読むだけでは限界がある。こうして形成されたメンタルモデルがあれば、運用障害のエラーメッセージを見るだけで原因を即座に突き止められるが、生成されたコードでは遅い意識的思考で長く探すことになる
    LLMが本当に有用であるためには、コード保守全体を引き受けて外部ライブラリのように振る舞うと仮定できなければならず、そうでなければ問題は起き続けるしかない

    • 人間相手にもすでにこの分離を試してきたが、あまりにもうまくいかなかったため 象牙の塔アーキテクト という蔑称まで生まれた。実際のシステムでは実装不可能な理論設計が出てきて、実装チームやLLMはアーキテクチャを迂回し、アーキテクトと実装者が噛み合わない議論をしているあいだに開発速度が大きく落ちる
    • オブザーバビリティの分野では、動的な実行挙動だけでは原因を見つけにくいなら、システムをもっと透明で 観測可能にするべきだ と考えるだろう。人は異動したり去ったりするので、優れた個人のメンタルモデルに依存してはいけないという原則はもともと有効だった、という立場
      まだどちらが正しいのかは分からず、さらに調べているところ
  • 2026年になっても AI生成コードは依然としてひどい。Fableであれ、カスタムのPi/opencode LeetCodeハーネスであれ、成果物はひどいもので、自分のコードとAIコードの品質差を見分けられないならよくない知らせがある

    • 自分のコードはAIより劣っていた、あるいは今も劣っているが、少なくとも金はもらえているので、その悪い知らせはあまり重要ではない
  • エージェントがボーイスカウト・ルールに従うよう、プロファイル実行、コードカバレッジ確認、批判的レビュー、レポートと後続作業の作成をルールに明記しておいた。一緒に働いてきた人の90%よりも、今日の最先端LLMのほうがこうしたルールをはるかによく守るのに、これを悪いことだと言うべきなのか疑問

    • エージェントは現在の変更をできるだけ安全にする方向へ偏りがち。コーヒーを飲む前に何気なくブラウザのローカルストレージを使えと言ったら、残りの状態はすべてバックエンドのデータベースにあるのに、その誤った判断を温存しようとしてラッパーや間接レイヤーを追加し、コード行数をほぼ3倍に増やしたことがあった
      エージェントは保守的なので、人間の一度きりのミスを増幅しかねない。これを解決する方法は多く、人によって考え方も違うため、コードを読まないやり方も直接読んで書くやり方もあり得るが、LLMを介さないコードの精密さから得られる利点も大きい
  • 自分がコードを直接書かなければならない理由は、そうしないとLLMがコードを作りすぎるから。問題を完全に理解して一般化しないと、「Hello World」に1万行と抽象化レイヤー5つがぶら下がるのを防げない
    LLMはトークン予測器なので、解くべき問題が多いほど出力するコードトークンも増える傾向がある

    • LLMは全体を統合的に考えるより、コードを防御的に包むやり方を好むため、肥大化しやすい。一方で人間の開発者は、作業しながら周辺コードも整えるボーイスカウト・ルールに従える
    • Peter Naurは数十年前、プログラミングとはソースコード・仕様・文書を機械的に生産することではなく、システム各部が現実の問題とどう噛み合うかについて深い精神的理論を構築する人間の活動だと説明していた。プログラミングの真の成果物は、開発者たちが共有するメンタルモデルである
      解くべき問題を抱えている当事者は人間なので、問題を理解しなければLLMが実際の要求と無関係な問題を解くX/Y問題が起こりうる。LLMはライブラリや高級言語のような本質ではない要素をよりよく抽象化するが、問題の核心は依然として形式的に表現しなければならない
      制約を一つずつ追加して望む結果に到達するバイブコーディングも、結局は緩く非形式的なプログラミングである。LLMには問題の周辺部を任せ、核心は自分で書いて理解するほうがよい
    • 業務の99%はC#だが、LLMのおかげで何もしなくても前からなりたかった低レベルプログラマーだと自称できるようになった
    • 会社の他のモジュールと似たようにK8sで動かすプロジェクトを構成してくれと頼んだら、LLMがHello World実装の単体テストまで書いてしまった
    • 最新の米国製モデルにクライアント側の情報を表示する些細な作業を任せたら、初期ハンドシェイクでサーバーがクライアントへ情報を渡すよう両側のコードを全部修正し、しかも実際に動くところまで持っていった。しかしその情報はすでにクライアントにあったので、クライアントコード1行だけ変えれば済む作業だった
      表面上は要求を完璧に満たしていたが、不必要で雑なコードだった。従量課金のトークンを売る会社には、問題を雑に解きつつできるだけ多くのトークンを消費するルーブ・ゴールドバーグ的な解法を作る経済的インセンティブがあり、生成時だけでなく、新たなバグが混ざった巨大なコードを後で扱うときにもさらに多くのトークンを使うことになる
      コピペコードを嘲笑していた人たちが、今では雑に継ぎはぎしたコードには熱狂しているのが滑稽
  • 2022年11月のChatGPT 3.5から現在までの進歩を見ると、4年後もコードレビューをしているのか疑わしい。AI極論者でなくても、現在の速度が維持されるなら5〜10年後には、今日の形のソフトウェアエンジニアリングと開発が消える可能性は高い
    人間にはUI設計くらいしか残らず、残りはすべて抽象化されてAIが実作業を処理するようになるかもしれない

    • 願いを一度に叶える機械なら単一の要求は簡単に処理できるが、ソフトウェアは数千の願いの積み重ねであり、あらゆる隅でこれは欲しい、あれは要らないという細かな判断を下さなければならない。現在のLLM方式では、こうした判断を依然として人間が管理しなければならないが、未来には今は想像もできないやり方が現れるかもしれない
    • 進歩が同じ速度で続くと仮定しているが、見たところすでにある程度の停滞局面に入っている。モデルが大きくなるたびコストは幾何級数的に増え、さらに大きなモデルを訓練し続ける事業が採算に合わないこともかなり明らかになってきたと思う
    • あらゆる動作にJavaScriptが必要で、入力欄に文字を打つことすらまともにできないWebサイトを作った無能な人間を直接責めることすらできなくなる未来が、もうすでに嫌だ。外見を機能より重視する経営陣と、そういうサイトばかりの学習データのせいで、LLMが同じゴミをはるかに大規模に生産するなら実存的危機になりそう
      Webはすでに十分ひどいのだから、せめて今くらいは無能な人間を責められる状況でいてほしい
  • KPIの圧力とは無関係に、機会があるたび自分でコードを書き、AIにはより賢いコード自動補完くらいしか期待していない

  • コーディングが好きで、本当に幸せになれるから自分でコードを書く。好きなことを手放す理由がない

    • コンピューターに作業を指示し、他のどんな手段よりも数十億倍速く処理する様子を見ることには、魔法のような魅力がある
    • プログラムを設計しコードを書くことが楽しくてこの分野に入った。AI活用では出遅れていて、もっと身につける必要はあるが、手でコーディングすることは絶対にやめたくない
    • コーディングしながらお金までもらえることに幸せを感じるなら、会社はその報酬を打ち切るかもしれない。ビザ維持のためにその収入に依存しているなら、変化への適応を強いられてコーディングを諦める可能性は非常に高い