kawasin73のブログ

技術記事とかいろんなことをかくブログです

AI とソフトウェアエンジニアの未来予想

キャリアの危機。どうもかわしんです。

この記事の内容は全て僕個人の意見であり、所属する組織を代表するものではありません。

最近周りで ChatGPT が話題です。特に GPT-4 が出てきたあたりからの Twitter で観測する人々の騒ぎ方をみるにこれまでとは何か潮目が変わったなと感じたので、これからの自分のキャリアを見つめ直すことにしました。

AI は詳しくないので間違ってることがあるかもしれないですが、それはそれで。

ChatGPT にみる AI の特性

GPT は大量の文章データを学習し、入力文章から文章を出力するものです。大規模言語モデルの驚異と脅威 - Speaker Deck のスライドを読んだ感じは、学習したデータを元に出力単語列にもっともらしい次の単語を繋げて文章として出力しているみたいです。

これを発展させると、GPT は「公開されているそれぞれの領域の最先端の知識やスキルに低スキルな人材でも簡単にアクセスできるツール」であると考えることができると思います。GPT は特にそのスキルの具現として、既に完成しているものの再現であったり既存のパターンを当てはめることは、得意でありそうな予感がします。

逆に言えば、ネットでアクセスできない秘密や、最先端の人々より上のスキルや情報は GPT からは出力されません。出力されたらされたでそれは AI によるより優れた AI の産出の可能性でありシンギュラリティになりますが。

現時点では普通にもっともらしい嘘が返ってくるなどその正確性は 100% 信頼できるものではないですが、あと数年経てばその正確性も改善されるはずで人間が出したアウトプットと同じ信頼性を持って受け入れられるようになると思います。ChatGPT が書くコードは検証する必要があり、その検証をするためにそもそものスキルがあることが求められるからソフトウェアエンジニアは依然として安泰だという意見もみられますが、GPT が書くコードが人間が書いたコードと同じ程度に信頼され、その検証すら必要なくなる未来は近いと思います。

ソフトウェアエンジニアとしての価値の源泉

現在、我々ソフトウェアエンジニアはそれなりの高給と働きやすい恵まれた環境にあります。なぜ我々ソフトウェアエンジニアにそれだけのお金が与えられるのか、その価値の源泉はソフトウェアエンジニアにしかプログラムが書けないからであり、また、まともなプログラムを書くことのできる人間の数が少ないからです。

いわばよく勉強して経験を積んだソフトウェアエンジニアであるからそれに見合った高い給料があるわけですが、GPT によってその勉強の成果と経験は誰でもすぐにアクセスできるものになってしまいます。そう、誰でもプログラムを書くことのできる未来です。

5年前に 作る人と使う人 - kawasin73のブログ で予想したように、アプリケーションは誰でも作ることができるようになり製作者としての優位性はビジネス価値やデザインを創出することができるかに寄ってきます。

僕自身はシステムエンジニアの道を選びました。では、我々ソフトウェアエンジニアが高給を保つためにはどのような戦略を取ればいいのでしょうか。

労働者としてのソフトウェアエンジニアの生存戦略

生存戦略としては3つあるかなと思います。

AI にできない、自分にしかできないことをする

OS やミドルウェアなどのシステムソフトウェアはアプリケーションに比べると要求される技術レベルが高く AI にはすぐに模倣することは難しそうです。しかし、技術要素は新しく発明されたものでない限り既存の技術の延長線上にありパターンがあります。パターンの適用が得意な AI に追いつかれるのも時間の問題なような気もしますが、AI との競争もグラデーションであるはずで最後まで残りそうな気もします。

ソフトウェアエンジニアの仕事として例えば、パフォーマンス改善や適切な API 設計、トレードオフの洗い出しと意思決定などがありますが、実際にやってみるとこれもパターンや定石に従ってるだけだなぁと思います。

新しい技術の発明や開発の上でのコミュニケーション以外で、多分ソフトウェアエンジニアにしかできない技術的な優位性というのは無くなってしまうのではないかと思います。

AI を活用して誰よりも効率よく大量のアウトプットを出す

AI のサポートによって最低限の経験を積んだエンジニアは十分な経験を積んだエンジニアと同じようなアウトプットができてしまいます。質が担保された以上、量で勝負するしかないです。

これからのソフトウェアエンジニアは手の速い人、アウトプットの多い人に価値が出てくると予想します。しかし、馬車馬のように働き続け、自分の稼働率を如何に高い状態で維持するかが求められる仕事は疲弊しそうで正直怖いです。

