HN 日本語サマリー

← 一覧へ戻る
プログラミング

コードではなく、アイデアをコントロールする

Control the Ideas, Not the Code (antirez.com)

151 pointsby surprisetalk106 コメント

要約

著者は、AI時代においてプログラマーがコードそのものに固執するのではなく、ソフトウェアのアイデアや設計思想をコントロールすることに注力すべきだと主張しています。AIはコード生成を効率化するため、コードレビューに時間を費やすよりも、新しいアイデアの創出や設計の検討に時間を割くことが、より価値のある仕事になると説いています。これは、過去のソフトウェア開発における「スロップ」(粗悪なコード)の蔓延を指摘しつつ、AIを活用することでより本質的な開発が可能になるという見方に基づいています。

全文翻訳

コードではなく、アイデアをコントロールする antirez 1時間前. 16083 views. このブログの過去の履歴を見てください。AIを使ったプログラミングに関するブログ記事はたくさんあり、そのうちのいくつかは2024年1月(この記事のように: https://antirez.com/news/140)に遡ります。結局のところ、私は比較的評価の高いプログラマーです。古い人間が関連性を求めているかのように、常に「ループ」の中にいる必要はありません。最近Redisに復帰し、現在はコミュニティで好評を得ているローカルLLM推論用の新しいオープンソースソフトウェアも開発しています。なぜ私は、人々が聞きたくないことを言い続けるのでしょうか?なぜ私は、デフォルトで未来のプログラミングがどうなるかを発表し続けるのでしょうか?それは、私よりも準備ができていない、しばしば私よりも若い人々、そして私とは異なり、これらのことの多くが起こるのを見てこなかった人々への影響を軽減したいという衝動を感じるからです(2022年には、ChatGPTが存在する前に、今起こったことや、私が起こると信じている他の多くのことを予告する本を出版しました。ですから、エゴイスティックに聞こえずにこれを言えると感じています)。だから私のやり方はトリックなのです。人々はますますプログラミングがAIによって完全に変化していると感じており、どうすればよいのか、コードを主な成果物としてあまり見ずに、本当に全く異なる方法でコーディングを開始できるのかを知りません。彼らは自分の分野を裏切っているように感じています。だから私の意図は、「私を見てください、私はコードを書けますよ、AIの陰に隠れているわけではありません。それでも、物事は変わりました。それはあなたの弱さではありません。あなたがAIに毒されているわけではありません。それは単に、私たちの分野が信じられないほど*そして*痛みを伴う(しかし喜びにも満ちた)方向へと進化しているだけなのです」と言うことです。だからこそ昨日、Xで、多くのプログラマーは現時点で彼らが持つ可能性のある影響力よりも少ない影響力しか持っていないと信じていると述べました。私はそれを本当に信じています。そして、これは最終製品を求めるだけでコードを適当に書くことを意味するわけではないことに注意してください。ポイントは、ソフトウェアのアイデアをコントロールしているなら、コードそのものを見ることは最適ではなく、しばしば無意味であるということです。その理由は以下の通りです。 1. LLMのコードの冗長性を考慮に入れないとしても(これはほとんどの場合、それらをうまく指示できないことの結果でもあります)、今では大量のコードを生成できます。毎日5k行のコードをどのようにレビューするつもりですか? 2. LLMは局所的に最適なコードを書くのが得意ですが、大きなアイデアに関しては劣っています(しかし改善中です)。関数ごと、行ごとにスキャンすることに何の意味があるのでしょうか?代わりに、あなたが思い描いている設計をプロンプトし、時には「その部分の設計は正確にはどうなっていますか?どのように機能しますか?」と尋ね、それが正しいモデルかどうかを評価すべきです。それははるかに高速です。 3. 労働時間は8時間です。コードを読むということはトレードオフです。あなたは今日、あなたの仕事の最も重要な部分である、「このソフトウェアで何をしているのか?どのような新しい方向へ進みたいのか?」と自問自答することの、より少ない部分を行っています。また、新しいアイデア、機能、最適化のトリックを考えます。そして多くのQAを行います。 アイデアをコントロールする。Mythical Man Monthからこのフレーズを覚えていますか?さて、70年代の本は、2000年から2020年までに言われた多くのことよりも、現在のソフトウェア時代についてより多くのことを教えてくれます。なぜ今AIに反対する人々は、過去10年間のソフトウェアの状態にショックを受けなかったのでしょうか?AIが登場する前の近年、私たちが触れた「スロップ」(粗悪なコード)のレベルは信じられないほどです。もう一つ言います。スロップとは何でしょうか?DwarfStarでは、2つのLLM(DeepSeek v4とGLM 5.2)の推論を完全に自動化された方法で実装しましたが、試してみてください。単に「XYZを実装して」と言ってそれが動作するのを見ることはできないことに気づくでしょう。物事がどのように機能するか、最良の設計は何か、あるレベルのパフォーマンスを達成するにはどうすればよいかを理解する必要があります。その後、正確さのために実装を他のシステムと比較し、他の実装にはしばしばより多くのエラーが含まれていることを発見しました。さらに調査したところ、ローカル推論の世界は微妙なエラーに満ちており、それらが蓄積してモデルの出力にダメージを与えていることがわかりました。例えば、コンテキストが一定の制限を超えるとパフォーマンスが低下する原因となるアテンション実装の問題(例えば、本来よりも多くの作業を行う)などです。これは、非常に複雑で、急速に変化し、推論グラフでモデルが互いにわずかに異なるものが毎日リリースされるドメインの結果です。開発者にとっては不公平なゲームです。さて、AIはそれに大いに役立ちます。厳密なエンジニアリング(設計面)とテストが、手作業でGPUカーネルを書く(またはそれを読む)よりも*はるかに*優れているドメインはたくさんあります。では、その抵抗のほとんどがイデオロギー的なものではないと確信できますか?Matteo Collinaは昨日、私のツイートへの返信で私に尋ねました:「でも、RedisのためにAIが生成したコードをすべてチェックすると言いませんでしたか?」そしてこれは確かに良い質問です。はい、そうします。しかし、これは現時点では私が*必要*とすることですが、ほとんど無意味であると信じています。部分的にはGPT 5.5がリリースされたときからですが、今ではFableとGPT 5.6 Solでさらにそうです。はい、私はコードの書き方が気に入らない点を見つけますが、他のRedisコントリビューターが書いた他のRedisファイルを見ると、*はるかに悪い*ものがあります。それは彼らが良いコーダーではないからではなく、好みの問題だからです。私は非常にきれいにコードを書きます。なぜなら、それを読みやすくしたいからです。そのため、Redis Arraysの実装中に変更を行いました。Redisのソートセットの50%メモリ節約最適化についても、もう一度行っています。これはまもなくPRとして提出する予定です。しかし、これはもはや有用だとは感じていません。誰もこのコードを見るべきではなく、コードに含まれるアイデアだけを見るべきです。私はユーザーへの敬意からそれを続けました。Redisは現時点では一般的に有用なものであり、多くのプログラマーがファイルをオープンして手作業で変更するでしょう。しかし、もし私の手が空いていたら、何をするか知っていますか?レビューにかかっているすべての時間を、より多くのQAに費やし、次の最適化のアイデアを考え、それを適用し、LLMを使って各データ構造が人間が理解できる言葉で説明され、それが含むアイデア、実装のトリック、設計が記述されたDESIGN.mdファイルを作成します。それは将来、はるかに役立つでしょう。ソートセットを変更したいですか?ファイルを開き、設計を読み、アイデアを所有します。エージェントを開いて、適切なメンタルモデルで何をすべきかを尋ねることができます。これはコードをレビューするよりもはるかに役立ちます。FableとGPT 5.6によるソートセットのメモリ節約へのレビューは、私のレビューが明らかにするであろうよりもはるかに多くのエラーや微妙な競合状態を発見するでしょう。それでも私はそれをします。しかし、ほとんどのソフトウェアプロジェクトでは、これらすべてはもはや意味をなしません。代わりにアイデアのコントロールに焦点を当ててください。品質、テスト、そして出荷したいソフトウェアのアイデアを持つことに焦点を当ててください。世界は変わり、それは痛みを伴いますが、すでに完全に腐敗していたソフトウェア世界を改善する機会にも満ちています。若いプログラマーで経験が十分でなく、メンタルモデルを構築できないことについてだけ疑問があります。彼らが特定のコードがどのように機能するかを非常によく理解する必要があるかどうかは、まだわかりませんが、彼らはプログラムを書くことを学ぶべきだと信じています。しかし、LLMの出力をチェックすることが、彼らがすべき正しいことなのかどうかはわかりません。小さなインタープリタ、小さなデータベース、ハッシュテーブルなどを実装することを学ぶ方がはるかに役立つかもしれません。顧客のためにウェブサイトのJavaScriptの何かをレビューしますか?くそ、そんなくだらないものに時間を無駄にするな。