💻AI & The Future

ソフトウェアエンジニア · 現代生活を動かすコードを書き、テストし、保守する仕事であり、AIが自分自身の日々の作業を自動化していく様子を最初に目の当たりにしている職業の一つでもある。

ソフトウェアエンジニアリングは、このサイトが扱う職業の中でも大規模言語モデルによる自動化を直接に感じている最初期の職業の一つだ。その原材料──厳密なルールに従うテキスト──こそ、まさにこれらのモデルが生成するために作られたものだからである。コードを書き、補完し、レビューするツールは、すでに多くのプロのエンジニアの日々の仕事の一部であり、将来のシナリオではない。

だからといって仕事が不要になるわけではない。仕事の価値ある部分がより狭く、より濃縮されるということだ。以下のセクションでは、すでに自動化されているものと、これまでのところモデルに任せるのがはるかに難しいと分かったものを分けて見ていく。

63 / 100
高い

Share of the work a machine could do

エンジニアが一週間に書くコードの大きな部分──定型コード、初稿のテスト、日常的な変換──は、すでに言語モデルにとって比較的速く生成できるものになっている。自動化が難しいまま残っているのは、何を作るべきかを決めること、もっともらしく見える変更が微妙に間違っている箇所を見つけること、そして本番環境で失敗したときに責任を負うことである。

Scored from the tasks, not the job title. Lower is safer.

Jobs AI cannot take →

What machines cannot take

出荷したものへの説明責任

90

本番環境が壊れたとき、セキュリティホールからデータが漏れたとき、システムが有害な判断を下したとき、誰かが責任を負わなければならない──モデルはその責任を負うことができない。

曖昧な要件を仕様に翻訳すること

83

曖昧なビジネス上の要求を、正確で構築可能な計画に変えるには、まだ自分が何を望んでいるか分かっていないことも多い人々に適切な質問を投げかける必要がある。

システム全体のアーキテクチャ

77

何十ものサービスやチーム、データストアがどう組み合わさるべきかを決め、その決断とともに何年も暮らすことは、一つの関数を書くこととは別のスキルである。

前例のない障害のデバッグ

74

一致するフォーラム投稿も訓練例もない、前例のない本番インシデントは、プレッシャーの下で仮説を立て検証する人間をまだ必要とする。

チーム間の交渉

80

近道のコストをどのチームが負担するか、対立する二つの締め切りのどちらを遅らせるかを決めることは、政治的判断であると同時に技術的判断でもある。

What they already take

定型コードとグルーコード

82

CRUDエンドポイント、フォームバリデーション、標準的な設定といった、よく理解されたパターンを組み合わせる作業は、今では手で打つより生成して確認する方が速いことが多い。

初稿の単体テスト

70

アシスタントは関数を読んでもっともらしいテストケースの初期セットを素早く作れるが、それが正しいものをテストしているかどうかはまだ人間が判断する必要がある。

日常的なコードレビューコメント

60

プルリクエストにおけるスタイル、命名、明白なバグに関するフィードバックは、ますます自動化されたリンターやAIレビュアーに任され、人間のレビュアーは設計レベルのコメントに集中できるようになっている。

言語間のコード移植

65

ある関数や小さなモジュールをある言語やフレームワークから別のものへ翻訳することは、言語モデルがすでにかなり信頼できるパターンマッチング作業である。

How the work is changing

コードを書くことからレビューすることへ

エンジニアの一日のますます大きな割合が、白紙から一行ずつ書くことよりも、モデルが提案したコードを読み、テストし、修正することに費やされている。

小さなチーム、広い担当範囲

かつて一つのプロダクト領域をカバーするのに複数のエンジニアを必要としていたチームは、AIツールに生の出力の穴を埋めさせつつ、一人か二人で済ませることが増えている。

正確な仕様策定が中核スキルになる

システムが何をすべきかを曖昧さなく記述すること──かつてシニアエンジニアの頭の中に暗黙に留まっていたスキル──が、今では直接教える価値のあるスキルになっている。

検証がボトルネックになる

生成されたコードは正しく見えても微妙に間違っていることがあるため、テストの規律やコードレビュー、モニタリングが、生のコード生産に比して相対的に重要性を増している。

New jobs branching off

AI/機械学習エンジニア

アプリケーションではなくモデル自体を構築・微調整する。従来のソフトウェアエンジニアリングと大きく重なるが、統計学により重きを置く。

プロンプト/コンテキストエンジニア

LLMベースの機能を出荷できるほど信頼できるものにする検索、ツール連携、プロンプト構造を設計する。2020年代初頭以前はほとんど存在しなかった専門分野。

AIレッドチーム/安全性エンジニア

モデルとAIが書いたコードを本番環境に到達する前にセキュリティホールやバイアス、失敗モードについてテストする。より大きなセキュリティチームの中で台頭しつつある専門分野。

サイト信頼性エンジニア(SRE)

以前から存在していたが、自ら書き、テストし、デプロイまでするようになりつつあるシステムに対して責任を負う人間として、相対的な重要性を増している。

Outlook

ソフトウェアエンジニアリングは今後10年も高い報酬と高い需要を維持する可能性が非常に高いが、新卒レベルの仕事の形はすでに変わりつつある。定型コードを生産するためだけに存在する職種は減り、より多くの職種でジュニアエンジニアがAI生成の作業をほぼ即座にレビューし、テストし、責任を負うことが期待されるようになる。

有利になっていくのは、問題を明確に組み立て、システム全体について考え、流暢に聞こえても間違った提案の誤りを見抜けるエンジニアである──それは大規模言語モデル以前から重要だった判断力と同じものであり、今はより速く、より大きな規模で適用されているにすぎない。

Keep exploring

More in Engineering & Technology