AI を開発する

僕は AI の開発の道は5年前の時点で捨てたのでこれはわからないです。が、AI の観点で言うと、システムエンジニアであれアプリケーションエンジニアであれ、ソフトウェアエンジニアは「使う人」で AI 開発者は「作る人」になります。

正直、今から AI の勉強を始めたところで追いつけるのかなという不安があります。

労働者としてのソフトウェアエンジニアをやめる

ソフトウェアエンジニアで働く以上労働者であり続ける限りは、自分の量の生産性を高く保ち続けることが高給を維持する条件になるとすると、疲弊しそうでできればやりたくないです。

解決策は労働者をやめ、AI を働かせるビジネスオーナーになることだと思います。実務を AI に任せてお金が生まれる仕組みを作ります。まだ自分自身、どういうビジネスがいいか考え中です。いいアイディアがあったら教えてください。

1つの方向性としては AI を利用したコンテンツの大量生産がありますが、同業他社が同じように大量生産する中でどうやってコンテンツを消費者に届けるのかという課題はありそうです。

結論

  • AI を活用した効率的な働き方を身につける
    • 多分僕自身は当分はソフトウェアエンジニアを続けるので、日常業務に AI を組み合わせて効率を上げる試行錯誤をしてます。
  • 労働者をやめ AI で横展開可能なビジネスを始める
    • いいアイディアあったら教えてください。

おまけ

ChatGPT に聞いてみました。

  • AI によってソフトウェアエンジニアの働き方はどのように変わりますか?

AIによってソフトウェアエンジニアの働き方には大きな変化がもたらされるでしょう。以下に、その一例を挙げます。

1 自動化されたコーディング

AIによってコードを自動生成する技術が進化すれば、ソフトウェアエンジニアはより高度なプログラミングタスクに注力することができます。また、繰り返しの作業や単純なタスクを自動化できるため、エンジニアの負荷を軽減することができます。

2 自動化されたテスト

AIによってテストを自動化することができれば、ソフトウェアエンジニアはコードを手動でテストする必要がなくなります。これによって、エラーを見つけるのがより早く簡単になり、プロジェクトの開発サイクルを短縮することができます。

3 プロジェクトの自動管理

AIによってプロジェクト管理が自動化されることで、エンジニアはより多くの時間をコードの開発に注力することができます。AIが進捗状況を監視し、問題が発生した場合は自動的にアラートを発信することができます。

4 ソースコードの自動解析

AIによってソースコードの自動解析が可能になることで、ソフトウェアエンジニアはコードの品質を向上させることができます。例えば、コードのセキュリティの脆弱性を自動的に検出することができます。

これらの変化は、ソフトウェアエンジニアがより効率的に作業を行うことができ、開発プロセスのスピードが向上することが期待されます。また、これらの技術を活用することで、エンジニアが直面するストレスや負荷を軽減することができる可能性があります。

  • AI によってソフトウェアエンジニアの報酬はどのように変化しますか?

AIによってソフトウェアエンジニアの報酬には変化がある可能性がありますが、その影響は複雑で一概に言えません。以下に、いくつかのポイントを挙げておきます。

1 需要の変化による影響

AIが進化するにつれ、ソフトウェアエンジニアのスキル要件が変化する可能性があります。AIによって自動化されたコーディングやテストが一般的になると、プログラマーに求められるスキルや知識が変わることが予想されます。これによって、需要が減少する可能性があり、それに応じて報酬が低下することが考えられます。

2 市場競争の変化による影響

AIによってソフトウェアエンジニアの報酬に影響を与える要因として、競争があります。AIが導入されることで、より多くの人々がソフトウェアエンジニアとして働くことが可能になるため、市場競争が増加する可能性があります。競争が激化することで、報酬が下落する可能性があります。

3 新しい機会の創出による影響

一方で、AIによって新しい機会が生まれることがあるかもしれません。例えば、AIに関連する技術を開発するために、ソフトウェアエンジニアにニーズが生まれることが考えられます。そのような機会によって、報酬が上昇する可能性があるかもしれません。

以上のように、AIによるソフトウェアエンジニアの報酬に影響を与える要因は複雑であり、特定の予測をすることは困難です。ただし、ソフトウェアエンジニアは常に新しい技術を学び、自己研鑽することが重要であるといえます。