- 1983年から42年間プログラミングを続けてきた開発者が、AI時代の到来によってソフトウェア開発の本質が変化していることを実感し、その複雑な心境を綴った文章
- 8ビットコンピュータから486まで、機械のあらゆるバイトを理解し自ら制御していた時代から、数多くの技術的転換を経験してきたが、中核的な能力は常に持ち越せていた
- AIは既存のプラットフォーム・言語・パラダイムの転換とは異なり、「うまくやること」の意味そのものを変える転換
- コードを直接書く代わりにレビューし指示する役割へ変わる中で、パズルを解いていた親密なフィードバックループが失われつつある
- 42年の経験によって以前より速く製品を作れている一方で、開発に感じていた驚きとアイデンティティが変化する過渡期にある
私を形づくった時代
- 1983年、7歳のときに洗濯機のチップより処理能力の低い機械へ BASIC を打ち込み、最初のコードを書いた
- すべてのRAMバイトの用途を追跡でき、画面上のすべてのピクセルを自分で配置でき、意図から結果までの経路は直接的で可視的だった
- 8ビットから486DX2-66までが最も好きな時代で、それぞれの機械に固有の個性があった
- Sinclair Spectrumのattribute clash、Commodore 64のSIDチップが設計意図を超えて活用されたこと、NESの1スキャンラインあたり8スプライト制限によるフリッカリングの工夫など
- PCは表計算向けのベージュ色の箱から、286、386、486を経てDoomを動かすゲーミングマシンへと進化した
- それは単なる製品ではなく、目に見えるトレードオフを伴うエンジニアリングの冒険であり、IRQ競合、DMAチャネル、CONFIG.SYSやAUTOEXEC.BATの最適化、メモリマネージャなどを扱うこと自体がシステムエンジニアの役割だった
- id Softwareのような小規模チームが、誰もルールを決めていない中で大胆な技術判断を下していた
- CarmackによるWolfensteinのレイキャスティング、DoomのVGA Mode Xの工夫など、現実の制約を押し広げて本当に新しいものを作り出した例
- Plug and Playの登場とWindowsの抽象化によって、ワイルドウェストは終わり、コンピュータは敬意と理解を要求する魅惑的な機械から家電へと変わった
約束の変質
- 初期には、コンピュータが何になり得るかについての本物の楽観主義があった — Spectrumを持つ子どもが自分で何でも作れ、初期のWebは人類史上最大の平等化装置のように感じられた
- その希望は不快な方向へと変質し、愛していた機械たちは監視と搾取の道具になった
- つながりを約束したプラットフォームは、実際にはユーザーを収益化するために作られていた
- tinkerer精神は自然死したのではなく、買収されて広告クリック最適化へ投入された
- これは単に道具が変わったというのとは別種の喪失であり、愛していたものが変わったあと、誇れない仕事に動員されるようになった
これまで経験してきた転換
- 40年のあいだに数多くの技術的転換を経験してきた — 新しい言語、新しいプラットフォーム、新しいパラダイム、CLIからGUI、デスクトップからWeb、Webからモバイル、モノリスからマイクロサービス、テープ・フロッピー・ハードドライブ・SSD、そして蜉蝣のように現れては消えるJavaScriptフレームワーク
- それぞれの波で新しいことを学ぶ必要はあったが、中核スキルは移転可能だった — 新しいプラットフォームを学びつつ、システムがどう動くかについての既存の理解を適用しながら作り続けられた
- もはや存在しないプラットフォーム向けにソフトウェアを出荷した経験まで含め、業界が新しい方向へ舵を切るたびに経験は複利で積み上がっていった
- 経験ある開発者と業界のあいだには、**「物事は変わっても理解は残る」**という暗黙の合意があった
今回は違う
- 以前の技術的転換は「新しいものを学び、既存のスキルを適用する」という構造だったが、AIは新しいプラットフォーム・言語・パラダイムではなく、「うまくやることの意味」そのものを変える転換だ
- それを徐々に認識するようになった — 機能を作り、アーキテクチャを設計するという点ではまだ同じことをしているのに、おもしろい部分が抜け落ちたように感じる
- エレガントな解決策を見つけ、制約と格闘し、何かがぴたりとはまる満足感を得ていた部分が、徐々にエレガンスにも満足にも関心のないモデルに処理されるようになっている
- より安く、より速いが、中身が空洞だ
- 今では自分でコードをタイプするのではなく、レビューし、指示し、修正する役割へ移っている — 42年かけて蓄積した、何が動き何が動かないかを見極める判断力に価値があるのは分かっているが、それは別種の仕事であり、同じ感覚ではない
- フィードバックループが変わり、親密さが失われる — 何十年ものあいだ夜更かしさせてきたパズル、追跡、ついに動かない理由を理解する瞬間が、プロンプトと応答へと圧縮される
- ごく一部の経験しか持たない人たちが、表面的には似た成果物を生み出すのを目の当たりにしている — 職人技の差は確かにあるが、外からは見えにくく、価値づけることも内面で感じ取ることも難しくなっている
抽象化の塔
- LinkedInで、20代前半で実務経験数年の開発者が、AIで「何が起きているのか分からない」と嘆いているのを見た
- 彼らはすでに抽象化の連鎖の頂上にあるぐらつくジェンガの塔の上にいたことに気づいていない
- TypeScript → JavaScriptへのコンパイル → C++で書かれたV8エンジン → OSカーネルのシステムコール → 一度も意識したことのないコアでのスレッドスケジューリング → キャッシュ層を持つメモリコントローラ → 一行も読んだことのないnpmの400パッケージ
- 抽象化という船は何十年も前にすでに出航していたが、各レイヤーが段階的に到着したため、スタック全体を理解しているふりができていただけだった
- AIは、そのふりをもう維持できなくしたレイヤーだ
- 機械全体を理解している感覚を覚えていること、そしてそれを失う一種の悲しみは、それを一度も経験したことのない人には完全には感じ取れない
それでも残っているもの
- 経験がこれまで以上に価値を持ち、システム思考やアーキテクチャ判断がAIに置き換えられず、職人技が別の形で持続するというのは事実だ
- 複雑な作業では — システムレベルの依存関係管理、複数の相互作用する仕様にまたがるメンタルモデルの維持、何かに一貫性があると感じさせる何千もの小さな判断 — 依然としてAIにはないものを持ち込める: センス、判断力、数十年分のパターン認識
- コード生成が安くなれば、ボトルネックは何を依頼すべきか分かる人、出力が微妙に間違っていることを見抜ける人、全体像を保てる人へ移る — タイプすることは決して難しい部分ではなかった
- だが、同じ感覚だと言うなら嘘になる — 驚異に触れにくくなっているし、純粋な粘り強さと創意工夫で何かを解き明かす発見の感覚は圧縮されている。その圧縮の中で得るものもあるが、失うものもある
休耕期(Fallow Period)
- 最近50歳になり、4年間にわたる激しい制作と自己形成ののち、自分で「休耕期(fallow period)」と呼び始めた時期に入った
- それは燃え尽きとは違う — 永続すると信じていた建物の下で地盤が動き、新しい土台を探している過程だ
- きれいな結論はない — 「より上位のスタックへ行け」「ツールを受け入れろ」「AIにできないことへ集中しろ」という助言はおそらく正しいが、この感覚そのものは解決してくれない
- 42年を捧げたものが、もはや見分けがつかないかもしれない何かへ変わってしまったという感覚 — 必ずしも悪くなったわけではないが、違うのであり、その周りに築いてきたアイデンティティを揺さぶり、以前のような満足を与えてはくれない
- 40歳以上の多くの開発者が似た感情を抱いていても口にしないだろうと推測している — 業界は若さと適応力を崇拝するため、「昔とは違う」と言うと時代遅れに聞こえるからだ
- それは時代遅れということではない — 新しいツールを使ってこれまで以上に速く構築し、数年前なら夢でしかなかった製品を作っている一方で、同時に**「作る」とは今や何を意味するのか**を見極めようとしている
- 7歳のとき、機械が指示どおり正確に動き、探求し、最終的には理解できるものだと思ってプログラミングを始め、それは魔法のように感じられた。そして50歳になった今、魔法は別のものになっており、私はそれとどう付き合うかを学んでいる
11件のコメント
根本が正当とは言えない技術が登場したからです。LLMが「学習」したデータは、このような用途での使用を許可されておらず(本人たちは許可を得たと主張していますが)、そのため、どのようなデータを「学習」したのかをきちんと列挙することもできません。したがって、その構造を理解することもできなくなります。根本から人間の精神を尊重せずに始まり、許可のない偽の複製品を大量生産して環境を破壊する技術です。
私もBasicから始めて、気づけばもう40年以上になります。
そろばんを習っていた時代もありましたが、今ではAIエージェントを使っているのですから、本当に世の中の変化は速いです。
でも、筆者のような感覚はあまりなくて、ただ最近の流れを見ているのが面白いです。
Hacker Newsの意見
時間がたつにつれて、OSの複雑性の増大とソフトウェアの社会的重要性の高まりによって、開発環境はますます悪くなったと感じている
1984年のMacはすでに豊富なグラフィックライブラリを備えており、抽象化は必然的な流れだった。私はむしろ、よく設計されたフレームワークを楽しんでいた
しかしソフトウェアが生活を支配するようになって、『エンジニア主導の時代』は終わり、Agile、単体テスト、コードレビューのような管理中心の文化がコーディングの楽しさを奪った
今は引退後、再び自由にコーディングしながら、昔ながらの『カウボーイプログラマー』の感覚を楽しんでいる
AIが作ったコードの品質は、結局そのツールを使う開発者のレベルに比例する。優れた開発者は今でも優れた結果を出す
AIを使っても重要な部分は自分で磨き、頭を使う時間を持てる。本当の課題は技術ではなく、時間管理だと思う
昔は徹夜でアセンブリのレンダリングライブラリを書きながら魔法を使っている気分だった。Dockerコンテナにはそんな魔法はないと思っていたが、最近また午前2時、モニターの明かりの下で魔法を使っているような気分を味わっている
私も50歳だが、AIコーディングアシスタントのおかげで、以前は時間がなくてできなかった個人プロジェクトを実現できそうで楽しみだ
チャットボットと一緒に開発するのはフォーム入力をしているように感じる。それでも世界は変わるのだから受け入れなければならない
たいていの人は職人気質より効率を求め、本物の職人はまれだという事実に気づかされる。結局、私たちはまた文化の一片を失うのかもしれない
しかしLLMが作ったコードをデバッグするのは他人のコードを直している感じで、達成感がない。完成は速いが、もう自分のものではないように思える
今の子どもたちもやはり魔法を感じている。50年後には「GPT-6.2のRAGチューニングをしていた時代が懐かしい」と言うようになるだろう
私は前者に属する。AIのおかげで、時間が足りずに作れなかったものを作れるようになった。中核機能に集中できるようになった
未来の技術への期待感が消え、別の分野に目を向けるようになった
大企業にいたときは楽しくなかったが、今では毎日IDEの前に座るのが楽しい
もしプログラミングがつまらなくなったなら、コンサルティングに転向してみることを勧める。独立性とコントロール権が楽しさを取り戻してくれる
高校1年の頃から情報工学に進むつもりで、学校生活記録簿も情報工学関連の活動で埋め、合間に独学も少しずつ進めて、今は高3目前になったのですが、最近は本当に気持ちが複雑です。GPT-3だったか、ほとんど初期バージョンを使ったときは、AIがこんなに自然に話すことに驚き、MidjourneyのDiscordに入って画像を生成してみたりもしましたが、その頃は「面白いおもちゃ」くらいの感覚で、こんなに速く成長するとは想像もしていませんでした。BixbyのようなAIをもっと長く見てきたので期待値が低かったのもあります。
でも、気づけばAIが急成長し、ビッグテックはAIに投資し、情報工学の将来性は暗いだの何だのという話まで出回るようになりました。もちろん生成AIは、結局のところ数学的に確率の高い単語を並べている複雑なプログラムではあるのですが、人間の成果物をあまりにうまく模倣するうえに成長の勢いもすさまじいので、大学を卒業した後、ひょっとすると大学院まで出た後に、十分な仕事があるのか心配になります……。
半分は信念、半分は惰性で、当初の目標だったソウル大学の情報工学科に行くために勉強もし、学校生活記録簿も整えてはいるのですが、不安を振り払うのはなかなか難しいですね。しかも、本よりAIに聞きながら開発の勉強をするほうが圧倒的に速いこともあるので、複雑な気持ちになります……そんな感じです。
むしろ今のほうが良いのではないでしょうか? 誰よりも早く動けば、すぐに専門家になれる気がします。AI分野もまだやるべきことが多いですしね……。ようやくコーディングがうまくできる程度になったばかりですから。
年齢層は違いますが、同じように感じますね、ふふ
芸術・体育系の分野は就職が難しいと分かっていても、自分が好きな専攻を選ぶことがありますよね。就職が重要なのか、それとも就職が難しくても好きなことをしていれば大丈夫なのかによって決めてください。AIを使ってソフトウェアを作り、AIを研究する仕事は、今でもなお素晴らしい仕事です。
私もBASICから始めて、(小)国民学校のころは各種大会を総なめにしていました。主にゲームを作っていて、小学生のときに一人称シューティングゲームを作ったのが、自分のキャリアの最高到達点だったと思います。その後、COBOL、FORTRAN、C/C++から始めて、Windowsアプリ/ゲームを作り、ゲームサーバー、フィーチャーフォン/セットトップボックス向けの組み込みアプリ開発からiOS、Androidもやり、さらにWebアプリをNode、Pythonベースでフルスタック開発し、Nodeベースのオープンソース活動も活発にしていました。ほとんどのシステム、フレームワーク、OSなどを根本から理解し、開発し、経験してきました。40代になると、新しいフレームワークやOSが出てきても、結局は大差ありませんでした。ですが、AIベースの開発は根本的に別の仕事です。これまでやってきた作業の延長線上のように見えますが、そうではありません。会計/事務の仕事は同じでも、そろばんからスプレッドシートへの移行は延長線上ではありません。これからもそろばんを弾き続けるのか、それとも別の領域へ移るのかという問題です。良いか/嫌か/変わったかの問題ではありません。
すばらしいですね
私も50を過ぎ、2000年代初頭から現場にいるが、AIが入ってきて、むしろ良かったと思っている。以前はカーネルソースを分析するとき、ストレスを感じながら、探してまた探していたことを、今はAIにやらせて、私はそれをもとに事実かどうかを改めて確認するようになったので、ストレスが減り、より多くの内容を、より深く理解できるようになった。そして、firmwareベースだが、Androidアプリケーションまで全部開発できるようになり、1人ビジネスも可能だということが分かった。
私も83年にBASICで始めて、
NECの1スキャンラインあたり8スプライト制限を同じくMSXで経験しましたが(MSX1は4個)、時代と経験を共有した文章を読めてとてもうれしいです。
現在悩んでいる内容もよく理解できます。