LLM生成コードを手動で再入力することで認知的負債を防ぐ – Hacker Newsディスカッションからの洞察

LLM生成コードを手動で再入力することで認知的負債を防ぐ

Ankur Sethiは、LLMにチャットでコードを生成させ、その後自分で毎行を入力することで、個人プロジェクトにおける認知的負債を回避しています。モデルがファイルを直接編集するのではなく、このようにしています。

LLMによる認知的負債の問題

LLMを使って一度に機能全体を生成すると、作者は不満足かつ方向感覚を失い、AIが生成したプルリクエストをレビューするのは楽しくありません。彼は業界がすぐに返済しなければならない認知的負債を蓄積しているのではないかと恐れています。

ソフトウェア業界は、すぐに返済しなければならない大きな認知的負債を抱え込んでいると恐れています。やがて、私たちのデジタルインフラストラクチャの大部分がどのように組み立てられているのか理解できなくなる時が来ます。私は個人的に業界の流れを変えることはできないかもしれませんが、少なくとも私が世に出すソフトウェアを完全に理解できるようにしたいと思っています。それ以外は職業上の失策です。

手動再入力ワークフロー

著者はLLMに明示的に指示し、リポジトリを変更せずにチャットでのみ提案された編集とコマンドを表示させます。

このプロジェクトに組み込まれるコードの毎行を理解したいです。私が明示的に依頼しない限り、プロジェクトファイルを作成、編集、移動、名前変更、削除しないでください。代わりに、チャットで毎回提案された編集を表示して、私が手動で入力できるようにしてください。

私が明示的に要求しない限り、プロジェクトファイルを変更したり、依存関係をインストールしたり、リポジトリの状態を変更するコマンドを実行しないでください。代わりに、チャットでそれらのコマンドを表示して、私が手動で実行できるようにしてください。

私は経験豊富な開発者です。明示的に依頼されない限り、構文、API、プログラミングの概念、実装の詳細について説明しないでください。

各行を入力することで、彼はコードが既存のコードベースにどのように適合するかのメンタルモデルを構築し、 unfamiliar なAPIを調べ、幻覚や悪い設計選択を検出できます。

LLMが生成したコードの毎行をエディタに手動で入力することで、それがどのように機能し、既存のコードベースにどのように適合するかのメンタルモデルを構築しています。APIやアルゴリズムが理解できない場合は、調べるか、LLMに説明してもらうために立ち止まることができます。

コードを自分で入力することでペースを落とすことになり、LLMが生成した幻覚や悪い設計選択に気づきやすくなります。私は進行しながらコードをきれいにし、再編成し、リファクタリングし、コメントを追加し、一般的に自分の好みに合わせて調整することができます。

このワークフローはまた、コードベースの空間的マップを作成し、今後の変更やLLMへのプロンプトを容易にします。

手動入力の利点

著者はこのアプローチがLLMに完全に委任するよりも遅い(約2倍の速度向上ではなく10倍)と感じていますが、生産性よりも深い理解を重視しています。

このようにLLMを使用すると、LLMを全く使用しない場合よりも速く作業できますが、機械に考えさせることを厭わない人々ほど速くはありません。10倍速ではなく、おそらく2倍速しか出ません。しかし、速度において失うものについては、コードの深い理解において得るものがあります。

彼はこの習慣を、プログラミングを学ぶ際に書籍やフォーラムの例を手動で入力するという伝統的なアドバイスに例えています。

LLM生成コードを手動で私のコードベースに入力することは、まさに同じ学習プロセスのように感じます。LLMと作業する最も効率的な方法ではないかもしれませんが、私は生産性よりも理解を重視しています。

コミュニティの反応

Hacker Newsのコメント者は、支持から批判までさまざまな意見を述べ、代替戦略も提案しました。

支持または類似の実践

  • @wahern: "昨日も良いアドバイス、今日も良いアドバイス、明日も良いアドバイス。 … 手動でコードを入力することで、全体像を考える時間と空間が得られます。"
  • @bandrami: "そういえば、Stack Exchangeの時代には、システムに何を追加しているのか理解するために、見つけた答えをいつも手動で入力していました。"
  • @andai: "ゼド・ショーの方法!"
  • @FailMore: SmallDocsを使ってLLM生成コードに触れ続けていると述べています。
  • @sltr: 生成効果を挙げ、入力が知識の定着を改善する理由として挙げています。
  • @twoquestions: "これが私が今Electronを学ぶためにしていることです。基本的にOpusにチュートリアルを書いてもらい、私が作りたいアプリケーションを書かせ、その途中で一部を変更しています。"

アプローチへの批判

  • @npras1: "LLM生成コードを手動で再入力するのは大きなノー。しかし、手動でコードを入力し、LLMに任せないのは大きなイエス。ただし、それは自分の脳が生成したコードである必要があります。"
  • @estebarb: arxivの論文を引用しています:"学生がこれらの出力を自身の reasoning や critical engagement の代わりに頼ると、学習プロセスは根本的に損なわれます。本物の学習は、意味の能動的な構築、知識の統合、コンテンツへの反省的な関与を必要とします。"
  • @f311a: "これは楽しくないように聞こえます。サイドプロジェクトでは手動コーディングをしたほうがいいです。もっと学べます。手動で入力するのは学習に非効率的です。微積分の解答を手動で入力しようとするようなものです-そこから学ぶことはありません。"
  • @petcat: "これは、『数字で塗りつぶす』ような miserable キャリアです。人々がプロの仕事やプログラミングの趣味に創造的な考えを巡らせるのを面倒がっているからです。"
  • @a2128: "かつて他人の宿題をコピーし、オンラインの書評をコピーし、解答シートを使って課題を完成させていた私として言えますが、この戦略は認知的負債を蓄積させることが長らく知られており、防ぐものではありません。"

代替案の提案

  • @smegma2: "これはまあまあな解決策のように見えますが、逆にやるのはどうでしょうか? スキャフォールディングとコードの一般的な形(クラス、インターフェース、関数シグニチャー)を書き出し、LLMにそれを埋めてもらう。"
  • @reacweb: "小さなプロジェクトでLLMを使ってコードを生成し、それを手動で大きなプロジェクトにコピーする。"
  • @overthenexttwod: LLMに思考をアウトソースすると、自分でコードを書くよりも弱いメンタルモデルになると主張し、LLMを生産性向上のためのツールではなく、独立したエージェントとして導いていくべきだと提案しています。
  • @jruz: $20プランにダウングレードし、LLMがコードを書かないように質問だけを行う方法を説明しています。

結論

著者の手動再入力方法は、退屈なタスクにLLMの助けを借りながら理解を保つことを目的としています。Hacker Newsのディスカッションでは、この技法が伝統的な"タイプして学ぶ"の現代版として一部の人に共感されていますが、他の人にとっては非効率的または不要だと見なされ、代わりに自分でコードを書き、LLMをレビュー、スキャフォールディング、または質問回答にのみ使用することを提案しています。

Sources

関連