世界を動かす技術を、日本語で。

AIがジュニア開発者を無用にしている

概要

  • AIの普及 により、開発初心者が本質的な経験を積む機会が減少
  • 経験豊富な開発者 の価値は失敗から学んだ直感にある
  • AI活用時代 でも本当のスキルを身につけるための5つの戦略を提案
  • 「なぜ?」を問う姿勢 と自分で考える習慣の重要性を強調
  • 成長のための具体的アクション と推奨書籍を紹介

AI時代のエンジニア成長戦略

  • AIの台頭 によって、表面的な「できる感」が簡単に得られる時代
  • 本質的な成長 には、失敗と試行錯誤の経験が不可欠
  • 経験者の価値 は「何をすべきでないか」を身をもって知っている点
  • AI頼み では「なぜこのコードなのか?」に答えられないリスク
  • 本物の実力 は、コードやシステムの良し悪しを見抜く直感に由来

よくある課題

  • AI生成コード の内容や選択理由を理解しないまま使う危険
  • コードレビュー で「なぜこの方法?」と問われて答えられない不安
  • 失敗経験の欠如 による「浅い理解」と「応用力の不足」

成長のための5つの戦略

  1. 基礎の徹底理解

    • AIの提案 を評価するために、まず「良いコード」とは何かを知る必要
    • 推奨書籍:
      • Head First Design Patterns :パターンの使い分けを直感的に理解
      • Designing Data-Intensive Applications :システム設計の失敗や学びを体系化
  2. 失敗事例の研究

    • 大手クラウドサービス (Cloudflare, AWS, Azure, Google等)の障害報告(ポストモーテム)を読む
    • 社内の障害分析資料 (AmazonのCOEなど)も貴重な学びの宝庫
    • 実際の障害経緯 を追体験することで、記憶に深く残る
  3. 「苦労」を自ら作り出す

    • AIに頼る前 に自力でエラーやバグを追跡・解析
    • スタックトレースやログ を読み解く習慣を持つ
    • オンコールや不人気チケットへの挑戦 で、システムの本質的理解を深める
  4. 理解できないコードは絶対に出さない

    • AIの提案 をそのまま使うのはNG
    • 全てのコミット に対して「なぜこの方法か?」を説明できるようにする
    • 理解が不十分なまま出すと、信頼を失うリスク
  5. 「なぜ?」をAIに問い続ける

    • AIへのプロンプト は「答え」だけでなく「理由」や「選択肢の比較」も求める
    • 選択肢ごとのメリット・デメリット をAIに説明させることで、より深い学びとより良い提案を得る

成長とアウトプットのバランス

  • 「遅くなると評価が下がる」不安 は現実だが、全てを急ぐ必要はない
  • 空き時間やサイドプロジェクト、不人気なタスクで本質的な学びを積む工夫
  • AIは最強の家庭教師 として活用し、「教えてもらう」意識で接する
  • スキル構築と成果物出し のバランスを意識

エンジニアとしての本当の価値

  • コードを生み出す速さ よりも、「良い/悪い」を見抜く力が本当の価値
  • AI時代 でもその力は変わらず重要
  • 今こそ本物のスキル を意識的に身につけるべきタイミング

推奨書籍リスト

  • Head First Design Patterns
  • Designing Data-Intensive Applications

まとめ

  • AI時代の成長戦略 は「自分で考え、理由を問い、失敗から学ぶ」こと
  • AIを使いこなす力 と「本質を見抜く直感」の両立が重要
  • 今あるツールと情報 を最大限活用し、主体的に学び続ける姿勢

Hackerたちの意見

私が学生たちに言うのは、「ジュニアたちよ、コードを書かなきゃダメだ」ってこと。みんなもそう思うでしょ?ジュニアがコードを書くのを許可しないと、シニアは生まれないんだよ。シニアが欲しいなら、ジュニアにコードを書かせるべきだよ。

問題は2つのことから来てる。1) 「LLMはジュニアと同じくらい賢い」と聞いた人たちが、ジュニアを雇う代わりにLLMのサブスクリプションを選んでしまうこと。2) シニアとジュニアのパフォーマンスの差が大きくなってきてること。シニア開発者たちは何年も手を汚して手動で作業してきたし、いろんな課題にも取り組んできたからね。この世代のジュニアからミッド開発者は、「手で打つ作業」の多くが省かれてるのに、まだそれが大丈夫だと思ってるのが問題だよ。

