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

AIが私を愚かにしている

概要

  • AIの利用 による自己能力の低下への懸念
  • 自信喪失 やインポスター症候群の悪循環
  • コード記述能力の喪失と再学習
  • ソフトウェア開発者の 需要と供給の変化 への期待
  • 自己疑念 とAI依存への抵抗の必要性

AI利用による自己能力への影響

  • AIを使った記事やコードの執筆 の誘惑の強さ
  • AI利用が自分のライティング能力を低下 させている実感
  • 元々文章力に自信がなかったわけではない という自己評価
  • 中程度のソフトウェア開発者 としての過去の自己認識
  • AI利用の増加に伴うスキル低下の実感

インポスター症候群と自己疑念

  • 自己疑念やインポスター症候群 がAI利用を加速させる要因
  • AIが書いた文章 を読み返しても 自分らしさが感じられない 違和感
  • 自分の伝えたいことが表現できていない という不満

コーディング能力の喪失と再学習

  • 過去1〜2年、AIに全面的にコーディングを委ねていた 現状
  • 自分でコードを書くことをほとんど忘れてしまった 事実
  • かつてはコーディングが人生の中心だった ことへの悲しみと落胆
  • 手書きでコードを書く練習を再開 している現状

ソフトウェア開発者の将来像とAI

  • AI時代でもソフトウェア開発者のスキルは消えない という確信

  • コードを読んだり書いたりできる人材の必要性 は今後も続く予想

  • 開発者の数は減るが完全消滅はしない という見通し

  • 過去20〜30年の開発者需要過多の逆転 にAIが貢献する可能性への期待

    • Uncle Bob (Robert Martin) の講演内容への言及
    • コンピュータサイエンスが職業化する以前 は物理学者や数学者などのプロフェッショナルがプログラムを書いていた歴史
    • 需要増加によりプロフェッショナリズムが薄れた 現状認識

AI依存と自己疑念への抵抗

  • AIを使わずに書いたこの記事 をAIにチェックさせたくなる衝動
  • 文章の意味や読みやすさに対する不安 が自己疑念を助長
  • AI依存による自己疑念の悪循環 を断ち切る必要性
  • 自分自身で戦う意志 の重要性

Hackerたちの意見

これにはあんまり共感できないな。AIを使ってコードを書くたびに、背中に「ちゃんと確認しなきゃ」っていう感覚がずっとあって、自分のコードで補ったり修正したりしないと気が済まないんだ。そういうモヤモヤが、数分で動くアプリができる快感を打ち消しちゃって、これがすぐに変わるとは思えない。とはいえ、経験はあるから、ジュニアやミッドレベルの開発者だったら、これにハマるのも分かる。最初の頃に、知識のあるメンターにコードレビューで叩かれた傷がなかったら、あの感覚は感じなかっただろうな。

経験は今めっちゃ価値があるよね。これらのエージェントをうまく使えるけど、ジュニアたちのことが心配だよ。エージェントを使ってもっと深く学びたいと思ってる。Stack OverflowやいろんなIRCチャンネル、Redditから解決策を探すのは結構大変だったし。でも、大学の宿題はサボってたから、答えをちゃんと見直してなかったんだよね。興味があってプログラミングをやってたから、単に学位を取るためだけじゃなかったけど、もしそうじゃなかったら違ったかも。とにかく、LLMの時代に多くの経験と失敗を持って入れたのは良かったと思ってる。

after a few minutes of vibe coding 「バイブコーディング」なんてしない方がいいよ。これは誰かがその場で言ったジョークで、いつの間にか業界がジョークじゃないことにしちゃったけど、実際には開発の方法としては無理がある。エージェントと一緒に働くためのより良い方法を見つけて、人間がレビューすべき重要な部分を見てもらい、残りは「アウトソース」すれば、自分でプログラムするのと同じように機能するコードとデザインが得られる。単に早くたどり着くだけ。多分、エージェントが書いたコードの90%くらいはレビューしてるけど、それでも数万文字を打ち込んでファイルを行き来するより、数個のプロンプトを書く方がずっと楽だよ。もしかしたら、単にタイピングに疲れたのかも。

