生成AIによって、これまでのプログラミングのやり方が大きく変わろうとしています。
これまで、プログラマーによって、膨大な時間を費やしながら、一行一行、書かれてきたコードは過去の作業になろうとしています。
■ ザッカーバーグ「ソフトウェアエンジニアたちの終わり」の意味
メタ社のCEOであるザッカバーグの動画が話題を呼んでいます。
生成AIを使って要約してみます。
AIの進化とエンジニアの役割変化
・2025年までにAIが中堅レベルのエンジニアのコードを書く能力を持つようになる
・ソフトウェアエンジニアは、コードを書く作業からシステム設計や戦略的意思決定、イノベーションへシフトAIによる開発の効率向上
・AIの進歩により、開発のスピードと効率が向上
・より多くの企業や個人がソフトウェア開発を行いやすくなる
エンジニアの需要は増加する可能性
・AIが生成したコードの監督、デバッグ、システム設計、複雑なロジックの処理が依然として必要
・AIモデル自体の開発・改善には人間の判断と経験が求められる
・AIによって単純なコーディング作業は減るが、エンジニアの仕事はより高度で戦略的なものになる可能性が
この内容について、日本の環境を踏まえて考えてみたいと思います。
■ 下請け分業構造が破壊される
プログラミングは、ゼロから書くものから、生成AIが作るコードを編集する作業へと転換します。
まず、二次請け以降のプログラミングを生業としてきた下流の下請けが消滅するでしょう。フリーランスのプログラマーも同じ運命をたどります。
一次請けのソフトウェアベンダーは、生成AIを駆使した設計を中心の作業にシフトしていき、必要であればユーザが担っていた要求定義を含めて請け負うように上流シフトが起こります。
逆に、生成AIが書いたコードをデバック、テストするタスクだけを担う形に業務を転換するソフトウェアベンダーも出てきます。ただし、単価は大きく下がります。
また、ユーザ企業も生成AIを使えば、プログラミング作業の壁が下がり、内製化が現実的になります。その結果、外注化の比率を大きく下げることができます。
このような変化によって、国内のITベンダーの市場規模は生成AIによって、凡庸以下のソフトウェア技術者の業務が消滅し、これまで膨張を続けてきたソフトウェアベンダー業界の規模が縮小します。その結果、アメリカで行われているような大規模なレイオフも行われるでしょう。
■ 本物のソフトウェア『エンジニア』だけが生き残る
ところで、『エンジニア』の意味をご存じでしょうか。これも生成AIに聞いてみましょう。
『エンジニア』とは、科学的知識や技術を活用して、設計・開発・構築・運用・保守を行う専門職のことを指します。対象分野は機械、電気、建築、ソフトウェア、化学など多岐にわたります。以下のような能力が求められます。
問題解決能力:技術を活用して課題を解決する
創造性:新しい技術やシステムを設計・開発する
数学・科学的知識の応用:論理的思考に基づいた設計・分析
責任:社会に貢献し、安全性や倫理を考慮した設計を行う
そして、ソフトウェアエンジニア(Software Engineer)は、単なる「プログラマー」とは異なり、ソフトウェア開発の原理や方法論を駆使して、設計・構築・運用・保守を行う専門職を指します。システム設計やアーキテクチャ、品質管理、プロジェクトマネジメントなど、幅広い領域をカバーします。
この内容から、本来、プログラマーは『エンジニア』ではなくテクニシャン(技能者)や職人に分類されます。
これから生き残るのは、ソフトウェア『エンジニア』だけであり、その他は、生成AIのコードのリファクタリングと動作確認をする作業だけをするタスカ-に成り下がるでしょう。
もはや「プログラミングできる=ソフトウェアエンジニア」という短絡的な図式は成り立たなくなります。
つまり、特定のプログラミング言語を「専門」とするプログラミングの仕事だけでは食えなくなります。自動車業界、金融、決済、通信、セキュリティ、画像処理、そして、AI分野など、得意な実世界をバックグラウンドに持ち、実務的な技術課題の解決ができるソフトウェア『エンジニア』しか生き残れなくなります。
これは、現在のミドル層が没落した労働市場のような2極化した世界です。マックジョブで働く人とクリエイティブクラスで働く人では、仕事の内容や待遇に大きな差が出てきます。
■ あなたはソフトウェア『エンジニア』ですか?
ザッカバーグは、生成AIによってプログラミングというタスクから解放されることで、ソフトウェア『エンジニア』の需要は増えるとも言っています。
これは、これからは、コードよりもプロトコル、手順、基準、ルールを詳しく知った上で、問題を考え、解決できることが求められ、プログラマー達が独占してきたソフトウェアをデザインする仕事は、あらゆる業界や職種に属する人も参入可能な仕事になることを示唆しています。
これに対応できる人こそが、ソフトウェア『エンジニア』であると再定義されるということです。
あなたは、クリエィティブクラスであるソフトウェア『エンジニア』でしょうか、それとも、ただマックジョブのタスクをこなすプログラマーでしょうか。
最後に、誤解してはいけないのは、最重視されるスキルではなくなりますが、プログラミングスキルを持ち続けることは有益であることです。なぜなら、ソフトウェアは概念や思考ではなく、コード化されたモノにする必要があり、実現できるかどうかの鍵はコード化に必要な泥臭いプログラミングスキルであることが想定されるからです。
プログラミングだけに固執することなく、プロジェクトマネジメントやビジネススキルなども高めながらパイ型あるいはタコ足型のソフトウェア『エンジニア』になることが求められています。