「AIだから間違える」で済ませるな——不可解な失敗が常態化するソフトウェア開発
The Normalization of Inexplicable Failures
TypeSafe AIが開発したAIモデルJevは、確率付きの型付き値を返す。速くて安く、すぐに組み込めるため、評価もせずに「AI搭載」のチェックボックスを埋めるために使われ、下流のロジックが壊れても「AIは間違えるもの」と片付けられる。信頼スコアも校正の理解なしには貨物崇拝的に使われるだけだ。かつてはボタンが壊れれば契約違反やバグなど具体的な原因を追えたが、今は「たまに壊れる」で調査が終わる。LLM駆動開発は失敗を増やすが、本当の恐怖は不可解さが受け入れられることにある。
今日のソフトウェアエンジニアリングの悲劇は、ユーザーも作り手も、ドアの向こうに死体があるかどうかを確認しようとしないシステムを、私たちが積極的に設計していることだ。私たちはただ肩をすくめて結論づける——くだらないものは最悪だ、と。
HNでの議論
100- pmarreck
私は再現性(nix狂信者)と決定性(テスト失敗のフラグは、私の世界では赤信号・総動員体制の事態)と正確性を重視している。
テスト(正しいものの)も重視している。そしてナインナインも(Elixirを愛用)。
そして…エージェント支援開発も重視している。これで生産性を維持するには、あらゆるチェックをほぼすべて行う必要がある。そしてそれは私には問題ない。自分なら作らなかっただろうバグも見てきた。自分のバグが修正されるのも見てきた。どれもすぐに直った。なぜこれが問題なのかわからない。
自分の基準を上げろ。
要は、信頼できないソフトウェアの状況は、エージェント(下手な使い手)がさらに悪化させる前からすでに耐え難いものだった。
- adamddev1
素晴らしい記事。人はいつもエージェント/LLM駆動開発を擁護して「まあ十分だよ」とか「ほとんどの場合動く」と言う。
それはユーザー向けアプリによっては許容できるかもしれない。しかし、ライブラリやインフラ、コンパイラで失敗を常態化させ始めたらどうなる?すべてが信頼できない混沌へと堕ち、それがすべてとすべての人を遅くする。
- theamk
> ウェブサイトでボタンが壊れたとき、私は何が起きるべきだったかのモデルを持っている。どこかで契約が破られたのだ。[...] HTTPステータス500だけをデバッグするアクセス権はないかもしれないが、そのエンドポイントがなぜ500を返すのか理解するのが仕事の誰かがいるはずだ。所有権は不明瞭ながらも明確に定義されている³。
> しかし多くのユーザーにとって、実際の体験はおおよそ「クソみたいなものがクソ」というだけだ。ソフトウェアはすでに気まぐれに感じられる。失敗が増えればフラストレーションの頻度が変わるだけだ。
著者はクラウドサービスをあまり使わないのだろう。それは「ユーザー」だけではなく、開発者も同じだ。Githubが5xxを返している?AWSサービスが動かない?メールが届かなかった?我々(開発者)には何もできない、「クソみたいなものがクソ」。
- layer8
> これは不可解さの常態化につながる。
それは説明責任の欠如の常態化とも密接に関係している。
> これは「FTPアカウントを取得し、curlftpfsでローカルにマウントし、そのマウントされたファイルシステム上でSVNやCVSを使う」ことではない——難しい部分は依然としてやらなければならない。
これはおそらく今や若い読者層を失いつつある。;)
- WorldMaker
「信頼スコア」は常に、存在しない人間中心的な意味を含意してきた。アルゴリズムは人間が自信を持つようには「自信」を持たないが、その名前のものをビジネスパーソンの前に置くと、その数字は常に意味のある「成績評価曲線」や「普遍的なパーセンテージ」だと仮定してしまう。私は「嘘、大嘘、そして統計」という古い言葉が、MLが誇大広告に対して愚かな結果を導く理由の多くを理解する鍵であり続けると強く信じている。人々は統計を理解していないので、統計しか生み出さない機械は特に人々を混乱させる。(これはLLMにも当てはまると思う。)
- teraflop
「不可解さの常態化」は確かに腹立たしい。コンピュータソフトウェアに関しては常にひどかったし、組み込みソフトウェアに依存する他の消費者製品にもますます忍び寄っている。
最近新しい電気自動車を買った。概ねとても満足している。買って間もなく、始動するたびに「EVシステムをチェック」という警告メッセージがポップアップするようになった。ディーラーに持って行く頃には警告は消えており、技術者は「ええと、時々そうなるみたいです。また起きたら知らせてください」といった調子のことしか言わなかった。ハードウェアの故障?ソフトウェアのバグ?誰にもわからない?
ほとんどの現代の車と同様、インフォテインメントシステムに接続性とGoogle Mapsが組み込まれている。ほとんどの場合、問題なく動作する。時々、ドライブの間ずっと接続がない(つまり交通データがなく、ルートが最適でない)と言うことがある。通常は問題なく動作する強い携帯電波のある地域でもだ。時には車は接続があると言うのに、Google Mapsはまだオフラインだと思っていることがある。時にはMapsが実際に読み込まれてルートを表示するのに、「ナビを開始」ボタンが何かを待っているかのように永遠に回り続けることがある。これらは関連する問題なのか?修正可能な共通の原因があるのか?誰にもわからない?
(都合の良いことに、保証はソフトウェアやファームウェアが正しく動作しないことによる故障を明確に対象外としている。)
- nizarmah
AIがずっと簡単にしてくれたからという理由だけで、コードベース全体をある言語から別の言語へリファクタリングすることを選ぶ人々を見てきた。以前から問題はあったのは確かだが、今やより良い言語での新しいコードは読めず、この全体が終わったらまた別のリファクタリングが必要になる。
- benjaminsky2
私はJevの信頼スコアを検証した。私がテストした3つのユースケースでは、精度は信頼度と線形にスケールした。0.9以上では人間のラベラーと一致した。約3ドルで予期しなかったユーザー行動を即座に発見した。低コストと低遅延のおかげで、今ではリアルタイムで緩和できる。これは全顧客にとって大きなプラスの財務インパクトになるかもしれない。
実際の失敗例を示さずに、なぜこれを貶めたくなるのかわからない。