ハクソク

世界を動かす技術を、日本語で。

LLMマキシマリストの不安定な福音伝道

概要

  • LLMを使ったコーディングへの懐疑的な視点
  • LLMの有用性と限界の実体験
  • エージェント的LLM開発への失望
  • 技術変化に対する議論と心理的な側面
  • オープンな問いかけと自己反省

LLMプロダクティビティ懐疑論

  • LLMはデジタル事務員として有用、ウェブ検索やドキュメント探索、アルゴリズム調査に活用
  • コーディング支援も小規模な文脈や明確なガイドラインのもとで限定的に役立つ
  • プロンプト駆動開発や「vibe coding」ではエージェント的LLMの限界を痛感
    • 小さなコード変更でも多大な手間と時間を要し、誤りも多発
    • トークン消費とともに自己効力感の低下を実感
  • こうした体験は個人の好みや経験に依存し、他者の「vibe coding」自体は否定しない立場
  • 非経験者でもLLM活用で新しいものが作れる点は評価
    • その後のコード修正依頼が仕事になる利点も

LLM推進派への違和感と心理的側面

  • LLM推進派は「これが未来」「取り残される」「ソフトウェア開発は永遠に変わった」と主張
  • 反対意見に対し、「変化を恐れる心理」「新しい技術への抵抗」「時代遅れ」と性格評価を行う傾向
  • 実際にはエージェント的コーディングの理想像には共感
    • 仕様作成に専念し、機械に完璧に実装してもらいたい願望
  • しかし現実とのギャップに大きな失望感

推進派の心理分析と新たな仮説

  • なぜ推進派は他者を説得しようとし、時に攻撃的になるのか疑問
  • 個人的な仮説:推進派は「LLMが自分よりプログラミングが得意」と気づき、著名な開発者がLLMなしで生産的である事実に不安を感じている可能性
    • 「自分が劣っているのではなく、他者が脅威を感じているのだ」と投影している心理
    • 熱心な布教活動の根底に不安自己防衛がある可能性

オープンクエスチョンと自己反省

  • 自分自身のLLM活用スキル不足の可能性も認め、今後も意見を変える柔軟性を持つ姿勢
  • LLM推進派にも「もしかしたら自分はそれほどプログラミングが得意ではないのかも?」という自己省察を促す問いかけ
  • 技術進化への適応や評価は常にオープンな議論が重要

補足

  • LLM活用の効果がプラシーボである可能性を示唆する証拠も存在
  • 著名開発者でなくとも議論の当事者になれる点を強調
  • コード修正等の仕事依頼も歓迎

Hackerたちの意見

