Conceptual integrity and counting lines of code

Simon Willison

概念的完全性とコード行数のカウント

原文は Simon Willison により に公開されました。 このブログを購読する

先週、クレア・ジョルダーノとともにポッドキャスト「Talking Postgres」のエピソード「How AI is changing software development」を収録しました。テーマは「AIがソフトウェア開発をどう変えているか」です。とても素晴らしい会話になりました。ここでは、軽く編集した書き起こし(Claudeへのプロンプト:「言い淀みを取り除くためのごく軽微な編集」)の中から、特に印象に残った箇所をいくつか紹介します。

こちらは、コーディングエージェントの生産性の指標としてコード行数について語ることが、時には確かに意味を持つ理由について、私がずっと組み立ててきた議論の最新版です(35:01あたり):

多くの人は、生産性をコード行数で測るのは意味がないと言うでしょう。私はむしろそうは思いません。そこには明確な上限があるからです。かつての時代、つまりエージェント以前は、ソフトウェアエンジニアが1日に生み出せる本番対応のコードはせいぜい数百行でした——きちんと動作し、デバッグも済んだ本番レベルのコードを200行書ければ、驚くほど出来の良い1日です。たいていの日は50行か60行といったところでした。

もしエージェントによってデバッグ済みのコードを1000行生み出せるようになるなら、それは本当に大きな進歩です——ただし、コードの品質が同じである限り。保守可能で、テストされていて、そういったすべてが担保されているという条件で。エージェントを使ってそこまで到達することはできますが、それには膨大なスキルと知識、経験が必要です。そこにこそ、シニアエンジニアの真価があるのです。

私はエージェントのおかげで、一人のエンジニアとして以前とは比べものにならないほど多くの仕事をこなせるようになりました。ならば、なぜ会社はエンジニアを一人以上雇う必要があるのか、という議論も成り立つでしょう。明白なバスファクターの問題——一人だけのチームはひどく設計の悪いチームです——を別にしても、答えは、新たなボトルネックが認知能力にあるということです。私は100倍の速さでコードを吐き出せるようになりました。しかし、100倍のコード量をすべて把握し続けるだけの認知能力は持ち合わせていません。だからこそ、やはりエンジニアのチームが必要なのです。認知的な負荷をチーム全体で分散させるために。

そしてこちらは、46:03あたりの、概念的完全性についてのくだりです。クレアはこれをウィンチェスター・ミステリー・ハウスに例えていました!

サイモン『人月の神話』に「概念的完全性」という考え方があります。よく設計されたソフトウェアには、そうした完全性が備わっている——そこには驚きがなく、扱うべき領域をちょうど過不足なくカバーしていて、すべての要素がうまく収まり、筋が通っているということです。コーディングエージェントを使うと、それを保つのがずっと難しくなります。機能のアイデアを思いついてプロンプトを実行すれば、5分後にはその機能ができあがってしまう。そうやって、ソフトウェアはあちこちに奇妙な出っ張りを生やしながら、妙な方向へと成長していくのです。

クレア:それにぴったりの例えがあるわ。ウィンチェスター・ミステリー・ハウスよ。

サイモン:あの屋敷には部屋が140もあるんです。建てたのはウィンチェスターライフルを発明した男の未亡人で、霊能者に「ウィンチェスターライフルで殺されたすべての人の霊に取り憑かれるから、永遠に家を建て続けなければならない」と言われたからだそうです。だから40年間、部屋を増築し続けた。これがまさに、コーディングエージェントとソフトウェアの問題なんです。部屋を増やすコストがずっと安くなったので、新しい部屋をどんどん足すのがとても簡単になってしまった。そうして出来上がるのは、概念的完全性が崩れてしまったもの——そうなると、何かを決めるのも難しくなります。

結局、すべては規律に帰着します。以前は、かかる時間そのものが規律を強制していました。突飛な機能を思いついても、「いや、でもこれを作るのに1週間かかるな——正当化できないからやめておこう」と考えるものでした。でも1時間でできるとなれば、正当化するのはずっと簡単になってしまうのです。

(余談ですが、ウィキペディアの記事には、霊能者の話に異議を唱える信頼できる情報源も載っています。)

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント