AIコーディングで開発者の仕事は変わる!定型作業はAIに任せて本質に集中?
引用元:https://news.ycombinator.com/item?id=45230677
50歳近いベテラン開発者だけど、AIは大好き!退屈な作業はAIに任せて、面白くて本質的な仕事に集中できるからね。AIはジュニアからミドルレベルのエンジニアみたいに使えるんだ。でも、若手の成長を妨げる心配はちょっとあるかな。
AIが退屈な作業をなくすと、開発者の仕事は常に難しい問題と戦うことになるって意見、わかるよ。シニア開発者の中には、簡単な作業で一息つきたい人もいるんだ。ずっとハードなことばかりだと、みんな疲れちゃうからね。AIで速くなるのはいいけど、人間の認知負荷も考慮しないと。個人に合わせて管理するのが大事だよね。
AIが仕事の質を下げてるって思うんだ。深い思考が必要だった仕事が、今じゃスロットマシンみたいに「これでいい結果が出るかな?」って運任せになっちゃってる。実際、AIコードを組んでる人たちを見てると、批判的思考が衰えてるように見えるよ。PoCみたいな軽いものには使えるけど、本当に大事な設計には向かないんじゃないかな。
面白い視点だね。簡単なコードを書いてる時って、実は難しい問題について頭の中で考えたり、調べたりする時間があったりするんだ。もし100%難しい作業に集中するようになったら、この「準備」の時間がなくなって、逆に良くない影響が出るかもしれないね。
AIを「ジュニアからミドルレベルのエンジニア」って擬人化するのはやめない?あれはただのツールで、意味のある考えなんてしてないよ。膨大なデータからパターンを見つけてるだけ。もちろん、君が言うようにすごく役に立つのはわかるけど、それでもただのツールなんだからね。
全体を理解してる開発者にとって、AIはめちゃくちゃ強力なツールになるよね。逆に、特定の分野に特化してる人や、全体像を知らない人は不利になるかも。でも、AIは学習ツールとしても優秀だから、結局は努力する人としない人をハッキリ分ける道具になるんじゃないかな。
それっておかしいよ。ボイラープレート作業をAIに任せたからって、考える時間がなくなるわけじゃないでしょ?そういう言い方すると、absurdに聞こえるよ。
僕の最初の主張通りだよね。書くコードの多くは低スキルで大した影響もないけど、必要で時間のかかるものばかり。AIがそういう定型作業を数時間じゃなくて数秒で終わらせてくれるなら、僕らは本来の仕事に集中できるじゃん。
これって、「誰が本物のアーキテクト/職人で、誰が組み立てライン作業員なのか」をAIが浮き彫りにしてくれるってこと。これはどの業界でも進歩の証だよ。
Steamのゲーム「Bombe」を思い出したよ。あれってMinesweeperの変種なんだけど、簡単な部分は自分で定義したルールが自動で処理してくれるんだ。だから、いつも新しい、考えたこともない難しい問題に直面する。楽しいけど、マジで疲れるよ。AI開発もこれに似てるかもね。
https://store.steampowered.com/app/2262930/Bombe/
AIがいいのは、まさにここなんだよね。俺はAIに「ジュニア開発者」とか「プロダクトオーナー」とか「DevOpsエンジニア」みたいな役割を演じさせて、チームとして連携させてるんだ。俺は「ソリューションアーキテクト」や「投資家」として指示出すだけ。このAI「チーム」のおかげで、普段なら何か月もかかる仕事を数週間で終わらせられるし、1つの役割あたりたった2.40ユーロ/時だよ!
言い換えるね。難しい問題を考える時に、手を動かすために編み物を始める賢い人を知ってる。でも、それって勤務時間中に編み物できる環境じゃないと無理だよね。生産性が上がるのに、多くの職場ではクビになる理由になっちゃうのが残念。難しい問題の解決策が定型作業だけだとは言わないけど、もし編み物や卓球ができる職場で、それが助けになるなら、ぜひやればいい。俺が言いたいのは、もし100%の時間を難しい問題に費やしたら行き詰まるだろうし、定型作業が偶然にも、この100%にならないようにクッションの役割を果たすかもしれないってこと。これは確実なことじゃなくて、ただのアイデアなんだけどね。
そうなんだよね、残念だけど、つまらない作業は昔ジュニア開発者がやってた仕事で、それがあるからシニア開発者は良い仕事に集中できた。でも今、AIがつまらない作業をやるから、もうあの厄介なジュニア開発者を雇う必要がなくなった。やったー?って感じだよね。問題は、ジュニア開発者がシニア開発者を育てる元なのに、AIがそれらを奪うことで15年後には、アメリカがかつて得意だったのにできなくなることがまた増えるってこと。製造業の重要な仕事がそうだったように。メーカーは目先の利益ばかり気にして、従業員の基本的な持続可能性どころか、産業を支える仕事の健全性まで、他の誰かに任せた結果、みんな同じことをしたんだ。
まったくね。俺はHotz好きだけど、彼が言う「開発者もコンパイラ」ってのは的外れな議論だ。スタートアップ共同創業者として色んな役割をこなす俺の生活の質は、Cursorみたいなツール[1]がなくなったらめちゃくちゃ下がるだろうね。つまらない作業をやるのは精神的にしんどくて、それが先延ばし、遅延、フラストレーションに繋がるから。そういうタスクをAIに任せられるのは信じられないほど価値がある。この分野に「初日」からいるから、どんなタスクをAIに任せられるかよく分かってる。例えば、コードにロギングを追加したり、深い関数呼び出しをきれいなクラスにしたり、データベースの基本統計を表示するStreamlitダッシュボードを作ったり、LLMのプロンプトの誤字脱字を直したり、SQLテーブルの「create index」文を全部書いたりとかね。
[1]今はCopilot Chatに戻ったけど、大差ないよ。
AIを擬人化してるわけじゃないでしょ?ただツールの能力を比較してるだけだよ。エンジンの馬力について話すのと一緒さ。
でも、スプレッドシートやワープロでは、こんなことにならなかったよね。それらのツールも、少人数の事務員や秘書を本当に置き換えたのに。
「なんでも作れるけど、基本的な作業で足を取られることが多い。退屈なことをAIに任せて、良い部分に早く到達できるのが好きだ」って意見、俺も同じ境遇(経験は10年少ないけど)なんだけど、共感できないな。どの作業も退屈になる頃には、それを自動化・一般化しようとする。これはすごく難しいことだけどね。だから、退屈な作業はほとんど残らないし、プロンプト入力するより自分でタイプした方が早いんだ。中間の、それほど単純ではないけど全体像に関わらない部分では、自分でコードを書くことで、全体像と自動化・一般化の両方を改善するより良い方法を常に見つけられる。だから、AIに任せたいと思うコードはほとんどないんだ。ほとんど全てのコードは、ソフトウェアの未来か、開発者としてのスキルを向上させるものだからね。でも、もしかしたら俺は同じ場所で長く働けて恵まれてるだけなのかもしれない。もしコードを持ち出せなくて、常にゼロから始めなきゃいけないなら、違う意見だったかもね。
わかる。AIにアプリ全体を書かせるのは、バンドの曲をAIに作らせたり、自分で録音しなくて済むようにオーディオを生成させたりするのと同じだよね。もし自分で曲を書いたり録音したりする才能がないなら、本当のミュージシャンとは言えないでしょ。音楽理論についてちょっとした質問があって、すぐに答えが欲しいなら、AIは役に立つけどね。
AIの助けを借りて作ったプロジェクト、ぜひ見たいな。リンクを共有してくれる?
「私たちが書くコードの多くは、スキルが低く影響も少ないけど、必要で手間がかかるものだ。そのほとんどは非常に基本的な定型作業で、機械が生成したのか人間が書いたのか区別できない」って言うけど、本当にそうかな?それって、ちゃんとしたソフトウェアエンジニアリングをすることを拒否してるだけじゃない?機械に任せて、抽象化の階段を上がろうとしてる。泥沼みたいだって言う人たちを見てきたけど、彼らは簡単なスクリプトを書くためにawkを学んだこともなければ、エディタの使い方を学ぶ代わりに、メモ帳でやっていたのと同じパターンを使ってるんだ。俺は、LLMが良い基本的なものを生成してくれるのを祈るよりも、なぜ俺たちが基本的なことに時間を費やしているのか、一度立ち止まって考える方が良いと思うね。
AIとプログラミングの関係で、多くの開発者がAIを便利に使ってるのに、HNではAI批判が多いのが不思議だよ。メディアも「アンチAI」が優勢で、実際AIを批判するような発言はほとんどないんだ。AI企業、AI批判、そして静かにAIを活用してる人たちの3つのグループがいるけど、もっとAIを便利に使ってる人たちが声を出してオープンな議論ができるようになるといいな。antirezの経験談も参考になるよ: https://antirez.com/news/154
コードへのロギング追加はLLMに任せない方がいいと思うな。ロギングってのは何が起きたかのレポートだから、的確で役立つ情報が必要なんだ。LLMのユースケースは「何をするか」を説明するけど、「なぜそれが重要か」が肝心だよね。目的がないと、ただのおもちゃになっちゃうよ。
全く同感!AIが仕事を変えるのが楽しみだよ。今はAIをうまく使って、高品質な出力を得ることに注力してる。プロジェクトの構成やドキュメントが超大事だね。1年後には、僕はTLみたいに複数のAIエージェントを管理する立場になってるかも。IDEよりタスク管理が重要になると思うな。ジュニア開発者の成長機会が奪われるって話は言い過ぎ。高レベル言語が普及したときみたいに、単にスキルセットが変わるだけだよ。
AIツールの使い方には2種類あると思うんだ。
1) やりたいことだけ伝えるのは、ほぼギャンブルだよ。
2) やりたいことと、どうやるかも伝える方が、失敗することはほとんどないんだ。最悪でも、提示されたプランが自分の欲しい解決策じゃないってことがわかるからね。
AIを使うより、ワークジャーナルを書くのが時間のいい使い方だと思うんだ。コードじゃなくて、箇条書きのメモみたいな感じ。ドキュメントじゃなくて、オープンなマインドマップみたいに、やったこと、やること、疑問なんかを書き出すんだ。Obsidianを使ってるけど、ポストイット数枚分くらいがちょうどいいかな。
モデルには「事前情報」があって、それがコード生成のやり方を決めるんだ。もし作りたいものがモデルの事前情報と合ってれば、宣言的な言葉で簡単に動くソフトができるよ。でも合ってないと、AIはすぐに迷走しちゃうから、短いプロンプトで「どうやるか」を命令的に、もっと具体的に指定する必要があるんだ。
ロギング付きコードは「自己報告」なんだ。logger.error(f”{job} failed”)
みたいなロギング文の追加は報告そのものじゃないし、LLMはこういうのを適切な場所に追加できるよ。なんで僕のプロジェクトを「おもちゃ」だと思ったのか全く理解できないな。ユーザーベースが拡大中で、競合に勝つために新機能が必要だからやってるんだ。
AIはもうジュニア開発者と全く同じ仕事を、同じ情報でできるようになってきてるよ。LLMにJiraチケットとコードベースを渡せば、プルリクエストをプッシュできるんだ。スプレッドシートは労力を減らすツールだったけど、LLMはすでにリモートのジュニア開発者を直接置き換えられるレベルに達してると思うな。
Cursorを仕事で使ってるんだけど、AIに「簡単な部分」を全部生成させると、自分でイチから全部書いた日よりも、なぜかすごく精神的に疲れちゃうんだよね。
AIがVimよりもっと簡単に生成できるような「つまらなくて簡単な」問題なんて、まだ見つかってないよ。
AIをジュニアとして扱うのは意味不明だね。なんで専門家じゃないんだ?
このペルソナ駆動のワークフローはすごく変に感じる。古いやり方に囚われてるみたいだ。
もっとコメントを表示(1)
どんなツールやワークフローを使ってるの?生産性が上がる、お気に入りの方法とかある?
これはHacker NewsのAIに関する一般的な集団思考の極端な例だね。Geohotは99.999%の開発者より優れてるのに、他の開発者たちがもっと基本的なことをやってるって理解できないみたいだ。これって一種の「専門家のパラドックス」だよね。みんなが専門家並みに賢かったら、そもそも専門家なんて存在しないわけだし。俺はAIみたいに、自分で作ったコードベースを説明できなかったり、一貫性を保てなかったりする開発者にたくさん会ってきたよ。例えるなら、宇宙航空エンジニアがキンダーエッグのおもちゃを設計する人が流体シミュレーションの仕組みを知らないなんて信じない、みたいな感じかな。
>Hacker NewsのAIに関する一般的な集団思考
これには驚いたな。俺の視点だと、コメントを読んだりトップに上がってくる投稿を見たりすると、Hacker News全体としてはAI技術にはかなり強気に見えるけどね…。
Hacker Newsには、AIコーディングを誇大宣伝する声の大きい少数派か、ステルスマーケティングがあるのかもしれないね。個人的には最新のAIをいつも試してるけど、結局使わなくなっちゃうんだ。だって、むしろ作業が遅くなるからさ。
時間とともに変わってきてるよ。数年前にCopilotが出た時は、GitHubのコードベースで学習してるってことでみんなすごく反対してたけど、今はもっと支持する声が増えてきてるからね。
認めたくないけど、Hacker Newsも他の多くのプラットフォームと同じような特徴があるんだ。エコーチェンバーとか集団思考とかね。何度もそれを見てきたよ。Hacker Newsの参加者たちは(一般的に言って)、AI、Crypto、HFTに反対してるんだ。俺はこれら3つのうち2つの業界で働いてたから、直接経験があるんだけど、内部の人間からすると、平均的なコメントはこれらのトピックに関して誤情報が多いってのが俺の基本的な見解だね。
自動運転の会社を設立した人にしては、すごく矛盾してるように見えるな。もしAIが、すごく制約された問題空間であるコードを書けないとしたら、どうやって車を運転させるつもりなんだ?
俺は航空宇宙で働いてるけど、信じてくれ、航空宇宙エンジニアの中にもダメなやつはいるよ。でも心配しなくていい。会社はそういう奴らを被害を出さない場所に配置するんだ。ほとんどはマネージャーになるけどね。
いや、筆者は記事のかなり早い段階でちゃんと説明してるじゃん。
>AIが多くの一般的なプログラミングワークフローで機能する唯一の理由は、それが一般的だからだ。新しいことをしようとする途端、基盤となる言語と同じくらい冗長になる必要がある。
君はPS3やiPhoneをハッキングしたティーンエイジャーが低レベルなシステム解析ツールを作ったのを知らないのか?10年前に自動運転ソフトウェアを書いた人たちも知らないのか?何も知らないくせに、なんでこんな記事を書いたんだ?
僕もこんなことできたはずなのに、やらなかっただけの人をたくさん見てきたよ。大胆さもスキルだけど、ここでは純粋な技術力の話だよね。別の開発者が自作の自動運転ソフトを書いてたけど、実用にはならず、ただの腕自慢だった。で、Georgeが作った製品で、君が実際に使ってるものって何?
つまり、僕の理解が正しければ、君は彼がやったことをやらなかった人をたくさん見てきたってこと?これって全然説得力ない議論だよね。
>彼がやったことをやらなかった人たちをたくさん見てきたってこと?
そうだよ、だって彼らが実際に使われるソフトウェアを開発しているのを見たからね。彼と同じように、すごいと言われるプロジェクトでも誰も使わないものをいくつか見た。これは主観的なものだけど、Damien Hirstの途方もなく高価な作品を見て、僕が何も感じないのと同じだ。コンセプトを理解しても、結局「だから何?」って思っちゃうんだ。
僕のことや僕の人生について何も知らないくせに、GitHubプロファイルに感銘を受けなかったという理由で僕を侮辱するなんて。なんでそんなこと言う必要があったの?
上のコメントに関して、より適切な比較対象は「全人類」対「全開発者」だね。もし「全人類」を分母にするなら、彼は簡単に上位1%か0.001%に入るだろうね(彼の仕事はあまり追ってないけど、優れた開発者であれば世界人口のトップ1%には入るはずだよ)。
ありがとう、もしかしたらきつい言い方だったかもしれないけど、それが僕の一般的な感想だ。良い開発者であること自体が高いレベルだよ。すごいと言われるプロジェクトを始めても何も実現しないというのは、ほとんどの有能な開発者には、そんな余分なエネルギーがない贅沢なことなんだ。
Bitcoinの初期には、プログラムでトランザクションを送ることができたんだ。僕はjson-rpcを使ってノードと通信する独自のJSライブラリを構築したよ。Geohotはトランザクションをゼロからブロードキャストする様子をライブストリーミングしてた。それに対して彼の知識レベルを尊敬するね。さらに彼は毎日使ってる製品であるcommaも作ったんだ。
Geohotが99.999パーセンタイルの開発者?マジか?
『プログラミングAIの最高のモデルはコンパイラだ。プロンプトとして”コード”を渡すと、コンパイルされたコードが出力される。』だって?マジかよ。
プログラミング言語、つまり”コード”は、コンパイラに意図を簡潔に伝えるために特別に設計された言語だよ。
彼の言ってるポイントが理解できないなら、もっとこの分野について勉強する必要があるね。
まさにこれだね。
彼の、自分の分野での卓越性が、日々の仕事で何とかやっていきたい99%の人たちの視界を狭めてるんだと思う。
今どき、どれだけの開発者がコンパイラを直接扱うんだ?
みんなコードを書いて、赤線直して、プッシュして、祈って、パイプラインが通るのを待つだけだよ。
LLMはきっとこのプロセスで神になるし、今使ってるのがダメでも、別のLLMに頼めばいいんだから。
この記事には色々と問題があるよ。
まず、『AIコーディングの最高のモデルはコンパイラだ』って主張についてだけど、コンパイラは形式言語を仕様に基づいて別の言語に決定論的にマッピングする。LLMコーディングツールは、制約(テスト/型/リンター/CI)の下でコードを検索、生成、繰り返し編集する『検索ベースのプログラムシンセサイザー』なんだ。
だから、コンパイラができないような、実際のリポジトリでの問題解決(例:SWE-bench Verified)もできるんだよ。ベンチマークでもトップエージェント/モデルがGitHubの実際の課題の大部分を解決してるのは、コンパイルじゃなくて合成とツール使用の証拠だ。
次に、『プログラミング言語は英語だ』って話だけど、ちゃんとしたワークフローは『ただの英語』じゃないんだ。リポジトリのコンテキスト、単体テスト、型付きAPI、JSON/関数呼び出しスキーマ、diff、エディタツールを使うんだよ。『プロンプト』はしばしばコード+テスト+仕様で、英語は接着剤に過ぎない。著者は一番弱いインターフェースを攻撃してるだけで、実際にみんながこれらのツールでどうやって開発を進めてるかを理解してないね。
第三に、非決定性だって失格じゃないんだ。ファザー、検索/最適化、ヒューリスティックを用いたSAT/SMTみたいに、多くの効果的なエンジニアリングツールは確率的だ。決定性は外部の仕様、つまり単体/統合テスト、型システム、プロパティベースのテスト、CIゲートから来るものだよ。
『LLMが人気なのは言語/ライブラリが悪いからだ』ってのは間違った二分法だよ。RustやTypescriptみたいに言語は改善されてるけど、それでもLLMはAPIルックアップ、クロスリポジトリの読み込み、定型作業、マイグレーション、テスト作成、リファクタリングなど、検索と合成が輝く領域で役立つからね。これらは補完的な力であって、代替品じゃないんだ。
最後に、建設的な代替案が提供されてない。『もっと良いコンパイラ/言語を作ろう』ってのはいいけど、現代のチームはすでにAIと組み合わせて価値を得てるんだ。仕様ファーストのプロンプト、テストでゲートされた編集、型付きSDKの足場、自動生成テスト、CIで検証されたリファクタリング、リポジトリを理解するエージェントとかね。
AIコーディングとLLMについて考えるもっと良い方法は、それらがコンパイラじゃないってことだよ。それらは君の制約(型、テスト、CI)に導かれた『確率的コードシンセサイザー』なんだ。リポジトリ、検索、ツールチェーンに接続されたジュニアのペアプログラマーのように扱うべきだよ。魔法の英語コンパイラとしてじゃなくてね。
著者だけど、このコメントには同意だよ。でも、もっとこんな風に書いてたら、僕のブログ記事はそこまで注目されなかっただろうね。
『LLMコーディングツールは検索ベースのプログラムシンセサイザーだ』って、僕の考えではこれもコンパイラなんだ。ほとんどのコンパイラは検索が少なすぎて、代わりにヒューリスティックを選んでると思う。統合された実行環境がないからってことが多いけど、考え方は同じだよ。
『多くの効果的なエンジニアリングツールは確率的だ』って言うけど、SATソルバーがランダム性を使って解決時間が変わったとしても、結果の正しさは変わらないよね。それにファザーみたいなものはテストで、いつもベストエフォートなものだ。プロダクションでファザーがデプロイされてるのなんて見たことないよ。
『決定論は外部の仕様とテストから来る』って言うけど、僕の夢は『どうやってやるか』じゃなくて『何をやるか』を指定できる言語だよ。Halideのスケジュールのコンセプトみたいにもっと汎用的にね。コンピュータが『どうやるか』を考えるのに時間を使えばいい。そして、これこそAIがもたらすツールの種類だと思う。LLMを使うかもしれないし、別のものかもしれないけど、重要なのはかなり厳密な仕様が必要で、その仕様自体がプログラミングだっていうことだ。仕様はすべての振る舞いを指定する必要はなく、制約ベースでもいい。
僕はAIに全然反対してるわけじゃないんだ。もし君がこのコメントに書かれてるレベルで、ツールとして、その強みと限界を理解してAIを使ってるなら、ワークフローにとって素晴らしい追加になると思う。僕が反対してるのは、それが魔法の英語コンパイラだっていう、世間一般の認識だよ。
この議論全体から僕が学んだ重要な洞察はこれだね。
コンパイラはソースを受け取って何らかの出力にマッピングする。コンパイラの詳細はどうであれ、これはアトミックな操作で、ソース(未変更)と成果物が残る。
これらの『エージェントワークフロー』は明らかに違うんだ。
プロンプトをアウトプットにマッピングするプロセスは同じだけど、これらのエージェントワークフローは破壊的だ。ソースを修正するんだよ。
コードベース全体を自由に扱えて、テストも仕様も実装も修正するんだ。
これはまだみんなが苦労してるコンセプトみたいだね。もし仕様が不十分に定義されてて、コンパイルプロセス中に動的に更新されるなら、結果は単なる非決定性以上になる。
時間が経つと、仕様自体が非決定性になるんだ。
だから監視されていないエージェントは『暴走する』んだよ。仕様が実行できないからじゃなくて、時間が経つにつれて仕様がずれていくからだね。
コンパイラではそんなこと起こらないから。
君のブログ記事では、『ほとんどの人は真実を見つけることには関心がなく、自分に都合の良いことしか気にしない』って言ってたのに、君のHNコメントでは『このコメントには同意するが、ブログ記事は注目を集めるために別の書き方をした』って言ってるよね。
結局、君も真実には関心がないみたいだね。
これは釣りだよ。このコメントとブログ記事はほとんど同じことを言ってるんだ。微妙な部分で議論してるだけだね。
『コンパイラ』じゃなくて、『制約に導かれた確率的コードシンセサイザー』ってこと。
後者の方が技術的にはより具体的で正確だけど、1語じゃなくて7語だ。そして『コンパイラ』という言葉は後者を包含すると理解されてるし、ほとんどのコンパイラがそうじゃないとしてもね。どっちも『ワークフローのツール』だよ。
彼は、より多くの人に届くようにすることで真実を伝えてるんだよ。
みんなは「English as a programming language」をバカにするけど、俺はAIプログラミングの価値はそこにあると思うな。LLMが理解できるくらいデザインと制約を明確に表現すれば、誰でも理解できるし、今までよりもっと保守しやすいコードベースになるんだ。
問題は、プロンプトを捨ててコードだけ残す人がいることだね。コードが somehow 価値があるみたいに。それって、みんながバイナリだけチェックインしてソースコードは捨てるようなもんだよ。
AIプログラミングの正しいやり方は、English がプログラムを定義して、生成コードはコンパイラの出力と同じ価値と考えること。つまり、実際に動く成果物だから重要ではあるけど、デバッグ以外で細かく見ていじくるのは時間の無駄。これは時間がかかるだろうけど、いずれこれが唯一のコードの書き方になるはずだよ。(注意:俺はAIプログラミングツールを開発してるから、偏見があるかもしれないね)。
もし君が、自分でやるより短い時間でジュニアプログラマーに何をすべきか説明できるなら、AIから利益を得られるだろう。でも、プログラミングのワークフローやツールを根本から考え直す必要があるよ。
プロンプトは、コードみたいに価値のあるオブジェクトにはならないと思うな。Mira Muratiが決定論的な推論のアプローチをスケールさせない限り、プロンプトは脆くて一時的なものだよ。たとえ成功したとしても、LLMのアップデートで長期的に見ればプロンプトはかなり役立たなくなる。
今、保持すべき唯一の有用なオブジェクトは、DSPyプログラムと良質な例だね。例はモデルやアーキテクチャを超えて転用できるから一番価値があるよ。
スレッドでコーディングアシスタントをジュニアプログラマーと比較してる人が何人もいたけど、俺は同意しないな。唯一の共通点は、指示したことをやることだけだよ。それ以外だと、コーディングアシスタントはコードベース全体をコンテキストに保持したり、パターンを推論したり、人間より速くボイラープレートを生成できる。その能力は人間にはないよね。それに、ジュニアと違って AI には自主性がないから、比較は複数の点で成り立たないよ。
素晴らしい返信だね、完全に同意するよ。
記事に問題があるのは当然だよ。GeohotことGeorge Hotzが書いたんだからね。
もっとコメントを表示(2)
昔のGeohotの投稿には、魅力的で示唆に富む独創的な考えがあったけど、この記事は全然違ったね。
これはAIラボがAIを売って煽っている根本的な問題につながると思うな。みんな、AIは実際に考えているって言うけど、俺はAIツールを使ったり開発したりする者として、AIをパターンマッチングの次トークン予測器として扱った方がはるかに役に立つって感じるよ。もし誤ってコンテキストに詳細を入れすぎると、急にAIは汎用性を失うんだ。それってパターンマッチングと次トークン予測みたいだよね。
これは「AI」技術がめちゃくちゃ良いツールにならないってことじゃないよ。でも俺は、これは検索と最適化の量が増えて、真似するパターンが増えたから来るものであって、どんな魔法のような「AIがコーディングしてる」わけじゃないって主張するね。
* Claudeに基本的なCRUD APIを作るように言えば、1分で作成してくれて、1時間くらい節約になる。
* GitHubに百万回もコーディングされてるアルゴリズムの実装が必要なら、AIに頼めば正確に動く実装を出してくれる。
AIをその得意分野だけで使えばすごくうまくいくけど、そうじゃないと最悪だね。
これは知性レベルの問題だと思うな。知識じゃなくて、知性だよ。俺たちは特定のタスクに必要な思考や推論の量を過小評価しがちだ。時々AIは俺たちを驚かせて、すごく思慮深いことをするよね。それはよく魔法みたいに感じるよ。
CRUDもボイラープレートも、ツール側の問題だとも言えるよね。でも、AIでしかできないこともたくさんあるよ。
俺のテストは、フルトレースレベルのロギングを有効にすると、すごく冗長になるんだ。人間が100行のテキストの中から関連部分を解析するのに、結構な時間がかかるんだよ。
AIに「テストを実行して根本原因を特定して」って言うだけで十分うまくいくから、今ではそれがいつも最初のステップだね。
昨日Opusを使ってエラー診断したんだけど、間違った方向にたくさん導かれたり、意図しない悪い結果をもたらす修正を提案されたりしたよ。もし俺が注意深くガイドして修正していなかったら、バグは直らなかったどころか、もっとひどいことになってたはずだ。俺が言いたいのは、ドメイン知識と考える力がないと、たぶんひどい目に遭うってことだよ。でも、AIってそういう風には売られてないよね。
もちろん、君の言うことにも一理あるよ。でもビジネスは、誰が大きくて誰が小さいか秩序を再定義できる新しい技術に必死なんだ。短期的なリターンを追いかける何十億ものお金が動いてる。ファンドマネージャーは、流行に乗らなければクビになるし、CIOやCEOもAIに乗らなければクビになる。ただの核軍拡競争だね。誰も得しないけど、相手がやってるから自分もやらなきゃいけない。
こう考えてみて。車が道路に出る前、人々は同じくらい幸せだった。車が登場して、都市は車のために再設計され、建物は数マイル離れて建てられ、何マイルも通勤するのが当たり前になった。もう車は役に立たないなんて言えないよね。なぜなら、車の周りの状況が変わって、車が基本的な必需品になったからだ。
AIも同じことをするよ。俺たちが働く文脈を変えるんだ。みんながAIを使う(そして車も)ことを期待する。それは、強制されたものだけど、基本的な必需品になるんだ。
さらに言えば、科学技術が生み出すもののほとんどは、人間にとって基本的な必需品じゃないんだ。文脈が歪められて、それが基本的な必需品になる。テクノロジーソリューションは、それが解決すると主張する問題を作り出すんだ。その問題は、ソリューションが登場する前には存在しなかった。それがビジネスの核心的な原動力なんだ。
METRのAIコーディング調査、ヘッドラインばっかり注目されるけど、データは特定の経験者一人の話だし、統計も怪しいよ。技術も古いし。あと、実際より20%楽に感じられるってのも重要だよね。
METR調査は良いけど、AIコーディングがダメって決めつけるのは早すぎ。僕の経験では、AIはまるで新メンバーで、最初はペースが落ちるけど、数ヶ月で使いこなせるようになる。あらゆる言語を話し、テストもアイデア出しも得意。ハイプにも意味はあるけど、盲信は危険だよね。
この研究データを見ると、開発者が15分節約したと思ってるのは調査やテストで、実際にはAI待ちやレビューで余計に時間使ってたんだって。スピードアップした唯一の人は、Cursorの経験が1週間以上あった人だけだったんだよ。
AIコーディングが、集中力低下でプログラミングを諦めかけてた僕を呼び戻してくれたんだ。Claude Codeの働き方が僕のやり方に似ててね。コードを読んだりアーキテクチャを考えたりするのは得意だから、AIにコーディングや些細なデバッグの退屈な部分を任せられるようになった。自分一人より遅くても、集中できないよりずっとマシだよ。
僕も同じ気持ちだよ。30年以上コーディングしてるけど、何を作りたいか分かっても、昔より時間を見つけて集中するのが難しくなったんだ。
AIコーディングの意見は経験豊富なエンジニア目線が多いけど、僕みたいなプロじゃない人にはめちゃくちゃ価値があるよ。何日もかかったことが半日でできるし、眠れない夜にスマホでコード書いてCodexに送って朝テストできるなんて魔法みたい。ベストなやり方か心配することも、作業に取り掛かる恐れもなくしてくれた。批判はマーケティングの誇大宣伝に向けられてるってのは分かるけどね。
僕の意見は冷めてるけど、AIはやっぱりすごく便利だよ。パターンを認識してくれるから、既存のテストスイート作成や、思いつかなかったテストケースの提案に役立つんだ。完璧なLispコードベースじゃなくて、読みやすくて定型文が多い現実の仕事にはね。
テストの有用性ってさ、契約を強制するものでしょ?ドメインに関わることで実装じゃないんだ。テストの数より何を検証してるかが大事。テストするためにコードを見てたら、それは間違ってるよ。
テストの有用性は、定型文の節約と、思いつかなかったテストを見つけることにあるんだ。でも僕もコードはしっかりレビューするよ!退屈なテスト作成作業が、コードレビューみたいになるんだよね。前回も間違いがあったから修正したよ。
テストコードに定型文はいらないよ。ハーネスやユーティリティ、フィクスチャにリファクタリングするべきだね。
AIは勝手にスマートにやってくれるわけじゃないけど、これは良い目標だね!テストにはAIがやるべき定型作業がたくさんあるから、AIを使えばどれをどう使うかを知るだけの作業に変わるってことだろ。
反対じゃないけどさ、俺の経験だとテストって使い捨てみたいなもんだから、合格させること以上にそんなに開発に労力かける価値はないって思うんだよね。
AIは20%生産性が上がったように感じさせるけど、実際は19%遅くするってどうよ?これにあと何十億ドルを無駄にする気?Adderallも似てる。生産性が上がった気にさせるけど、研究(https://pmc.ncbi.nlm.nih.gov/articles/PMC6165228/)ではせいぜい少し改善する程度で、認知能力は低下するってさ。
私はADHDで処方薬を飲んでるけど、それらは私を速くしたり賢くしたりするんじゃなくて、ただ’仕事ができるように’してくれるんだ。薬なしだと何時間も集中できないし、どうでもいいことに夢中になってしまう。もし20%知能が落ちたとしても、それだけの価値がある。納期を守って退屈なコードでもちゃんと終わらせられる普通の開発者でいたいね。
私の家族には子供の頃ADHD(当時は多動症って呼ばれてた)だった人がいるよ。彼は失読症でもあるんだ。ADHDは早く見つかって治療されたけど、失読症は違ったから、彼は人生の大部分で自分をバカだと思ってたんだ。でも失読症を知って治療し始めてからは、Intelでほとんどのキャリアをエンジニアとして過ごしてるよ。
ADDの薬はADDの人だけのもので、健康な人が使うものじゃないってことを理解しないとダメだよ。過剰な神経伝達物質は逆効果になることもあるしね。ちゃんと使えばその効果は研究でしっかり裏付けられてるんだから。
13人の研究なんて、Adderallみたいなものを評価する際には、すごく重要な注意点だよね。
小規模な研究と効果だと、望む結果が出るまで何度も同じ”研究”を繰り返せるから、科学がまともな研究じゃなくて疑似科学に近づくのは面白いよね。
じゃあ、ADHDじゃない人がそれを飲んだら生産性が劇的に向上するって証明する研究は簡単に見つかるはずだよね。
ADHDじゃない人がAdderallとかを飲むと認知能力が向上するって証明する研究は簡単に見つかるし、その逆を証明する研究も同じくらい簡単に見つかるよ。元のコメントは全くその通り。最近は何でも裏付ける証拠が見つけられるよね。https://pmc.ncbi.nlm.nih.gov/articles/PMC3489818/table/tbl1/