君の気持ちに同意するよ。AIを使って計画から完成まで進めようとしてて、サンドボックスではうまくいってる。すべてをAIに検証させるために頑張ってるんだ。ドラフトPRを開いて、自分で深くレビューするところまでやってる。もし10年以上の経験がなかったら、簡単なショートカットがたくさんある中で学ぶのは難しいと思う。やっぱり、詳しいことを知っていてコードを持てる人が必要だよ…今のところはね。

完全に同意だよ。ゲーム開発にはAIを補助的に使ってる。新しいことや面白いことをやりたいときは、自分でコードを書く必要があるけど、そうじゃないと大変なことになる。退屈だけど時間をかける必要がある作業には、明確なアーキテクチャを設計して、AIに実装をやらせる。とはいえ、AIが変なものを作らないか確認するために戻って見直さなきゃいけない。最近の例だと、CodexがGodotで作ってるゲームのArea2Dが提供してる動作をゼロから再現しようとしてた。AIに意味のあることをやらせようとすると、足元をすくわれるような選択肢が出てくる。数百ドル分のトークンがあれば違うかもしれないけど、月に10ドル使う人には頭痛の種になるだけだよ。それに、俺にとっては趣味のプロジェクトだし、コードを書くのはまだ楽しいから、AIには退屈な部分(いい例: セーブ・ロード、データファイルの解析、設定メニューの機能)をやらせてる。でも、人間の判断が必要な部分には近づけないようにしてる。

僕の経験では、Claudeはコードを吐き出すことしかできない。解決したい問題を「もっとコード」に変換するだけで、「少ないコード」にはならないんだ。彼がやることは全部、すごく細かくコードレビューしないと、コードベースがどんどん膨れ上がって、最終的には100%の負債に近づいちゃう。Claudeが出すものは全部レビューしてるけど、90〜95%の確率で「おお、動くけどコード多すぎだろ、3時間かけて簡素化する手伝いをしよう」って感じになる。

「彼がやったことを全部見直して、自分のコードで補足・修正する必要があるって感じが常にする」 それ、わかるけど、僕がやってる違うことは、AIにフォローアップのプロンプトやセッションで自分で片付ける方法を教えてることかな。静的コード品質分析ツールも、エージェントを緊張させるのにすごく役立つよ。

大きくて複雑なプロジェクトに取り組んでいるときに、無駄なことにハマらないように使ってる。主にプラットフォームの仕事をしてるけど、フィードバックループやテストが曖昧なんだ。AIをリファクタリングやリサーチのためのツールに使うことで、実際に解決したいメインの問題に集中できて、コンテキストスイッチが減る。メインの焦点を外すために使う人の気持ちが全然わからない。そこまで信頼してないから。

同じ気持ちだし、AIの使い方が思考力を衰えさせてる気がする。ファイル全体をショートカットするために使う誘惑は減ったけど、ドキュメントを調べたり、読んだり、ライブラリをいじって理解する時に使うのも、反発を感じることが多くなった。これらはあまり問題ないように思えるけど、実際にやらなきゃいけない時(エージェントがちゃんとやってくれないから)には、その摩擦をすごく強く感じる。これが特定のタスクの習慣を失ってるだけなのか、一般的なgファクターの喪失なのかはわからない。

AIに仕様を書かせて、それをもとにコードを書くのがすごく楽しいんだ。コードレビューは面倒だけど、要件を見直してフィードバックをするのは生産的な感じがする。問題の全体像に向き合うことになるし、アプローチを見直すきっかけになる「虫の缶」を見つけることも多いよ。

