雑記
AI 時代、私たちはいったい何を学べばいいのか?
AI のコード品質から、日本語の作文で白紙に向き合った経験まで。読んで理解できることと、自分で組み立て、考え、出力できることは同じではない。
AI が書くコードが、人間の書くものより劣っているとは思わない。むしろ、大多数の人が書くコードの品質は、現段階の Opus 5.5 が書くコードより悪い。基本的な SOLID 原則や Pattern さえ、まともに使えていない。
OOP を追求した結果、抽象化が過剰になる。ML を追求した結果、めちゃくちゃなものを作ってしまう。
だから、「AI が生成した Code は心配ですか?」と聞かれたら、
逆に聞きたい。あなたの同僚が書いた Code なら、安心できるの?
問題の本質は同じだ。強力な E2E と AI による検出に頼って、この問題に対処するほうがいい。
学ぶことや、自分でコードを書くことについては、それが正しいと思う。ただ、それには非常に高いハードルができてしまった。
少し砂糖に似ている。工業的に作られた砂糖が増え、人々はますます好んで食べるようになる。自分から砂糖の摂取をやめるのはとても難しい。特に、たくさん食べている人ほどそうだ。
今は多くの人が LLM を使って開発していて、ずっと機能の開発に意識を向けている。その役割は、エンジニアから PM や Maker に変わっている。
一方、腰を据えて自分でコードを書くのは、長い時間をかけて筋肉を鍛えるようなものだ。つらいし、成長も遅い。全身に筋肉がついたとしても、それが高い給料につながるとは限らない。
多くの人は「機能」だけを気にして、コード、アーキテクチャ、中心となるロジックへの理解が足りない。なぜ Pattern として抽象化するのか、なぜ async を使うのか、技術をどう選ぶのか、といったことも含めて。
経験のあるエンジニアなら、こんな Prompt を書くかもしれない。バックエンドの Database には SQLite を使い、必ず transaction を使うこと。ライフサイクルを抜けるときに自動で Commit し、失敗したら自動で rollback する class を作る。作成する connection は長く維持する接続にして、Pool で session を管理し、Database Table の設計や正規化も一緒に進めてほしい、など。
でも、経験のない新人エンジニアや一般の人なら、「これを保存して」。
こうした基本的な設計能力がなく、説明もますます高い抽象度になっていくと、自分のプロジェクトやコードについて、基本的に何もわからなくなる。その後の面接では、何をしたかは話せても、どうやって作ったのかを話せない。
エンジニアの間では昔から、システムが動けばそれでいい、という冗談がある。bug が一つなら bug だけど、Bugs が複数集まれば動く。
今の LLM による開発は、確かにそんな感じだ。
将来どうなるのか、こうした設計能力にまだ意味があるのか、私にも断言できない。
ソフトウェアエンジニアではない人の多くは、Prod にリリースするときでさえ、動くかどうかだけを気にする。技術よりも、プロダクトを軸にすることを重視している。
設計さえすでにこうなっているのなら、そこから自分の手でコードを書くところに戻り、一つの機能を開発するのに何時間もかかることを経験する。しかも最初はめちゃくちゃなコードしか書けず、達成感は極めて低い。そんなことに時間を費やすのは、まったく割に合わない。
今、そしてこれからの新人エンジニアや学生のうち、どれだけの人がそれでもやろうと思うのだろう。
だから、正直なところ、私たちはいったい何を学べばいいのだろう?
今でも結論は出ていない。AI の発展が速すぎる。多くのスキルが役に立たなくなり、人の思考を硬直させてもいる。それと同時に、強い拒否感や抵抗感もある。自分を説得して、それを見に行き、体験し、使いこなさなければならない。
イラストレーター、翻訳者、ソフトウェア開発者のように、こうした分野では初期に極めて大きな投資が必要になる。限られた時間やお金も含めてだ。サンクコストがこれほど高く、個人の利害も関わっている中で、この衝撃にどう向き合えばいいのか。今でもとても迷っている。
今では、人間はいったい何を学ぶ必要があるのか、と疑問を持ち始めてさえいる。
最近、気づいたことがある。私は長い間、小説を書いてきた。もうすぐ 10 年くらいになると思う。書き始めた頃を振り返ると、頭の中の考えを文章にするのは、本当にひどい有り様だった。頭の中にはたくさんの考えがあるのに、書き出すのはものすごく難しかった。
今は、思いついたことをそのまま文章にして、書きながら改善できる。そのせいで、音声入力にはずっと慣れにくかった。
そして最近は日本語を勉強していて、LLM に学習を手伝ってもらっている。ところが昨日、試験を受けに行ったら、まさか作文を書かなければならないとは思っていなかった。
頭の中には考えがある。でも、それをきちんと伝わる書き言葉に変えられなかった。
LLM の助けがあれば、確かに文章はすっきりする。でも基本的には、私自身も「思考と言語の体系を組み立てる」能力を失っていた。
LLM が示した文章構成を読んだときのことを思い返す。その場では、「まさにそのとおりだ」と思っていた。
でも、白紙に向き合うと、自分では組み立てられない。「話す」のに近い形で内容を書くことしかできなかった。
だから今は、少なくとも書いて表現することについては、自分で書き、自分の言語体系と構造化された出力を作っていこうと決めた。
LLM が学習に与える認知面のダメージが、これほど強いとは本当に思っていなかった。
先生が黒板で数学を説明するときと似ている。一つひとつの手順は、とても簡単で筋が通っているように見える。
でも、自分でやるとなると、まったく別の話だ。
自分の経験からすると、LLM でプログラミングを学んでいる多くの人は、ピアノ曲を聴き、他の人がピアノを弾くのを見て、それで自分も弾けると思っているようなものだ。
将来は、基本的な書き言葉による表現も含めて、自分で構造化して出力する能力さえ持たない人が多くなるかもしれない。
でも、昔ながらの学び方に戻るべきだと言われても、それでは時代についていけないようにも感じる。
答えはない。ただ、私個人としては、情報を吸収したあとの「出力」の能力、そして構造的に考え、さらに問いを深める能力を調整していこうと思う。

コメントと議論
コメントサービスに接続しています…