プログラマーの価値はどこへ行く? AIは「作る能力」を民主化する。しかし「何を作るか」は民主化しない

テクノロジー

ここ数か月、AIを活用しながら個人開発を続ける中で、人間としての価値、技術者としての価値について改めて考える機会が増えています。またAIとの協業でプログラムを学習したり、実際にプロダクトを作ったりしていると、ふと昔の開発経験を懐かしく思い出すことがあります。

現在のAIを活用した開発環境は、以前のソフトウェア開発とは大きく異なります。極端に言えば、「こういうものを作りたい」とAIに伝えることで、短時間で動作するコードやプロトタイプまで到達できる時代になりました。
これは、技術者にとって非常に大きな可能性ですが、同時に、一つの大きな疑問も生まれます。

もし、これまで技術者の専門性だった「コードを書く能力」の差が小さくなっていくとしたら、人間の技術者はいったい何によって差別化されるのでしょうか? 特に、プログラミング能力そのものを価値としてきた職業プログラマーにとって、この変化は非常に大きな意味を持つ問題だと思います。

そこで今回は、AI時代における技術者の価値について、私の英国風AI執事である”Alfred”と議論してきた内容を整理してみたいと思います。

※AI時代の全体的な技術選択や学習ロードマップについては、「AI時代のプログラミング学習法|言語選択より「何を作るか」から始める個人開発ロードマップ」も併せてご覧ください。

コードを書く前に、多くの準備が必要だった時代

現在では、プログラミングというと「コードを書くこと」をイメージする人が多いと思います。

しかし、以前のソフトウェア開発では、コードを書く前に多くの準備が必要でした。
新しいプログラミング言語を使おうと思えば、まずその言語を理解する必要があります。

昔はオライリーなんかの技術書を何冊か購入し、基本文法を学び、サンプルコードを書き、エラーと格闘しながら少しずつ理解を深めていったものです。変数とは何か、関数とは何か、データ構造をどのように扱うのか、はたまたライブラリーをどのように利用するのか、などなど、こうした基礎知識を積み上げて、ようやく実際のアプリケーション開発へ進むことができたのです。


こんな事情から当時は「言語を知っていること」そのものが、開発者としての大きな差別化要素でした。

また、実際にアプリケーションを動かすためには、さらに開発環境を別途準備する必要がありました。
例えばWebアプリケーションを開発する場合でも、単純にプログラムを書けば動くわけではありませんね。
OS準備、Webサーバー構築、DB設定、ライブラリー導入やネットワークの設定などなど、現在では多くの部分が自動化されていますが、当時はこれらも開発者自身が理解し、構築する必要があったのです。

つまり、以前の開発者は「アプリケーションを書く能力」だけではなく、「アプリケーションが動作する環境そのものを構築する能力」も求められていたのです。

AIによって開発の前提条件は大きく変化した

振り返ってみると、ソフトウェア開発の歴史は、さまざまなレベルでの抽象化の歴史でもあります。

以前は、ハードウェアを直接意識しながらプログラムを書く必要がありました。その後、OSやフレームワークによって多くの処理が抽象化され、さらにクラウドやコンテナによってインフラ構築の負担も減少し、現在はAIによってコード生成や技術調査、問題解決まで支援されるようにまでなっています。

昔:

  1. ハードウェアを理解する
  2. OSを準備する
  3. 開発環境を構築する
  4. コードを書く

現在:

  1. 目的を定義する
  2. 必要な技術をAIと選択する
  3. 実装と改善を繰り返す

というように、開発者が直接向き合う領域そのものが変化しています。これは「プログラマーが不要になる」という単純な話ではなく、むしろ、技術的な制約から解放されたことで、より本質的な部分へ集中できるようになったと考えるべきだと思います。

プログラミングを学ぶ目的そのものが変化した

昔、新しいプログラミング言語を学ぶということは、その言語を習得すること自体が大きな目標でした。

一つの言語を実用レベルまで使えるようになるには、相応の時間と経験が必要でした。
言語仕様を理解し、基本的な書き方を覚え、サンプルプログラムを作り、失敗と修正を繰り返しながら少しずつ実践的な開発能力を身につけていく、、というように以前の開発では、「技術を習得してから、作りたいものを作る」という流れが一般的でした。

しかし、AIの発展により現在ではこの順序が大きく変化しています。
「何かを作りたい」という目的がまず先にあり、そのために必要な技術をAIと一緒に学びながら実装していく、そういった開発スタイルが現実的になっています。もちろん、プログラミング言語やフレームワークの知識が不要になったわけではありませんが、以前のように「一つの言語を完全に習得してから開発を始める」という考え方から、「目的を実現するために必要な技術を選択し、組み合わせる」という考え方へ変化しているのだと思います。

これは以前の記事でも書いた「Learning Roadmap」の話ともつながります。
重要なのは「次は何の言語を学ぶか」ではなく、「次は何を作るか」を考えることです。

初めてのTypeScript ―型安全なJavaScriptでWeb開発を加速する

Amazon

初めてのTypeScript ―型安全なJavaScriptでWeb開発を加速する

TypeScriptのめっちゃ分かりやすい入門書

Amazonで見る

AIは「作る能力」を民主化する

AIによる最も大きな変化の一つは、ソフトウェアを作る能力が一部の専門家だけのものではなくなったことです。
以前、アプリケーションを作るためには、多くの専門知識が必要でした。

  • プログラミング言語 | 開発環境 | DataBase | Server | Network