自分はかなりのベテラン開発者(経験32年)だけど、.mdドキュメントやスキル、レビューエージェントなどでプロセスをしっかり固めてるから、特に余計なことをする必要は感じてないんだ。これが自分をバカにしてるとは思わないけど、単に上のレイヤーに移っただけだよ。アセンブリ言語やソースコードにこだわるより、要件やアーキテクチャの決定、エンジニアリングプロセス、そしてますます自動化に注力してる。

今のプロジェクトでは、毎日Java、Ruby、JavaScriptでコーディングしてる。言語の違いを調べるのに、昔は簡単だったGoogle検索で無駄にトークンを使っちゃってる。null安全演算子のRubyとJScriptの違いや、RubyとJavaのcontinue/break文のことを混同しちゃうんだ。Claudeは、俺が使う中で一番複雑なことが古いJavaのループをリファクタリングして、もっとモダンなストリームを使うことだって知って、きっと失望してるだろうな。

Googleがクソになっちゃったのも影響してるよね。昔はシンプルなGoogle検索だったのに、今はAIが絡んだめんどくさい体験になっちゃった。

その気持ち、100%理解するよ。だから、リモートの大学で数学を「趣味」として勉強してるんだ。今の時代、役に立たないかもしれないけど、たぶん現行の最前線モデルよりも上に行くことはないだろうけど、自分の頭を鍛えるためにはやってる。これを体力トレーニングと同じ原則に例えられると思う。今は身体を動かすことが必須じゃないけど、やっぱり役に立つし、使わないのはもったいない。自分がバカになっていくのを見て、何もしないのは愚かだと思う。

手でコードを書く時間がある人は少ないと思う。実際に何を書いてるか見てみると、ほとんどの場合は新しいことでもないし、特別なことでもない。Xのバックエンドを作ったり、簡単なバグを直したり、ミッドシニアプログラマーにはトリビアルなことばかり。難しいタスクは、主に(また私たちにとって)コードのアーキテクチャに関する決定で、LLMが機能実装で脱線しないようなシステムをどう開発できるか考えてる。要するに、今は手でコードを書くのがいいかもしれないけど、将来的には株主や上司がLLMの助けを借りて、機能を早く提供したりバグを修正したりすることを求めると思う。それができなければ、パフォーマンスが悪くなる。結局、私たちが望むことではなく、株主が望むことなんだ。もちろん、これに疲れないなら、自由な時間に手でコードを書くことはできるけど、ドゥーマーのように聞こえたくはないけど、これはすぐに現実になると思う。

誰でも手でコードを書く時間はあるよ。AIは実際の生産性向上にはつながらないから。

でも、速さの問題じゃなかったんだ。急速な進展は、同じプリミティブを早く書くことじゃなくて、より良いシステムを設計して、しっかりした抽象化を構築することから来るんだよ。

AIを使って考えることを排除するんじゃなくて、単調なコードを書く作業から解放されるために使ってる。プロトタイプが実装されたら、AIはコードを書くのが得意なんだ。初期の概念実証の粗いプロトタイプ(コメントなし、ハードコーディングされた変数など)を自分で作って、AIがそれを製品化してくれる。これのおかげで、さまざまな労働倫理やスキルを持つ人間を管理する代わりに、エージェントのチームを指揮できるようになった。AIはコードベースで使われているパターンを維持したり、業界のベストプラクティスに従ったりするのが得意なんだ。AIを使うと、プログラミング言語で書く量が減って、英語やLLMに話しかける言語がメインになるよ。

