AI時代に求められるスキルと採用戦略
2025年、Vibe Codingが流行り、AIによる開発が主流となってきています。
過去の採用フローではいわゆる競プロ的コーディング試験を取り入れていたのですが、「AIを使わないアウトプットを見ることに意味はあるのか」とたびたび議題にあがりました。
そこで本記事ではAI時代に求められるエンジニアスキル、そしてどのような採用プロセスでそうした人材を見極めるべきかを探ります。
70%問題
今年に入ってからAIエージェントも勢い付き、「エンジニアの仕事はあと数年でなくなる」という言説も多くなってきました。
一方でいざ現場に入れ込むと、簡単なタスクを完遂してもらうのも難しいのが実情です。
この要因としてあるのは、いわゆる70%問題です。
簡単に言えばAIアシスタントは要件の70%まではスピーディに実現できるが、残りの30%は未だ人間がカバーしなければならないというものです。
具体的には以下のような問題が残ります。
- バグを修正しようとして別のバグを生み出す、"The two steps back パターン"
- エッジケースをカバーできておらず、実運用に回すと問題だらけのコードができあがる
- セキュリティの考慮が甘く脆弱性のあるシステムが出来上がる
- 保守性の低いコード
ジュニアエンジニアの死
この文脈から、「The death of the junior developer」という言説も流行りました。
これは、経験の浅いエンジニアがAIの生成した一見洗練されたコードを無批判で受け入れてしまう危険性を指摘するものです。
AIのアウトプットを無条件に受け入れるだけの作業ならばDevinのようなAIエージェントで代替可能であり、AI以上の付加価値を生み出せないエンジニアの市場価値は確実に低下していくでしょう。
しかし、これはジュニアエンジニアの需要そのものが消滅することを意味するのではなく、求められるスキルセットが大きく変化することを示唆しています。
AI時代に求められるスキル
『Vibe Coding - The Future of Programming』の洞察も参考にしながら、AIと共創する時代に価値を発揮するエンジニアスキルを整理します。
エッジケースとセキュリティリスクの発見能力
AIが生成するコードは、局所的な要件にはうまく適合します。
しかし、システム全体やビジネスルールまで視野に入れると、どうしても穴が生まれます。
たとえば、
- 他システムとの連携における整合性の問題
- ドメイン固有の業務ルールに基づくエッジケース
- 仕様やドメイン知識に基づいた、コンテキストに収まらないエッジケースの考慮
こうした「想定外」に気づき、手当てできるかは、AI時代にこそ問われる力です。
『Vibe Coding - The Future of Programming』では、コードのテストを書くことはジュニアエンジニアが身につけられる最良の習慣の1つと強調しています。
LLMの生成コードをまず検証するユニットテストを書き、要件とエッジケースを検証することは問題点を発見し、想定される動作について考える訓練になるからです。
システム設計とアーキテクチャ
システム設計は、全体像を把握した上で様々なトレードオフを適切に判断する複雑な作業です。
- 高負荷システムの対処方法
- 分散システムの設計原則
- データベースアーキテクチャと性能特性
- クラウドインフラの最適活用
こうした設計判断はコンテキストへの依存性が高く、現状のAIツールでは十分にサポートしきれない領域です。
保守性を考慮したコード設計
多くのAIモデルは個々のファイルや関数、スニペットの集まりからコードの学習をしているため、大規模なコードベース全体の整合性維持には課題があります。
- 複数ファイルにまたがる依存関係の管理
- コンポーネント間の責務分離
- 一貫性のある命名規則と設計パターンの適用
- 将来の拡張性を考慮した抽象化レベルの設定
こうした秩序を維持することこそ、人間エンジニアの重要な役割です。
AIをコード生成用途ではなく、能力拡張用途で使用している
単にコードを書かせるためにAIを使うのではなく、AIから学び、自らの理解を深める道具として活用することが重要です。
AIのアウトプットを鵜呑みにせず、
- どうしてこのコードになったのか
- なぜこの設計が選ばれたのか
を常に問い直し、疑問があれば掘り下げる。
このプロセスを通じて、AIを使えば使うほど、自分自身も成長できるエンジニアへと進化していけます。
コーディング以外の力
コーディングをAIに担ってもらった上でも、エンジニアに残された仕事はたくさんあります。
たとえばPdM、デザイナー、その他関係者とコミュニケーションを行うエンジニアの価値はますます高まるでしょう。
ドメイン知識を得て、ビジネスコンテキストやユーザ環境を理解した提案、UI/UXデザインに挑戦するのも良いでしょう。
学習ハードルはAIによって下がっているため、新しい領域に挑戦する柔軟性と好奇心が、大きな武器になります。
そもそもAIを活用していること
最後に、そもそもとして、AIを活用できることそのものが今後ますます重要になっていきます。
『The Death of the Stubborn Developer』では、AIの活用を拒否するエンジニアのリスクについても語られています。
もちろん、現職でAIを使う環境にないケースもあります。
しかし、これからの開発スタイルは間違いなくAIを前提とする方向に進みます。
その波に自然に乗れるかどうかが、未来のエンジニアのキャリアに直結していくでしょう。
AI時代のエンジニアの採用戦略
AI活用の経験・意向の確認
まず確認したいのは、AIを活用した経験や、それに対する意識です。
たとえ現職ではAIツールの利用が禁止されていたとしても、情報収集やキャッチアップに意欲的かどうかを見ることはできます。
AI時代においては、アンテナを張り続ける姿勢自体が重要なスキルといえるでしょう。
コーディング試験
コーディング試験では、AIやGoogle検索の使用を自由とします。
与える課題は、単なるアルゴリズム実装のような閉じた問題ではなく、実務に近い開発課題とします。
採点においても、仕様の充足だけでなく、
- 設計の整合性
- 保守性を意識した命名や関数分割
- 全体構成の美しさ
といった点を重視して評価していきます。
単なる「動くコード」ではなく、保守性や全体感を意識したコードを書けているかを見極めます。
コーディング試験からの学びの確認
AIを積極的に活用している応募者の場合、作成したコードに対する理解度を確認します。
「なぜこの設計にしたのか」「この関数はどんな役割を持たせたのか」などを問うことで、AIを使った先に、どれだけ自分の血肉にできているかを見ていきます。
理想は、同じ課題に再び取り組むとき、今度はAIに頼らず自力で解ける状態になっていることです。
エッジケースとセキュリティリスクの発見能力
AIとの開発では、仕様通りの実装以上に、想定外の事態に気づけるかが重要です。
そこで、あえて仕様に曖昧な部分を残した課題を用意し、
- 想定されるエッジケースをどれだけ洗い出せるか
- 曖昧な仕様をどう具体化しようとするか
- セキュリティ上のリスクにどれだけ敏感か
といった観点から、地力を見極めます。
AIのアウトプットを無批判に受け入れるのではなく、そこにある課題を発見できるエンジニアを発掘するためのアプローチです。
過去の経験からの学びの深さの確認
最後に、これまでの経験に対する理解の深さを確認します。
履歴書に並ぶ技術スタックをなぞるだけでなく、
- どういう判断基準でその技術を選んだのか
- どんなトレードオフを経験したのか
- そこから何を学び、次にどう活かしているのか
といった深掘りを行います。
このプロセスを通じて、AI時代にも学び続ける姿勢を持てる人材かを見極めていきます。
まとめ
本記事では、AI時代におけるエンジニアに求められるスキルセットと、それを見極めるための採用戦略について考察しました。
2025年現在、Vibe Codingに象徴されるように、AIと協働しながら開発を進めるスタイルが主流となりつつあります。
もはや「AIを使わずに書かれたコードの質」だけを単体で評価する時代ではなく、AIをどう使いこなし、どのように人間ならではの価値を発揮できるかが問われています。
『The End of Programming as We Know It』でも語られているように、プログラマーという職業が消えるわけではありません。
ただし、役割やスタイルはこれまでとは大きく変わるでしょう。
技術を磨くだけでなく、学び方を磨き、考え方を磨き、チームに貢献する力を磨く。
これからのエンジニアには、そんな総合的な進化が求められています。
こうした時代において、採用もまたアップデートが必要です。
本記事が、同じように悩み模索している皆さまの参考になれば幸いです。
Discussion