テックツイッターで「LLMは手で書くよりも常に良いコードを生成する」と言ってる人たちを見て、かなり目からウロコだった。LLMは、自分が得意じゃない言語や分野でも、すごく早く良いコードを生成できるけど、LLMの出力を見て「これなら自分の方が絶対良くできる」と思わないことは滅多にない。これらは平均的なテキスト生成マシンだよ。確かに、適切な重みを引き出す良いプロンプトを書くことで出力の質を向上させることはできるけど、もし手で書くよりも一貫して良い出力が得られているなら、あなたはプログラミングが平均以下かもしれない。確かに、これは時々重要だよね。私たちが直面しているソフトウェアのバグの数を見てみてよ。それに、コードは負債でもあることを忘れないで。生成するのが「安い」コードを使うことにはコストがあるし、これは近い将来、たくさんの議論の対象になると思う。
私の見解では、ラフドラフトやアイデアの反復、使い捨てコード、まだ習得していない分野に踏み込むのにはとても良いと思う。多くのケースで、彼らは十分に良いテストを書いていると思う。
クロード・コードは、Gitの履歴を掘り下げたり、マージコンフリクトを処理したり、物の名前を変えたり、いつも忘れがちなSQLクエリを書くのが私よりずっと上手だ。でも、そうだね。もし大きくて具体性のないタスクを与えると、かなり mediocre(それ以下)のコードを生成する。
私は、 1.) コンピュータのように考えてコードを書く脳の配線がされていない。 2.) コードを書いていると、1時間か2時間でキーボードの前で寝ちゃう。 3.) アイデアを実現するために情熱を持って取り組むけど、その過程で書くコードがクソだって分かっててもやる。 だから、要するに、LLMは私よりもいいコードを書くんだよね。私だけじゃないけど。
でも、ある程度の経験を積むと、質の違いが実際にどれほど重要かを理解するようになると思う。シニアの中には、PRを一日中バイクシェッドするのが好きな人もいるけど、一般的にはその活動には実際の価値がゼロだよね。たまには重要だけど、ほとんどはそうじゃない。「手作業でやったらもっと良くできる」って言うのはやめて、「手作業でやるのに追加で4時間かける価値があるのか、これで目標を達成できるのか?」って考えよう。
最近、バイブコーディングをたくさんやってるけど、今のSOTAのLLMは満足できるコードを生成してくれないことが多い気がする。LLMはごちゃごちゃした脆弱な構造をハッキングするのがすごく得意な気がする。「頭の中でいろんなことを把握できる」からね。でも、LLMは俺が選んだ言語で動くPNGデコーダーを一発か数発で書ける。俺もできるけど、1分以上かかるよ!(その過程でPNGフォーマットについて何か学べるかもしれないし…)それに、エンジニアたちはコードの質について一日中話せるけど、これって非エンジニアにとって本当に重要なのかな?客観的にはそうかもしれないけど、彼らを納得させることができるかな?
俺は比較的大きな会社で働いてた(プログラマーが約400人いる)。LLM生成のコードを受け入れている人たちには、明らかに共通の特徴がある。彼らは「はい!」と経営陣に言うのが大好きな機能推進者なんだ。経営陣は常に正しいから、これらのプログラマーは不完全な要求でも、できるだけ早くCopilotセッションに入れてプルリクエストを開こうとする。数ヶ月前に最悪のケースを覚えてるんだけど、あるスタッフエンジニアがJavaとKotlinの並行ツールのベンチマークについてプレゼンしたんだ。Kotlinの方が圧倒的にパフォーマンスが良くて、意味がわからなかった。コードを掘り下げてみると、すべてがLLMによって生成されたことが明らかだった(例えば、絵文字付きのコメントがたくさんあった)。Javaのコードはただ間違ってた。そこで見た有能なプログラマーたちは、LLMを使ってシェルスクリプトや小さなPythonの自動化を生成したり、アイデアを探ったりしてるけど、ほとんどの場合、これらのツールには感心してないよ。
> テックツイッターで「LLMは手で書くよりも常に良いコードを生成する」って言ってるのを聞いて、かなり目から鱗だった。あれは面白いね、LLMのコードはいつもひどい。唯一のメリットは、たまに動くことだ。 > LLMは、俺が得意じゃない言語やドメインに対しては、より良いコードを生成できる。そんなことはないと思うけど。
平均的なコードの山でAIを訓練して、常に平均以上のコードが得られるなんて、ちょっと驚きだよね。改善はどこから来たんだ?出力されたコードをフィードバックして、さらに良いコードを得るべきだ。
> これらは平均的なテキスト生成マシンだ。面白いことに、開発者の半分はAIが良いコードを書くと思っていて、半分はそう思ってない。平均的な出力を再現するように設計されていることを考えると、納得できるよね。だから、OPの考えがどんなに失礼でも、平均以下の開発者がAIを使って得をしていて、平均以上の開発者はそうじゃないのは理解できる。理論的には、この状況が平均出力の質を上げるはずだけど、訓練データがAIの出力で汚染されていなければの話。あまり意味はないけど、OPの主張を支持するエピソードがある。LinkedInのフィードに、AIの熱心な支持者である元同僚が二人いて、彼らは年々ソフトウェアエンジニアリングからAIスタートアップのシニアビジネス開発の役割に移っていった。彼らは15年間で俺が一緒に働いた中で間違いなく最悪のコーダーのトップ5に入る。うち一人はコードの質とテストの実践で解雇された。彼らのコーディング能力、技術的な役割からの移行、そして「バイブコーディング」の力を強く支持する姿勢は、OPの厳しいキャラクター評価と一致するだろうね。
LLMは、文脈があれば「平均的なテキスト生成マシン」じゃない。LLMは分布を学習する。プロンプトを「あなたはベテランの専門家レベルでソフトウェアエンジニアリングを手助けするインタラクティブなCLIツールです」と始めた瞬間、LLMは非常に非平均的な分布からトークンを生成するようにバイアスがかかってしまう。
> そして、避けられないのがキャラクター評価で、こんな感じになる。「昨日、コメント欄でLLM懐疑論を『ハッカー』の精神が欠けているという失望として捉えたバージョンを見た。あなたが想像する通り、私は反対だった。『ハッカー』は、解決すべき問題の新しさだけでなく、それを表面的なレベル以上で理解したいという欲求によって駆動されている。うまくいくまでゴチャゴチャいじるのは、ソフトウェアエンジニアリングの一部だけど、その動機と報酬は、物事がどう機能するかを知り、どうすればより良く機能するかを認識することから来る。私がLLMに対して『恐れている』のは、無限に『うまくいくまでいじる』という退屈な作業を提供して、何の利点もないことだ。人間の役割は、実際には『根本的な原因』がない問題(確率的な意味を除いて)に取り組むことで、そこには決して永続的または巧妙な解決策はない。生成された写真をレビューして余分な指を探して、丸を付けて『やり直し』ボタンを押すことを望まないからといって、誰かを『本当のアーティストではない』と言えるだろうか?」
あなたの不安、わかるよ。プログラミングやデザインを効果的にできるジュニア(いや、ジュニアじゃない人たち)を見つけるのが本当に大変だから。業界がLeetcodeの練習に夢中になって、多くの人がただの暗記や面接ゲームに集中することで成長が止まっちゃった。AIが普及して、こういう「とても賢い人たち」がLLMをコーディングの代替として推している今、何も理解できない人たちが増えて、調べようともしていない時代に突入しそうで怖い。とはいえ、LLMがボイラープレートを書く能力があれば、過去10年ほどで簡単に大金を稼ごうとしたCSに興味がなかった人たちを業界から排除するためのリセットになるかもしれないね。
> LLMを使ったコーディングで「怖い」と思うのは、無限に「動くまでいじる」ような面倒な作業が増えて、いいことが何もないことなんだよね。プログラミングよりもテキストエディタをカスタマイズするのに時間をかけるのがハッカー精神に忠実だと思うから、これは自然な流れなんだろうね。
いつまでこのままで、結果が自分で語るのを許して、明確な答えのないオープンクエスチョンを再び議論するのをやめるんだろう。もう十分過ぎるくらい話したよね。別の話をしようよ。
LLMがどれだけエネルギーを使うかを考えると、結果が自分で語るなんてことは避けたいな。
これ、なんか完全に正しい感じがしない。サイモン・ウィルソン(Djangoで有名)は最近、ブログでLLMの宣伝をたくさんしてるし、アンティレズ(Redis)も最近同じような雰囲気のブログを書いてた。彼らが良いプログラマーじゃないとは思えない。多分、私たちのほとんどよりも優れているだろうし、LLMのせいで不安を感じているとは思えない。私が間違っているか、もっと何かあるのかも。追記:サイモンとアンティレズがこの記事で批判されている敵対的なLLMの宣伝者の一部だとは言ってないよ。この記事は少なくとも一部で全てのLLMの宣伝者を一般化しているし、サイモンもここで反応しているからね。この理由から、私は彼をこの記事のターゲットとして完全には除外していない。
著者は、ただの宣伝じゃなくて、同じ経験を持ってないって言われると敵対的になるって主張してる。ウィリソンやアンティレズが、人々を置いていかれるとか、無関係になるのが怖いって脅かしてた記憶はないな。むしろ、彼らは自分たちのポジティブな経験について話してるだけ。ウィリソンとアンティレズは、共存することに問題ないみたい(アンティレズはちょっと違うかもしれないけど、でもそんなに意地悪じゃないよ)。
あなたはここでセットとメンバーを混同しているみたい。この作品の批判はセット(LLMエヴァンジェリスト)に対してで、特定のメンバー(あなたが挙げた人たち)に対してではないよ。作品のポイントには賛成しつつ、良いプログラマーでありながらLLMのエヴァンジェリストでもある人がいることを認めることはできる。
すでにキャリアのピークにいる人たちを、コーディングのスキルを磨いてそこにたどり着いた人たちと比べるのはフェアじゃないと思う。実際、彼らが今持っている価値あるものは、主にスキルじゃなくて資本だよね。有名なソフトウェアを作って、広く使われてるし。しかも、LinkedInでよく見かける「乗らなきゃキャリアが台無しになる」みたいなトーンは使ってない。もしそのアドバイスを信じて、コードを理解する人間になるのを諦めたら、RedisやDjangoを書くことは絶対にできないよ。
本当に才能のある人たちは、LLMと話すのが好きなんじゃないかな。プログラミングに100%集中しているわけでもないから、非同期の特性がフルタイムでコードを書く人たちよりも重要になってくるんだよね。
> たぶん、彼らは私たちよりも優れてるよ。トップエンジニアの多くは、自分の最高の作品が雇い主のプライベートリポジトリに閉じ込められてるから、simonwやantirezにはアドバンテージがあるね。特に前者は自己プロモーションが上手いし。
「LLMの宣伝者たち、あなたたちは自分がプログラミングがそんなに得意じゃないかもしれないことを認める気はある?」 いいえ。
昔、CプログラマーたちはPythonの開発者にそんなことを聞いたのかなって思う。
いや、LLMの信者たちは一般的にこれを認めたがらないし、あなたもLLMの信者として認めたくないってこと?
この一文についてコメントしに来た:記事のトーンが完全に変わる。ここまではかなり合理的で中立的だけど、ここに来ると敵対的な姿勢がはっきりする。実際、これは投稿の中心的なポイントだと思う。OPは、LLMの支持者たちが本当に優れたプログラマーだったとは思っていない。すでに他の人たちが指摘しているように[1]、多くの有名な優れたプログラマー、あなた自身や今はリーナスも含めて、異論を唱えるだろうね。 [1] https://news.ycombinator.com/item?id=46610143
自分がいいプログラマーかどうか悩むのを早めにやめる方法は、ただ自分がPythonでコードを書いてるってことに気づくことだよ。
ハッカーニュースのホームページに5つの反AI投稿…そうだね、懐疑派の中にも不安な宣伝がたくさんあるよ。
HNには新しい血が足りてるのかな?俺にとっては、スタートアップシーンに入るときの最高の場所で、お気に入りのサイトだった。大好きだった。でも、知ってる若い創業者たちがここに来ることはあまりないと思う…
テック業界って、他の人が自分と違う選択をすると、個人的に攻撃された気になる人を引き寄せるみたい。「なんでGoを使ってるの?Rustが一番だよ!それを使うべきだ!」とか、「AWS CDKなんて使うな、Terraformを使え!何も知らないの?」みたいな感じ。
技術業界だけじゃなくて、これは人間が社会的動物であることの根本的な特徴だよね。 「普通に感じたい、周りを見渡してほとんどの人が自分と同じ選択をしているのを見たい」
人間は部族的な生き物で、それには利点とコストがある。技術の世界では、自分のお気に入りの技術を広める歴史的な利点は、それがより人気になり、サポートが良くなることかもしれない。LLMが同じ道を辿るかどうかは分からないけど、仲間を巻き込めれば、共通の基準ができて、いろんな使い方のシナリオについて話し合えるようになる。
テクノロジーの世界では、かなり頭が良くないとやっていけない。賢く育てられて、自分が賢いと言われた人は、それを自己価値の一部と見なす傾向がある。もし後になって誰かがその人に反対すると、その人の自己が攻撃されたと感じるから、当然反発するよね。開発者に対して最も悪いことは、「君は間違っている」と言うことだ。ほとんどの人は、どんなに馬鹿げたトピックでも、そうじゃないことを証明しようと全力を尽くすよ。
反LLM側の人たちは、もっと不安定に見える。賛成派のインフルエンサーは時々ダサいけど、他のインフルエンサーと同じで、クリックを得るためにすべてをワクワクさせるように仕向けられてる。置き換え用の食器洗い機の部品を印刷することがすべてを変えるって言ってた3Dプリンターのインフルエンサーについて文句を言ってた人はいなかったよね。LLMも政治的な問題になってきてるけど、実際に気にしてるのは「反」側だけ。使ったりプロンプトを与えたりするのが完全に「ゴミが入ればゴミが出る」って状況だから、人々は自分の社会的・政治的バイアスで使用を曇らせて、成功を助けるのではなく「やられた!」って瞬間を集めようとしてる。それは、LLMを生産的に使ってる人のワークフローを反映してないよ。
これ、前にも経験したことがある(お金が流れるところにはどこでも) - データベースはダメ、Couchbaseとか使うべきだって言われてた。俺はDBの専門家だったけど、主張してた人たちはそうじゃなかった。でも、彼らはすごく声が大きかった。いろんなウェブ開発の代替案が出たり消えたりして、どれもすごく騒がしい。今の最新はLLMだけど、Couchbaseみたいにそれぞれの役割はあるけど、信者たちはそれを認めようとしない。俺は医者たちとよく仕事をしてるけど(彼らのためにソフトウェアを書いてる)、彼らの専門化のシステムがすごく羨ましい。例えば、この人はこういう専門家で、彼の話を聞けばいいって感じ。ITの世界では、声が大きい人が台座を持ってるみたいで、良いものと悪いものを分けるのが難しい。いつか資格制度ができることを願ってるけど、まだまだ先の話みたい。
「自分が間違っていることを認めるのはまだできる。GPSを正しく使っていないことも。リアルタイムの衛星データを使ってナビするのは別のスキルで、十分な時間をかけていない。以前も移動方法を変えたことがあるし、また変えることになると思う。地図読みの信者たちよ、運転がそんなに得意じゃないかもしれないって認める覚悟はある?」