コーディングを学ぶことには今も価値がある
(stevekrouse.com)- LLMとバイブコーディングの時代でも、コーディングは就職のためのスキルを超えて、数学、学習法、創造的表現を身につける媒体であり続けている
- 「learn to code」が素早い階層移動の合言葉のように使われていた空気は弱まり、JavaScriptを数行書けるだけで6桁年収が保証されるわけではない
- LOGOとMathlandの事例のように、コーディングは指示を暗記する代わりに探究を通じて数学を理解させ、デバッグ・構成・論理をあわせて鍛える
- プログラミングは文章を書く想像力、数学の精密さ、ゲームのような即時フィードバックを組み合わせ、望む結果をコンピューターが実行できる言語へと磨き上げさせる
- LLMが英語とコードをうまく扱えても人文学の価値が消えないように、普遍的なコードリテラシーの必要性も残り続けている
就職保証を超えたコーディングの価値
- Val Town創業者のSteve Krouseは、コードの作成とデプロイのための「Silicon Valley startup」を運営しながらも、誰もがコーディングを学ぶべきだと語っている
- Making Sense with Sam Harris #481では、Silicon Valleyで「learn to code」という言葉を何カ月も聞いていない、という趣旨の発言が出ている
- かつて「learn to code」は貧困から素早く抜け出す道のように繰り返されていたが、JavaScriptを2行つなげて書けるからといって6桁年収がついてくるわけではない
- コーディングは数学、文学、科学、人文学と同じく、職業上の効用だけでなく教育的な理由からも学ぶ価値がある
数学を学び、思考を鍛える媒体
- コーディングは数学を学ぶ強力な媒体になり得る
- Steve Krouseは放課後のプログラミングプログラムを通じて数学が好きになり、期待以上に数学が得意になった
- Seymour Papertは、子どもたちが指示によってではなく、探究を通じて言葉を覚えるように数学を学ぶことを目指した
- Papertの「Mathland」はLOGOプログラミング言語であり、画面上の亀に命令して絵を描かせる方式だった
- Steve Krouseはオンラインで試せるLOGOバージョンも作成した
- プログラミングを学ぶ過程では、デバッグ、構成、論理といったメタスキルも同時に育ち、学べないものはないという感覚も生まれる
創作活動としてのプログラミング
- コーディングは、文章を書く創造性、数学の精密さ、ビデオゲームのような即時フィードバックループが交わる活動である
- 望むことをコンピューターが実行できる精密な言語へと磨き上げさせる
- 見慣れない文法を身につけた後、想像したものをコンピューターに実際に作らせるという点で、呪文を唱えることに近いとたとえている
- LLMは英語とコードのどちらも上手に書けるが、人文学の関連性が消えないのと同じように、コードもなお重要である
- 法律文書のように、コードは難解で退屈な細部に見えることもあるが、世界が動く基盤であり、優雅な1行のコードが世界を変え得る
- プログラミングは楽しい活動であり、LLM時代にも普遍的なコードリテラシー、あるいは「本物のコンピューター革命」の夢は続いている
1件のコメント
Hacker Newsの意見
LLM以前からコーディングできた人たちの間でも、コーディング能力はすでに退化しており、今後10〜20年はさらにそうなりそうだ
同じ期間にコーディングを学ぶことも、見返りが大きくないかもしれない
結局、将来のLLMを学習させるコードはLLM生成コードだけになり、運用中のコードベースの品質は人間にも理解しづらく、LLMにも保守しにくい水準まで低下して、そこでひずみが表面化しそうだ
その時になればコーディングは再び価値ある技能になるだろうが、キャリアを計画する立場からするとその時期は不確実で、市場は個人が耐えられる期間より長く非合理なままでありうる
依然として自分でコードを書き、職人的な技を取り戻す人たちが必要になるはずだ
誰もが生成コードに依存すれば、既知のものを繰り返すことしかできず、実際の学習によって難しい道を身につけた人だけが、新しい知識を生み、新しい教育用テープを作る創造性と知性を持てる
運用コードベースが人間には理解不能になり、LLMにも保守しづらくなるという1、2は起こるだろうが、その次にコーディングが再び価値を持つようになるという3は違う気がする
特に経営陣は期待値を下げるか、そうせざるをえなくなるだろう
「新しく改善された版」が、従来使っていた重要機能を適切な代替もなく消してしまうことがどれほどよくあるかを考えればいい
保守不能なコードベースになったら、ただ新しいゴミの山をまた生成し、あちこちランダムに変わったものを改善と呼ぶ可能性が高い
5年ほど前、FujitsuがノートPCの生産を再開しようとしたとき、実質的な方法は引退した日本人労働者を再び集めることだった
若い世代には技術がないか、あってもあえてやりたくなかったようで、数回生産したあとで終わったようだ
Panasonicは今でも法人向けノートPCを作っているが非常に高価で、この話はこのテーマと直接関係している
コーディング学習は必須で、何が可能で何が簡単かを知ってこそ、どこまで要求できるかもわかる
重要性が下がるのは、刃を常に鋭く保ち続けることだ
しばらくコードを書かないと、単発のミスやコピー&ペーストの失敗は増えるが、LLMのおかげでコーディング感覚を温かいまま維持する重要性は下がる
それでも、自分でできなかったなら、Fableがあっても自分の仕事はやり遂げられなかったと思う
その一方で、これまで以上に多くの人がソフトウェアを作り、使うようになり、「すべてが壊れていく」という長広舌はばかげた誇張だと見なされる可能性が高い
「コードは文学や音楽に匹敵するほど豊かで美しい創造的表現形式だ」という言い方は誇張に見え、著者が文学と音楽にどれほど親しんでいるのか疑問だ
ほとんどのプログラミングは配管工事に近い
やって来て前任者に文句を言い、固有の制約があるパズルを解く仕事だ
LLMがコーディングを得意とするのは、コーディングでは退屈で平凡なコードが求められるからだ
配管工が来て前の人を罵るようなことはなく、何かを変えるか、私が壊したものを直してくれた
その結果は、私がうまく扱わなくても何年も、何十年も完璧に動作した
退屈で平凡に作ることも、ほかに適切な言葉がないので芸術と呼べる
関数名を略号のようにつけることもできないし、ThisIsTheEntryPointOfTheProgram()のようにつけることもできず、何がより良いかは終わりのない熟考と議論の対象になる
私たちは頻繁な置き換えや肥大化を当然視しているので、こうした「小さな」ことを当たり前に受け入れているが、配管工は決してそんなことはしない
彼らは毎週新しいパイプ素材を導入しては次の流行に乗り換えたりせず、たいてい人間より長持ちするものを作るので、まるで別の惑星の職業のように見える
デモシーンは楽しみと創造的表現のためのプログラミングで、IOCCCもある
これは創造的に書かれた小説に相当する
その一方で、ナレッジベースを書くように、単なる仕事としての文章作成もあり、それがCRUDやクラウドのような配管型プログラミングだ
それでもKnuthの本に出てくるような美しいアルゴリズムは数多くあり、個人的にはどんな音楽よりも美しく感じられる
むしろコードのほうがより一般的なので、文学や音楽より表現力が大きいとさえ主張できる
あらゆるビデオゲーム、デモ/イントロ、生成画像、生成音楽の空間を考えれば、これらはコードなしでは不可能だ
メディアの一般的な使われ方と、その表現力を混同しているように思える
日常言語の多くの使い方も面白くはないが、可能性全体の空間を見るべきだ
コードは工芸であり、目的のための手段だ
それでもなお美しく、印象的で、創造的でありうるが、別種のものだ
価値判断ではない
芸術もひどかったり平板だったりしうるし、コードも天才的な成果物になりうる
だが月着陸船や手作りの時計が美しいのは、実際に動作するからであって、音楽とは比較しにくい
楽しかったキャリアの最後の3分の1に入りつつあるプロのプログラマーとして、今では コーディングを学ぶこと を「詩人として生計を立てること」と同じカテゴリーに置いている
本当に楽しい芸術で、価値を認めてくれる人もいるが、生計は別に考えておいたほうがよい
すでにコーディングを知っているシニアたちは今のところそこそこ大丈夫そうに見えるが、仕事は次第にモデルをジュニア貢献者のように世話する形になってきている
昔の友人を思い出す
Harvardで古楽を専攻し、MFAを取得していて、とても優秀だった
ラテン語とギリシャ語を読み書きでき、中世記譜法で音楽を作曲・演奏でき、古い刺繍に関する本まで出していた
だが学界のポストは得られず、その技能を必要とする仕事も見つけられなかった
数年前に一人で亡くなった
多くのプログラマーの運命もそうなりうる
人々はLLMが開発者を本当に代替することはできないという点にしがみついていたが、それは事実でも重要ではない
雇用市場が大きく揺らぐには、LLMにできない部分を処理するのに必要な人数が減るだけで十分だ
既存の開発者の効率がたった30%上がるだけでも開発者需要は20%減りうるし、これは需要と賃金に巨大な影響を与える
AIが受け入れられていない西側以外では https://hai.stanford.edu/ai-index/2026-ai-index-report によれば AIがソフトウェア需要 を押し上げている
今やろうとしているのは、何かを作るがLLMではコードを書かないということだ
相談相手としては今でも使っている
Elixirで Dota2トーナメント試合集計ツール を作っていて、トーナメントの配信を取り込み、時系列に整理して、YouTubeで連続動画シリーズを追う不便さを減らすような形式にしている
作っている理由は、プログラミングが好きで、何かを作るのが好きだからだ
LLMは私を知的に怠惰にし、それで何かを作っても満足感が薄い
作りたいし、作りたがるのは人間らしいことだ
ある人はある作り方を好み、別の人は別のやり方を好むだけで、それでいい
結局のところ、プログラミングがかなり 創造的な活動 だという点を多くの人が忘れているように思う
少し挑発的に言えば、プログラムを作る仕事は、良くも悪くも橋を架けることより絵を描くことに近い
「作業に集中しているその没頭自体が深く喜ばしい。作業が終わったあと完成品から得る喜びはそれと同じではない。芸術家は結果を楽しむが、絵を描いているあいだは芸術そのものを楽しんでいる」
LLMの問題はまさにこれだ
プログラミングという芸術そのものを楽しむ瞬間を、私から奪ってしまった
データ量がとても多いので本当に面白く、間違いなくより良いプログラマーになれる
個人的には、LLM以前からあまり良い開発者ではなかった知人たちが、今も最新モデルを使って 悪いコード を生み出している
良いアーキテクチャと一般的な慣行に関するしっかりした知識と理解は、今でもなお核心だ
今では当たり前だと思っている基礎知識や勘どころも、経験が少ないころには身につけるのに多くの時間と努力が必要だったことを、つい忘れがちになる
いつも観察している現象だ
LLMは 力を増幅する道具 にはなりうるが、正しい問いを立てられない人や微妙な違いを理解できない人は悪いコードを作り、その悪さだけが増幅される
現在のモデルがこれを避けられるとは思わないし、とくに学習データが歴史的に人間が作ってきたものだという点にも限界がある
筆算の割り算や基本的な代数ができない数学者を知っている人はいるだろうか?
たぶんいないだろう
なぜなら 基礎数学は高度な数学を学ぶのに必要 だから、そういう人は存在しない
電卓が基本的な計算をしてくれるかどうかは、数学者になりたいなら関係ない
同じように、「5年後に平均的な開発者が手でコードを書くかどうか」は、どんな方法を使うにせよ 複雑なソフトウェアを設計・構築 できるようになりたいならコーディングを学ぶべきかどうかとは無関係だと思う
筆算の割り算のやり方なんてまったく覚えていないが、かつては確かに得意だった
今では暗算もひどいものだ
それでも数学者になる道ではそういうものは必須で、抽象化のレベルが上がるにつれて関係が薄れただけだ
数学者たちから「高度になるほど数学が下手になる」という冗談をよく聞いた
たいていの数学者は筆算の割り算を解くのにかなり考え込むだろうし、その技能を通り過ぎて久しいからだ
それでも電卓やPythonノートブックがあっても、人は分野を前進させるためにあらゆるレベルで手を動かして数学を学び、実践する
人々はLLMが未来のすべてであるかのようにあまりに夢中になっているが、LLM自体は完全に過去の産物だ
LLMは考える機械というより、言語、そして言語で表現された知識に対する 非可逆圧縮JPEG に近い
だから分野を拡張して未来へ進むには、平均への回帰アルゴリズムだけに頼ることはできない
AIエージェントが主に置き換えているコーディングは、開発の外側の層ではないか?
エンドユーザー向けアプリケーション、アプリ、ダッシュボード、業務用アプリケーションのようなものだ
この「表層」では、99%の正確さや肥大化したコードも人はある程度許容できるし、バイブコーディングのアプリでも「十分によい」と主張できる
それでも、AI導入後にMicrosoftのアプリがどれほど惨事になったかを見ればよい
しかし、人々が本当に依存しなければならない中核のコンパイラ、フレームワーク、ツール、ライブラリでは、依然としてLLMは避けられている
99%しか正確でないコードや肥大化したコードの上に構築したい人はいないし、AIがコーディングしたWebブラウザを使いたい人もいない
本当に優れた建築資材を作るには、自分でコーディングし、自分が何をしているのかを理解していなければならない
そうした中核領域で、コーディングを段階的に廃止することに近づいた事例がどこにあるのか?
ただ、抽象化を概念化し磨き上げるのに多くの時間を使うことになる
問題は、概念化には特定の精神状態が必要だという点だ
LLM以前は、10%が難しい思考で、90%が実装だった
実装は一種の報酬であり、フロー状態の中でアイデアを具体化していく感覚はとてもよかった
LLM以後は、かなり頻繁に行ったり来たりしながら考えているだけになった
今では40%が思考、60%が計画とコードレビューに近い
それ以来、フロー状態を経験していない
思考は面白いが疲れるし、レビューはただ煩わしい
特にLLMが奇妙な失敗パターンに陥るときはなおさらだ
以前は、ひどいコードを見れば、書いた人が何を考えていたのか、なぜ動かないのかがすぐわかった
今はコードの臭いは少ないが、抽象化の選び方が間違っていることが多く、ずっと慎重でなければならない
本当にうんざりする
「99%しか正確でないコードや肥大化したコードの上に構築したい人はいない」と言うが、君は Windows を使ったことがあるのか?
身近な友人や家族に聞けば、みんな遅くて肥大化したソフトウェアを嫌っている
それがどれほど時間と生産性を食いつぶしているか、わからないほどだ
LLMの登場後、よくなるどころかさらに悪化した
プログラマーとして生計を立てるにはそういう仕事しか取れない状況になるなら、プログラミングは スポーツ にかなり近いものになるかもしれない
バスケットボールをアマチュアとして楽しみ、高校や大学でより真剣に取り組むこともできるが、バスケットボールで食べていくにはNBAに入れるほど上手くなければならないのと同じだ
提示されている論拠は非常に弱いと思う
希望が持てるどころか憂鬱になったし、残っている論理がこの程度なら、本当に追い詰められてきているという感じがする
さらに言えば、コーディングが芸術だとするなら最悪の芸術だ
むしろLegoのようなものにはるかに近く、意味のある組み立てを完成させたときに得られる満足感に近い
おそらく筆者の要点もそこなのだろう
純粋な趣味としては、依然として価値があるという程度だ
「コーディングは数学の助けになる」という主張も同じくらい弱い
代数には確かに役立つが、全体として見ると、コーディング的な数学は主にコーディング的な数学にさらに役立つだけだと思う
ループ、ルール、条件分岐のある奇妙な種類の数学であり、そもそもソフトウェアがここまで主流でなかったなら主流にはなっていなかっただろう
皮をむいてみれば、その論理は実体のある主張というより、もっと循環論法のように聞こえる
コーディングを学ぶということは、問題を理解し、それを小さく管理しやすい断片に分け、再び組み立てることだ
デバッグし、よりよい指標に向けて反復することも含まれる
こうしたことは、他の 問題解決領域 にも移せる、非常に価値の高いスキルと考え方だ
LLM以前から、実際に自分でプログラムを書いてみなければ、本当に理解したとは言えないことはよく知られていた
ここに近道はない
できる最善のことは、モデルに代わりに見つけさせることだけだ
よいAPIを設計する方法も、システムをモジュールに分割する方法もわからない
問題は、多くの管理職が優れたプログラマーと バイブコーダー の違いをうまく見分けられないことだ
バイブコーダーはPRをたくさん出す
ひょっとすると管理職自身もバイブコーディングしたPRを出せるかもしれない
彼らは、プログラマーが自分たちよりよく知っているかもしれないという考えを嫌う
それは考える方法を教えてくれるからだ
https://youtu.be/BRTOlPdyPYU
説得力のある論拠ではない
人々にコーディングを学べと勧める最良の根拠が、数学の記法に似ていること、つまり初学者が最も嫌う数学の一部だということや、バイオリンのように美しいこと、つまり新人には役に立たないことだとしたら、コーディングは深刻な危機にある
より良い論拠は、コンピュータのように考える助けになることだと思う
ただし、それを学びたいなら、コーディングより先に習得することを勧めたいビデオゲームがたくさんある
ほとんどの人にとって「コーディングを学べ」は、プログラマに「アセンブリ言語を学べ」と言うのに近い
約30年間コーディングしてきた
脳を鍛えるからだ
基本的な論理と制御フローを容易に整理し、解釈し、理解できる脳は、プロパガンダや影響力によりよく抵抗できる
本をたくさん読むのと同じ利点だが、思考の別の経路に作用する
より多くの世界観に触れ、それぞれをより批判的に考えるようになり、一般的な批判的思考が増す
大学の講義ならアセンブリ言語を学ぶこともあるだろうが、それ以外では動機がない
誰もアセンブリ言語を読みたいとは思わなかったし、今では誰もコードを読みたいとは思わない
問題解決そのものは難しくない
人々が気づかないうちに「難しい」数学の塊をコードとして再発明しているのを見たことがある
だから数学はわざとひどく作られているのではないかと思い始めた
コンピュータについて学んだことの中で最も役に立ったのは、論理ゲートを手で作ることだった
コンピュータがどう動くのかについて、それ以上に深く理解させてくれたものはなかった
プログラミングはその次の段階だ
その間のすべての層は推論で補えるので、飛ばしてもよい
アセンブリ言語を学ぶ必要はないが、感覚をつかむために読んでみる価値はある
論理ゲートからアセンブリ言語、プログラミング、ゲーム、そして今ではAIへと続く層を理解することは、ネットワーキングを理解しようとしてOSIモデルを読むのに似ている
抽象化レイヤーが一つずつ積み重なった構造だ
プログラミングを学ぶ価値がある理由は、その上にあるすべてのものが共有する最も高い抽象化レイヤーだからだ
プログラミング言語が何百あっても概念はおおむね同じで、1つの言語を学んでプログラミングを理解すれば、ほとんどすべての他の言語に適用できる
一方でゲームは何万もあり、それが何百もの種類に分かれ、さらに他のアプリケーションまで含めると、そのレベルで変種の木が爆発的に広がる