ここでの意見には賛成だけど、提案された解決策にはあまり希望を持ってない。人間が複雑さを管理する必要があるという私の主張は、モデルがその複雑さを自分で管理できるようになっていくからなんだ。これを裏付けるのは、過去3年間でモデルが進歩した速度(ChatGPTは3ヶ月前に3歳になった)だと思う。ソフトウェア業界全体が、この能力はここで止まらず、どんどん成長していくことを理解する必要があるよ。説明できることは、最終的にLLMができるようになるからね。

シニアはジュニアから生まれる。シニアが欲しいなら、ジュニアにコードを書かせるべきだ。エンジニアの平均在職期間が短すぎて、ほとんどの雇用主が個人を育てることを考えていないんだ。実際のアプローチは「シニアが欲しいなら、シニアを雇うべき」って感じ。今後どうなるかは分からないけど、前の世代のCOBOLプログラマーのようなシナリオは想像しやすいね。

以前は、すべてのエンジニアがCを書くことから始めるべきだって教えられてたけど、現代の開発者のほとんどはそうじゃなかった。シニアは、シニアの意味が変わることや、そこに至る道も違うことを覚悟しておくべきだよ。低レベルの言語から高レベルの言語へのシフトがあったようにね。

コードを書きたがるジュニアを見つけるのがどんどん難しくなってきてるし、誰が本当にやる気があるのか見極めるのも難しい。ジュニアにこの決断をさせて、自制心を持たせるのは、ちょっと危険な二面性があると思う。私が彼らにやってほしいと思っても(本当にそう思ってる!)、競争心が強いジュニアたちは、AIによるコード生成に頼る傾向があると思う。それが彼らをより良く見せて、生産的に見せるからね。シニアは、ジュニアにコードを書かせるだけじゃなくて、何らかの形でそれを促したり、要求したり、あるいは強制したりする方法を考える必要があると思う。

シニアはジュニアから生まれる。シニアが欲しいなら、ジュニアにコードを書かせなきゃ。企業もそれを知ってるけど、これは囚人のジレンマみたいな状況なんだ。企業はジュニアをスキップして、シニアを他の会社から引き抜くために少し高い給料を払うことができる。みんながこれを始めたら、当然みんなが損をする。新しいシニアが足りなくなるからね。これを避けるには、ほとんどの企業がルールを守る必要があるけど、簡単にはいかない。ジュニアのトレーニングにかかるコストが経済的な成果に対して高くなるほど、ルールを破るインセンティブが大きくなる。もう一つの選択肢は、厳しい競業避止契約を設けて、社員が会社を移るのを難しくすることかもしれない。でも、これは法的に難しいし、一般的に社員にとって良いことではないよね。

すべてのキャリアパスがソフトウェアファーストの会社から始まるわけじゃないし、すべてのソフトウェアファーストの会社が最も厳しいコードベースで働いてるわけでもない。だから、僕の経験では、すべてのシニアエンジニアがもっと厳しい会社でシニアエンジニアとしてやっていけるわけじゃない。これってソフトウェア特有の経験じゃないよ。これが人生なんだ。

本当の疑問は、ジュニアにコードを書かせてシニアになるためにお金を払う必要があるのかってことだよね。もしコーディングがアートなら、ジュニアたちは他の苦しんでるアーティストたちと同じ場所に行き着くことになるし、成功するアーティストだけが報酬のあるコーディングの仕事を得ることになる。今、週末に無給で情熱プロジェクトのコーディングをしてるから、ちょっと考えちゃうよ。

問題は、コストに敏感な企業がこれをサポートしてくれるかどうかだね。ジュニアはコストがかかるし、育ててもすぐに辞めちゃうから、根本的な問題だよ。リテンションは賢い企業でしか機能しないし、他の多くの企業では回転ドアみたいになっちゃう。いい面もあって、30年以上の経験を持つ開発者として、最近はかなり良い契約給をもらってるよ。プロセス地獄や製品の劣化にハマってる回転ドア企業は、新しい価値を提供できずに、高いコストの経験豊富な開発者を探し回ってる。今の給料は、キャリアの初めに比べたら全然マシだよ。

シニアが欲しいなら、ジュニアにコードを書かせなきゃダメだ。ジュニアは増やしたくないな、時間が経てば彼らが競争相手になるから。

実際、多くのシニア開発者もあまり優秀じゃなくて、逆にマイナスの価値を持ってることもあるんだ。でも、彼らは現実を反映しない自分の価値を過大評価してる。ほとんどのソフトウェアプロジェクトはピークを迎えた後、質が下がっていくみたい。実際に優れたプログラマーのシニア開発者は世界に数人しかいないよ。

Hacker Newsで議論の続きを見る