手でコードを書くほうが私は幸せです
(abhinavomprakash.com)- LLMベースのコード生成ツールを繰り返し使ったあと、直接コードを書くときに感じる没入感と楽しさをあらためて発見した
- コードを書くことは単なる生産行為ではなく、問題空間を理解し思考を磨き上げる過程であり、自動生成はそれを妨げる
- 自分が書いていないコードの正確性を検証することは難しく、直接書いてこそ文脈を内面化できる
- LLMを限定的に活用し、文脈は手動で与え、コードの一部修正やテスト生成にのみ使うことで、思考の主導権を保つ
- 生産性よりも思考の深さと幸福感を優先し、ツールが思考を妨げるなら警戒すべきだと強調する
LLMコード生成の利用経験と懐疑
- 何度かclaude-codeを使ったが、そのたびに憂うつさと無気力感を覚え、結局削除した
- 自動生成されたコードは「もっともらしく見える」が、自分の仕事の意味を失わせてしまう
- ツールの利用をやめるたびに、再びコーディングの楽しさを取り戻した
- コーディングは単なる実装ではなく、問題空間を探索し、失敗を通じて学ぶ過程である
- APIを本当に理解するには自分で使ってみる必要があり、ドキュメントを読むだけでは不十分
- コードを書く行為そのものが思考を具体化する手段
思考と正確性の関係
> "書かずに考えているだけなら、それはただ考えているつもりになっているだけです。" - Leslie Lamport
- 自分が書いていないコードの正確性を検証するのははるかに難しい
- 直接書く過程で問題の文脈を内面化するようになり、これはコード品質を理解するうえで不可欠
- LLMに依存するとこの過程を飛ばしてしまい、問題ドメインへの理解が弱まる
「Vibe coding」の中毒性と副作用
- LLMによるコード生成には、即時のドーパミン報酬を与える中毒的な性質がある
- 「プロンプトをもう少し修正すれば当たるはずだ」という錯覚を生む
- このやり方は思考の惰性を強め、脳を受動的にし、単純な作業ですらLLMに依存するようになる
- 例として、単純な find-and-replace 作業ですらLLMに任せた結果、かえって時間がかかった
- 生成されたコードが多くても、結局レビューと理解の責任は人間にあるため、むしろボトルネックになる
ツールが思考を形づくる方法
- 「ツールは中立ではない」という観点から、思考を妨げるツールは悪いツールである
- 知識労働者の中核的な能力は深く考える力であり、それを妨げる技術には警戒が必要
- もちろんLLMを完全に排除するのではなく、意図的かつ限定的な方法で活用している
- 必要なファイルだけをコピーして文脈を与え、コードの一部修正やテスト作成にのみ使用する
- こうすれば生成される変更範囲は小さく、コードベース全体の構造も自分で把握できる
- 受動的な生成ではなく「思慮ある生成」へと切り替わり、脳の活動性とflow状態を維持できる
幸福と生産性のバランス
- 人生は短く、幸福を優先すべきだ
- 機能全体を自動生成すれば生産性は上がるかもしれないが、実存的な不安や憂うつ感を招くなら、長期的には非生産的である
- 自分の感情に共感する人もいれば、そうでない人もいると認めつつ、
「違う選択をすることを恐れないでください」
14件のコメント
電卓があっても、手で計算したり暗算したりするのを好む人もいるものです。
私は、非常に複雑でビジネスロジックの中核に当たる部分を自分の手で直接書いてみて考え、それをAIエンジニアたちに落とし込んでいくようなプロセスは、ひょっとすると生産性の向上に役立つのかもしれないと慎重に考えています。数学者たちも電卓のような道具は使いますが、核となるアイデアを考えるときにはメモもたくさん取るじゃないですか。
スマホでワンショットの写真が撮れる時代ですが、それでもなお何時間もかけて絵を描く人がいる時代でもありますね。違うのは過程と方向性であって、正しいか間違っているかの問題ではないように思います。
企業が目指す方向性と真っ向から衝突する話にしか聞こえませんが..
個人の幸福や満足感という理想は尊重しますが、労働を提供してお金を受け取る職業という観点では、不適切なマインドのように思います。
誰かが長期的なメトリクスを無視して短期的なメトリクスだけを追いかけているのを見ると、まったく関係のない人であっても、通りすがりに「そういうものじゃないのに」と口を出したくなる気持ちになると思います。
では、自分が会社と苦楽を共にし、大きく貢献し、会社で重要な役割を果たしていると考えているプログラマーなら、なおさらそう思うのではないでしょうか。
本当に開発がうまい実力のある開発者たちは、むしろバイブコーディングを楽しんでいるということですよね...
私の話ではなく、リーナス・トーバルズやロバート・マーティンのような人たちです
Pythonスクリプトにだけ使っていました。楽しんでいたとまでは言いにくいと思います。
リーナス・トーバルズに関する記事を探してみると、趣味用途で使っていて、Linuxの開発にはまだ使っていないようです
Hacker Newsの意見
コーディングを木工にたとえている。機械が家具を作れても、なお手作業で作る人はいる。手書きコーディングも同様に楽しみのためにはできるが、今後は職業としては難しくなるだろう
私は長期的に最も速く、最も良い結果を出す方法を選ぶ。今はneovimと手書きコーディングがその役割を果たしている。自分でタイプしながらプロジェクトを深く理解すれば、長期的にはより速く機能を出せる。学びにならない仕事はLLMに任せるが、そうした仕事が多いのでLLMの利用率は高い
vibecodingの問題は、「気分がいい」という感覚が実際の成果を曖昧にしてしまう点だ
「幸せだからといってコード生産量が200倍になるのか?」という皮肉な問いを投げる
AIの価値は確かにある。たとえば300カラムのDBテーブルをRustのstructに変換する際、15語のプロンプトで900行のコードを生成した。こうした反復作業にはAIが完璧だ。しかし、すべてを任せたいわけではない。気持ちよく使える範囲でだけ使っている
「LLMがコードを代わりに書いている間、私は何をするのか?」という問いが核心だ。LLMは完全に任せられず、横で面倒を見る感じだ。ジュニア開発者は成長するが、LLMは学習しない。だからメンタリングのやりがいが失われた感じがする
最近開発者採用がどう変わったのか気になる。LLMの使用が許可されるのか、今も手書きコーディングが求められるのか疑問だ
私はLLM以前から**モデル駆動開発(MDD)**で、vibecoding級の速度で開発してきた。データモデルがそのままアプリケーションであり、LLMはその上で手続きを少し速く書いてくれるだけだ。データモデルの方向性は今でも私が決めている
AIコーディングは3つに分けられる
現代社会はボタンをクリックしてドーパミンを得る構造へと変わっている。だから何もかもがひどく見える
最近、精神的勝利に浸る時代遅れの開発者みたいな文章がやたら上がってきますね。どうせ時代の流れは止められないのに。
これはさすがに一線を越えていますね
私もその意見に同意しますが、本人が手書きコーディングにこだわるとしても、一人で事業をしているのでない限り
結局は置き換えられるしかないのに、そのことを分かっていないようです。
うわ、それは言いすぎ…。