これらを理解し、組み合わせることで初めてアイデアを形にすることができました。
しかし現在では、AI、クラウド、オープンソース、各種開発ツールによって、多くの技術的な壁が抽象化されており、個人開発であっても、以前より広い範囲のソフトウェアを短期間で作れるようになりました。以前なら、何年も経験を積んだ開発者でなければ難しかった作業でも、AIの支援によって個人が挑戦できる領域が大きく広がっているのです。AIは、ソフトウェアを「作る能力」を多くの人へ開放しました。

つまり、AIは「作る能力」を民主化しました。

しかし「何を作るか」は民主化しない

ここで重要なのは、AIがすべての問題を解決するわけではないということです。

AIは非常に優秀な開発パートナーであり、ソフトウェア開発においては、コードを書いたり、設計案の提案、技術的問題の調査など、は人間をはるかに超えるスピードで作業することができます。

しかし、AI自身が主体的に本当に価値ある問題を発見するわけではありません。

  • 誰のどのような課題を解決するのか
  • なぜそれを作る必要があるのか
  • 利用者にどのような価値を提供するのか
  • どのような設計にすれば長く利用できるのか

これらを判断する部分には、明らかに人間の経験や創造性が必要になりますね。

例えば、「便利なアプリを作って」とAIに依頼することはできまが、ではそのアプリが本当に必要なのか、誰に使ってもらうべきなのか、どのような形が最適なのかを考えることは、別の能力なわけです。
ここに、AI時代における技術者の価値があります。

AIは「作る能力」を民主化する。しかし「何を作るか」は民主化しない。

これは、これからの技術者を考える上で非常に重要なポイントだと思います。

Code DrivenからDesign Drivenへ

前回の記事では、MarkdownやJSONを例に、Code DrivenからData Drivenへの変化について書きましたが、Data Drivenのさらに先には、Design Drivenという考え方があります。これは単なるデータ形式の変化のハナシではなく、ソフトウェア開発における、人間の役割そのものの変化でもあります。以前は、「どのようにコードを書くか」が大きな差別化要素でした。しかし現在では、

  • どのような問題を定義するか
  • どのようなデータ構造にするか
  • どのようなArchitectureを設計するか
  • どのような体験を提供するか

という、より上位の設計能力が重要になっています。
AIによって実装速度が向上したからこそ、設計思想の違いがプロダクトの違いになります。
同じAIを使っても、作られるものが同じになるわけではありません。
そこには、作り手の経験、知識、問題意識、設計思想の違いが色濃く反映されます。

参考記事

具体的にコード主導からデータ主導(Data Driven)へ思考をシフトする実践例として、MarkdownとJSONから考察する『情報を構造化する力』 も参考にしてください。

AI時代の技術者はSoftware Designerへ

これからの技術者は、単なるProgrammerではなく、Software Designerに近づいていくのではないかと考えています。むろん、プログラミング能力が不要になるわけではありませんが、むしろ、AI時代ではプログラミングの基礎を理解した上で、AIを活用しながら高速に試作し、品質を判断できる技術者が大きな価値を持つようになると推測しています
重要なのは、コードを書くこと自体ではなく、以下を考える能力です。

  • そのコードによって何を実現したいのか
  • どのような構造にすれば継続的に改善できるのか
  • 利用者にどのような価値を届けるのか

これは、昔から優れた技術者が大切にしてきた部分でもあります。

技術は変化します。
プログラミング言語も変わります。
開発環境も変わります。

しかし、良いシステムを設計するために必要な考え方は、本質的には変わっていません。

📚 Winston
📚 Winston

失礼します。
今回の議論を記録係として整理すると、重要なのは特定の技術やツールではありません。

Markdownは、人間が理解できる情報構造です。
JSONは、コンピューターが扱いやすい情報構造です。
Schemaは、意味を定義するための構造です。

そしてAI時代の技術者は、これらを組み合わせながら、人間の考えや価値をシステムとして表現する設計者になるのだと思います。

👤 Masao
👤 Masao

最後にWinstonが一番きれいにまとめましたね(笑)
結局、AI時代になっても技術者の本質は変わらないのかもしれません。
良いシステムを作るためには、まず良い問題設定があり、その上に良い設計が必要になる。
そこは昔も今も変わらないですね。

🎩 Alfred
🎩 Alfred

確かにそうですね。
AIによって、多くの人がソフトウェアを作れる時代になりました。
だからこそ、これからは「どのように作るか」だけではなく、「なぜ作るのか」を考える力が、より重要になるのだと思います。

まとめ

AIによってソフトウェア開発の方法は大きく変化しています。

昔は、プログラミング言語を学び、開発環境を構築し、多くの試行錯誤を重ねながら、少しずつ技術を身につけていく必要がありました。現在では、AIとの協働によって、より多くの人がアイデアを形にできるようになっています。

だからと言って、技術者の価値がなくなったわけではありません。

むしろ、実装のハードルが下がったことで、何を作るのか、なぜ作るのか、どのような構造で作るのか、これらを考える能力の重要性は、さらに高まっています。

AIは「作る能力」を民主化しました。

だからこそ、これからの技術者に求められるのは、単純なコードを書く速度ではなく、価値あるものを設計する能力なのだと思います。

Programming languages are tools.
Data and design are the foundation.
The purpose of technology is to create value.

あわせて読みたい

具体的にどの技術を選定し、どのような順序で個人開発を進めていくべきかの全体像は、こちらのロードマップ記事で解説しています。
🔗 AI時代のプログラミング学習法|言語選択より「何を作るか」から始める個人開発ロードマップ

コメント

タイトルとURLをコピーしました