AI時代にもプログラミングを学ぶべきか
(htmx.org)Montana State University のコンピュータ工学科教授であり、htmx の創始者でもある Carson Gross が、「AI時代にもプログラミングをキャリアとして追求すべきか?」という問いに「Yes, and…(そうだ、そして…)」と答えるエッセイ。
"Yes" — そうだ
- プログラミングの本質は、コンピュータを使った問題解決と複雑性の制御。この能力の価値が下がる未来は想像しにくい
- ただし AI はジュニアにとって危険。コードを自分で書かなければ、コードを読むこともできなくなる
- コードを読めなければ「魔法使いの弟子の罠」にはまり、理解も制御もできないシステムを作ることになる
コーディング→プロンプティングは、アセンブリ→高級言語とは違う
- コンパイラは決定論的(deterministic)だが、LLM はそうではない
- 高級言語は偶発的複雑性(accidental complexity)を取り除いたが、LLM が生成するコードはむしろ偶発的複雑性を追加することが多い
AI はコード生成器ではなく、優れたティーチングアシスタント(TA)
- 概念や手法を理解するためのパートナーとして活用すれば、知的成長に効果的
- 偶発的複雑性のせいで行き詰まる壁を越えるのに特に有用
- AGENTS.md ファイルを共有し、AI がコード生成器ではなく TA として振る舞うよう設定する
"and…" — そして
純粋なコーディング能力の重要性は下がるかもしれない
- その代わり、より重要になるスキル:
- コミュニケーション能力 — LLM に対しても人に対しても、明確に書き、伝える力。本を読み、エッセイを書くことが役立つ
- ビジネス理解 — 「プログラマーは不要だ」というビジネス側の見方も、「ビジネス人材は不要だ」というプログラマー側の見方も、どちらも近視眼的。AI は現実の問題をより深く理解する機会を与えてくれる
- システムアーキテクティング — 大規模システムの複雑性を制御する能力。ただし、悪いアーキテクトの多くはコーディング経験が不足していた
シニア vs ジュニアの LLM 活用法
- シニア: コード分析、思考整理、小さなコード片の生成、やりたくないコード(正規表現、CSS)の生成、探索用コード、テスト提案などに活用する。完全なソリューション生成はさせない。API 設計は絶対に任せない
- ジュニア: バイブコーディングの誘惑に抗うべき。速度より理解を優先するほうが、長期的には勝つ。企業もやがて、バイブコーディングによる複雑性爆発の問題に気づくだろう
就職活動の助言 — 4F 戦略
- オンラインの求人サイトは、ほとんど宝くじのようなもの
- 4F: Family(家族)、Friends(友人)、Family of Friends(友人の家族)
- 大手テック企業である必要はない。100人以上の会社なら、たいてい開発組織がある
- Costco 本社の事例: 家族のコネで入り、アナリストとして始め、そこにプログラミング能力を加えれば非常に価値が高くなる
結論
プログラミングの基礎、特に良いコードを書き、複雑性を制御する能力は、これからも永遠に重要であり続ける。雇用市場の低迷は一時的なものだ。そして企業には、ジュニアがコードを直接書けるようにしてほしい。
31件のコメント
アーキテクチャを理解できなければ、バイブコーディングは意味がない..
誰でもケチャップをかけたパスタは作れる
イタリアンパスタは誰にでも作れるものではない
イタリアンパスタが$20で、ケチャップをかけたパスタが$2なら、私は後者を食べますが……
ユーザーは2ドルのものにお金を払いません。
話のポイントを理解できていないようですね
はい、本文も読まずにコメントしたことを告白します;;
ホテルや専門店では、ケチャップをかけたパスタなんてそもそも成立しませんよね。
家で適当に済ませると考えるなら、ケチャップをかけたパスタにも意味はありますが…
私は特別な日にシェフが作ったイタリアンパスタを食べたいです
問題はパスタではなく、低級ワインが2ドルでも高級ワインは数千万円するのに、需要は着実に存在しているということです。
私も特別な日ならイタリアンパスタを食べますが……普段なら……
素晴らしいコメントですね。たった3行で簡潔に要約されています。
私たちはエンジニアです。自分が扱い、提案するものを理解し、責任を持つことこそがエンジニアです。そうしたことは必要ないと主張するのは、単に自分がそういう環境で働いているというだけです。AIはその本質を変えるのではなく、むしろそれを極端な形で浮き彫りにするだけです。PRを理解していなくてもまったく問題ないのだとしたら、それはもはやPRではないでしょう。
会社で上司が部下の仕事を理解していなければ、仕事を任せることができるでしょうか。
理解していなくてもやってくれる? 何をしているのか把握できるでしょうか。
人間の産物では、常に概して『人間の意図』が重要でした。実装そのものではなく
電卓が登場したからといって数学を勉強しなくなるわけではないのと同じように...
自分の領域が代替されないことを願うより、できるだけ早く皆まとめて代替されることを願うほうが現実的だと思います。みんなもう、うっすらとは感じているはずです。
アセンブリ言語を知らなくてもコーディングできるように、
Rustを知らなくてもコーディングはできるようになる気がします。
どうせ人間だって、コーディングするたびにコードは変わるものですし。人によっても違います。
でも、みんなRust開発者なんですよね。
AIの複雑性の問題は、結局はAIが解決するようになると思います。人間にしかできないという思い込みやプライドは捨てるべきです。
現在のようなLLM構造では不可能です。まったく異なるパラダイムが必要です。
それでも、その間に人間は食べて生きていかなければならないですからね…
皆さんがこの過渡期をうまく乗り越えられることを願っています。
AIの発展によって、プロジェクトでも実際に人員が削減されています。1人減るだけでも、管理職はビジネスに加えてAIをうまく活用できなければ整理対象になるように感じます。
とにかく削減しようとするより、その人員を別の方面に回して、新しい仕事やこれまでできなかった仕事をさせるほうがいいと思うのですが。急に減らすのはあまりにも近視眼的ですよね。
LLM/Agentic Coding は、現時点では優れたツールではあっても、優れたエンジニアではありません。Agentic coding において優れた Plan が重要であるように、結局はユーザー自身がコードを理解し、判断できる能力を持っている必要があります。たとえば、fastrender や CCC は Agentic Coding の可能性を示しましたが、同時に明確な限界も示しました。
別の聞き方をしたいです……「自分の子どもに、この職業を勧めるだろうか?」
私の周りでは、子どもをコンピュータ工学科に進ませるのが一種の流れでした。今はかなり変わったように思います。
バイブコーディング以降の人たちは、開発の勉強をするのが簡単ではなくなりそうです。学習があまりにも非効率になってしまって……。カチッと押すだけで満足しやすいので。
バイブコーディングは単に成果物を作るだけで、実装した成果物に対する理解があるかないかの差は本当に大きいと思います。その理解は、おっしゃる「開発の勉強」を通じて生まれるのだと思います。
むしろAIの発展によって何かを学ぶコストが大きく下がり、より多くのことを学べる良い時期になっている気がします。
バイブコーディングで動くコードを作ることはできますが、結局それをレビューしなければならないのは人ですし、バイブコーディングだけで保守しやすく拡張性のあるコードを生み出すのは簡単ではありません。
そして結局、人が検証するのにさらに時間がかかるため、生産性は結局それほど変わらないという研究結果もあります。
個人のこうした努力も重要ですが、国家単位の構成員による議論を通じて、社会システムに対する支援が必要です。
私もとても同意する内容です。後輩たちによく話すのですが、ただの説教くさい言葉のように受け取られないかと悩むことが多いです。
とても共感できる内容です。