- AIコーディングツールの普及は、開発者のあいだに以前から常に存在していたものの見えにくかった動機の違いを表面化させている
- コードを書く行為そのものにある職人的な満足感を失うことへの悲しみと、コードを取り巻くエコシステム・キャリア環境の変化に対する悲しみは、互いに異なる種類の喪失感である
- 1980年代からプログラミングをしてきた開発者の視点では、AIコーディングはC64 BASICからアセンブリへ、関数からシステム設計へと続いてきた抽象化段階の自然な延長線にある
- 数十年にわたってコードを読みレビューしてきた経験は、AIが生成したコードの品質を判断する感覚と判断力として今なお有効である
- どの種類の悲しみを感じているのかを認識することが重要であり、職人的な喪失と文脈的な喪失ではそれぞれ異なる向き合い方が求められる
哀悼の始まり
- James Randallは1980年代、7歳のときからプログラミングを始めた開発者で、発見の感覚や粘り強く何かを突き止める体験が**「圧縮」**されたと表現している
- 完全に消えたわけではないが、圧縮の過程で何かが失われた
- Nolan Lawsonは「We Mourn Our Craft」という文章で、より直接的に喪失感を表現している
- コードを手で練り上げていた感覚、午前2時にデバッガでバグを追っていた体験、「自分が作った」という誇りを恋しく思うようになるだろう
- こうした感情は実際の喪失に対する本物の感情だが、読み進めるうちに互いに別のものを悼んでいるという感覚がずっとあった
分断の本質
- AIコーディングは、開発者のあいだに以前から存在していたものの見えにくかった分断をあぶり出している
- AI以前は、両方の陣営が同じやり方で仕事をしていた。同じエディタ、同じ言語、同じプルリクエストのワークフローを使っていた
- 職人志向の開発者と結果志向の開発者が隣り合って座り、同じ製品を出荷していても見分けがつかなかった
- 仕事への動機は見えなかった。プロセスが同じだったからだ
- いまや分かれ道が生まれた。機械にコードを任せて何を作るかを指揮するか、それとも自分の手でコードを書くかを選ばなければならない
- この選択の瞬間に、そもそもプログラミングを始めた理由が初めて可視化される
- 大学時代の数学・計算機科学の授業にも同じ分断があった。証明や定理そのものが好きな人と、応用するときにだけ興味を持つ人たちだ
私の悲しみは違っていた
- この18〜24カ月、実際に悲しみと適応の期間を経験してきた
- 新しいツールを理解できないのではないかと恐れていたが、実際には理解できた
- AIが作ったコードの品質を見極める能力を失うのではと心配したが、数十年にわたってコードを読みレビューしてきた経験は蒸発していなかった
- 何かがおかしいときには今でも気づけるし、目利きはそのまま残っている
- パズルを解く楽しみが終わってしまうのではと恐れたが、実際には一段上に上がっただけだった
- C64でバイトを並べていたこと → 関数を書くこと → システム設計へと続いたキャリアのすべての転換と同じパターンだった
- いまやパズルは、アーキテクチャ、構成、アシスタントを指揮する領域へと移っている
- ほとんどの恐れは現実にぶつかって維持されなかったが、それでも一部の悲しみは残っている
残っている悲しみ
- HTMLを手で書かなくなることではなく、開かれたWebのエコシステムそのものに対する悲しみ
- AIのコモンズ学習、人々のインターネット体験を形作る主体のさらなる集中化こそが現実の喪失である
- 個人的な生産性向上とは無関係に消えない問題だ
- キャリア地形の変化に対する悲しみ
- 30年以上続けてきたWeb開発は、もはや最も熱い分野ではない
- モバイルアプリがその一部を奪い、AIエンジニアリングが現在は主導的な位置を占めている
- うまく転換できつつあるとは思うが、不安は本物であり、まだ終わっていない
- この悲しみの核心は、コードを書く行為そのものを懐かしんでいるわけではないことだ
- コードの周囲にある世界が変わっていくことへの悲しみである
- RandallやLawsonの悲しみは職人技そのものに向けられているが、この文章の悲しみは文脈と理由に向けられている
どちらも間違っていない
- Kevin LawverはLawsonへの応答記事で、過去に固執するよりも職人技と情熱を再び別の方向へ向けるべきだと主張している
- 単なるノスタルジー対プラグマティズムという枠組みを超えて、自分が感じている悲しみの種類を認識することが実際に役立つ
- 職人的な喪失を悼んでいる場合、「とにかく適応しろ」と言われても解決にはならない
- その満足感を別の場所で見つけるか、仕事の手触りが変わることを受け入れる必要があるかもしれない
- これまで職人技そのものに生計が成り立っていたこと自体が幸運だったのだ
- 文脈的な喪失を悼んでいる場合は、より実行可能な対応ができる
- 新しいツールを学び、自分が望むWebのために努力し(たとえ小さなWebであっても)、悲しみながら同時に適応していくことができる
- Nolan Lawsonの表現を引用すると、「新しい世界を祝福もしないし、抵抗もしない。太陽は昇り、沈み、私は無力なまま軌道を回り、私の抗議ではそれを止められない」
- それでも、悲しみと恐怖のなかにわずかな高揚感があるというのは正直な告白だ
コンピュータに仕事をさせる
- 1980年代にプログラミングを始めて以来、学んできたあらゆる言語は目的のための手段だった
- コンピュータに自分の望むことをさせるための新しい方法だった
- AIコーディングはその延長線上にある最新の段階であり、断絶ではなくはしごの次の一段である
- ただし、そのはしご自体が変わっており、寄りかかっている建物も変わっているため、どこへ向かうのかを正確に知ることはできない
- 確かなのは、考えて作ったものが実際に動く瞬間の満足感は40年以上変わっていないということだ
- コードがそこに至るまでの経路は変わったが、動いたその瞬間は同じである
7件のコメント
大げさに騒ぎすぎですね
Webプログラミングのようなものは、AIにやってもらえるのはとても良いことだと思います。
どうやら、他のプログラミングには何か崇高な価値があるようですね。
HNは平均年齢層がかなり高くて、どこか時代に取り残された人たちのように感じることもたまにあります。
だから、こういうネガティブな文章(批判的というより)は読まずに流すことが多いです。
ちなみに、たまに自分でコーディングする楽しさを思い出すことがないわけではなく、
Web系だからこそ少しはやりやすいのかなという気もしますが、
コードをタイピングしていない期間が3か月を超えています。
何より、こういう開発の仕方がすごく楽しくて、若い頃のように自発的な残業もたくさんするようになりました。
AIのせいでそんなに悩むなら、使わなければいいのでは
RADツールが出てきたとき、人々がどんなふうに反応したのか気になります
Hacker Newsの意見
良いプログラマーの目標は、自分自身を不要にすることだ。昔はアセンブリでサイクルを数えビットを詰めていた時代もあったが、コンパイラを使うのが当たり前になった。CRUDアプリを手で作っていた時代もあったが、今ではフレームワークが代わりを担う。メモリ管理、型システム、高水準言語、ノーコード/ローコードのシステムなどはすべて進歩の一部だ。結局、プログラミングの目的は、コンピュータによって私たちがやらなくてよいことを増やすことだ
本当の分断は、ソフトウェアを「改善可能で理解可能なもの」と見る人と、「他人が作った不可解な障害物」と見る人の間にある考え方の違いだと思う
8時間労働制は技術ではなく政治的闘争の結果だった
ただし、その「他人」が人間であるなら、メンタリングや環境づくりによってその功績を分かち合うことはできる
Kellanの文章 “Code has always been the easy part” も同じ文脈だ。私たちの世代は、Webが与えてくれた主体性の感覚に中毒になって技術に飛び込んだ
unlessのような構文は流れを自然に表現できた。ただ、進化が止まったことで、皆がそれぞれ別のやり方で拡張し、脆いコードベースが生まれたAIコーディングは生産性をせいぜい10%ほど上げるだけだ。本当のボトルネックは、何を作るべきかを理解し、納得させるプロセスにある。コーディングはそれを理解するための手段にすぎない
それでも抵抗はしてみるべきだ