開発者として、これって仕事の安定感を感じるなぁ。しばらくLLMを使ってみて、確かに便利だし、好きだって認めざるを得ない。いくつかアプリを「バイブコーディング」してるけど、自分のアイデアがすぐに形になるのはいい感じだよね。ただ、経験上、盲目的に信頼すると痛い目に遭うこともある。自分のバイブコーディングしたプロジェクトでも、頼んでない「機能」を勝手に追加してくるし。ペットプロジェクトだから、最終的に期待通りの結果になれば気にしないけど、企業はそんなに柔軟じゃないと思う。顧客も、毎回の修正やアップデートで機能が変わったり追加されたりするのは嫌だろうし。これからいろんな方向に進む可能性があるけど、現状をまとめると、多くの企業がこの方向に進んでる。適切なエンジニアリングがないと、AIは簡単にコードを増やして、アプリケーションを意図せずに変えてしまう。AIへの恐れから、ジュニアエンジニアが市場に入るのが減るし、採用も減るだろう。AIの利用が臨界点に達して、大量の変更を行うようになると、「プロンプト」を出している人たちも圧倒されるかもしれない。結果的に、頭の中で覚えておかなきゃいけない機能が増えていく。LLMを100%信頼するのは無理だと思うし、そのせいで開発者はアプリケーションが何をするのかをしっかり理解しておく必要がある。最終的にはバグがたくさん出て、開発者は追加の人材が必要だって文句を言うことになる。再び採用が始まるんじゃないかな。今は新しい開発者にとって一番厳しい時期で、市場にいる人にとっては一番良い状況だと思う。

学校でのAIのリスクについてはよく話されるけど、そのリスクはどんな学習環境にも当てはまるよね。最近新しい仕事を始めたんだけど、AIのおかげでオンボーディングがすごく難しくなってる。AIをあまり使ってない同僚よりも、自分の役割に慣れるのが遅い気がする。慣れない言語でコーディングしてるから、バイブコーディングの誘惑が強くなってる。少なくとも、クロードが意味不明な答えや不要に冗長な答えを返すときには気づけるスキルはあるんだけど、クロードにコードを書いてもらう時間が長くなるほど、仕事に必要なスキルが身についてない気がする。PRを提出するときも、自分の仕事に自信が持てなくて、なんだか嫌な気分になる。正直言うと、クロードにSlackやドキュメントを検索させて質問の答えを探させるのは、本当は他の人に聞けばいいのにって思う。AIが自分の社会不安を助長して、人との接触を避ける方向に誘導してる気がする。それが理解を深めるためにも、社会的な交流の必要性にも良くないってわかってるのにね。これって自分の責任を放棄してるように聞こえるかもしれないけど、特定のタイプの人にとって、ある技術が特に中毒性があることを指摘するのは重要だと思う。そういう人たちをネガティブな行動サイクルに閉じ込めてしまうんだ。今AIに頼るのを控えれば、自分のスキルを成長させて、AIに単純で結果を確認しやすいタスクを任せられるようになるんじゃないかと思う。挑戦的だけど、必要なことだよね。

今は見習い制度(インターンシップ)にとって最悪の時期だよ。みんなAIを使って速くて良いものを出すことを期待してるけど、そんな中でスキルを身につける時間なんてほとんどないんだ。

30年間ブログを読んできて、こんなにひどい罵り言葉を見たことはないよ。そしたらSubstackや左派が登場して、今や人々は私がそれ以上のことを読む気もないのに、罵り言葉を書いてる。確かに、彼らは自由に書くことができるし、私はそれを以前の年に読んだものと比べてクソだと思う自由もあるけど。

「そんな罵り言葉」って、君にとっては3つの「くそったれ」ってこと?

作者は「くそっ」とか言ってたけど、あなたはコメントを修正して「クソ」っていう文を追加しただけじゃん。あなたの論理がよくわからないな。

使わなくなったら、脳が文字通り変わっていくよ。だから、そうだね。そうなんだ。

これに対抗するいい方法は、開発者やAIが特定の時にコードを書くべきじゃないってことに気づくことだと思う。人は自分のワークフローを変えて、コードと一緒に自分自身も成長させる必要があるよね。俺は複雑な問題に取り組んでいる間、退屈でアーキテクチャに関係ない、ボイラープレート的な重いタスクをバックグラウンドでGitのワークツリーに任せるようにしてる。小さなイテレーションで作業してもらって、毎ステップをコミットするように頼んでるんだ。コーディングセッションが終わったら、そのコードを見直すことができる。