ソフトウェアエンジニアになりたいあなたへ

ソフトウェアエンジニアになりたいあなたへ

shu
2024年8月23日
パソコンされあればどこでも働ける、手に職がある、というイメージを抱かれるソフトウェアエンジニア。昨今の急速なAIの発展によって今後ソフトウェアエンジニアという職業はどうなっていくのだろうか。体系的に学んでない人でも、30代40代からでも転身しやすい職になるのだろうか。逆に幼少期からプログラミングをやっている人がより有利な職業になっていくのだろうか。あるいは、AIにとって代わられてしまうのだろうか。

Software 2.0とは

「Software 2.0」という言葉を聞いたことがあるだろうか?Andrej Karpathy(AI業界のスーパースター)が提唱した概念で、大量のデータを集めてそれをAIに学習させると、作りたいソフトウェアができる、という新しいソフトウェア開発の手法である。この手法によって作られたソフトウェアは完全なるブラックボックスで、人間が解読できるソースコードを持たない。既存の開発手法においては、仕様に従って人間がソースコードを書いていくのだが、Software 2.0では、その過程が完全に排除されるのである。Software 2.0の代表的な具体例といえばTeslaの自動運転機能だろう。最新のバージョンでは、Teslaの自動車が集めた大量の運転データを元に生成された、ブラックボックスの自動運転のソフトウェアが利用されている。人間が実装したプログラムではないのだ。
そんな恐るべきSoftware 2.0だが、自動運転のように相性の良い分野(リコメンデーションや予測システム等)と、そうでない分野があるので、一概にすべてのソフトウェア開発がこのSoftware 2.0にとって代わられるわけではない。むしろ多くのケースではまだSoftware 2.0を適用できない。では、そういうケースにおいてソフトウェアエンジニアという職種はどうなっていくのだろうか。

LLMの登場 - AIツールの進歩

2022年の11月末にChatGPTがリリースされて以来、LLM(大規模言語モデル、AIの一種)を使ったサービスが急速に広まっている。この種のAIは、数字の扱いに弱いのだが、文章の扱いには非常に長けているため、文章検索、翻訳、音声の文字起こしや長い文章のまとめ、そしてプログラミングといったタスクと相性が良い(ここでのプログラミングはSoftware 2.0ではない従来的なソフトウェア開発を指す)。さまざまなスタートアップやベンチャー企業がこのAI(LLM)を活用したプロダクトを開発しており、ソフトウェア開発に便利なツールも日進月歩で数多く生まれてきている。
最近では、自分でもそうしたツール(テキストエディタにはCursor、プログラムの生成や壁打ち相手にClaudeやChatGPT、Googleの代わりにPerplexity)を最大限利用してソフトウェア開発をしている。開発速度は肌感で5倍くらいになったように感じる。わからないことはAIに聞けばすぐに教えてもらえるし、実装したい内容を指示すればAIがそれ通りにプログラムを生成してくれるのだ。
実際に、今自分が実装しているWebサービスの管理画面を例に取る。以前なら、フロントエンドエンジニア x 1、デザイナー x 1、バックエンドエンジニア x 1 で2週間の期間で実装していた機能が、それらのAIツールを駆使することで、今は1人で3日程度で実装できている(デザイナーに出来上がった画面を見てもらい、フィードバックをもらって修正するスタイル)。自分で機能の仕様を詰め、他のステークホルダーとそれを確認し、その後は自分で頭の中にあるデザイン(UIやシステム)を明確にする。そこまで行けば、あとはAIに指示を出すだけで大体の実装が出来上がる。あとは自分で微修正しつつ精度を上げていく。このプロセスだと他の人とのコミュニケーション量が激減し、さらに時間を短縮できる。

AIにとって代わられるソフトウェアエンジニア

ChatGPTのようなツールにプログラムを生成してもらうのは、ブラックボックスのシステムを作るSoftware 2.0とは異なり、これまで人間が行っていたタスクをAIにやってもらっているだけに過ぎない。あくまで既存のソフトウェア開発の延長に過ぎないので、誰かの仕事がAIにとって代わられているだけである。では一体それは誰なのだろうか?
真っ先に思いつくのは、与えられたコーディングのタスクをこなすだけのソフトウェアエンジニアだろう。タスクを切り出している人からすれば、誰かのためにタスクを作る代わりに、AIに指示するだけでタスクが終わってしまうからだ。ベトナムやインドなど、人件費の安い国のソフトウェア開発会社ではこのようなタスクをこなすだけのソフトウェアエンジニアが多い。そういった現場ではプロジェクトマネージャー(もしくは兼スクラムマスター)、ビジネスアナリスト、UIUXデザイナー、フロントエンドエンジニア、アプリエンジニア、バックエンドエンジニア、DevOpsエンジニア、で構成されるチーム単位で開発に関わっており、役割が非常に細分化されている。ビジネスの理解、実装タスクへの落とし込みを行う人と、最終的な実装をする人が分かれているのが特徴的だ。その中にいる優秀なソフトウェアエンジニアはAIを駆使して開発可能な領域が増える、あるいは開発速度が早くなるだろう。一方で、それについていけないソフトウェアエンジニアは逆に仕事が減ってしまう。
同様に新卒やジュニアのポジションも今後難しい立場になっていくだろう。今までは採用側が投資して若手を育ててきていたが、AI化が進むことで相対的に教育コストが上がっている。またリモートワークも増えてきており、教育そのものの難易度も増している。一方で、経験のあるソフトウェアエンジニアの生産性が何倍にもなってしまったことで、ますます新卒やジュニアの採用に消極的になる企業が増えると思われる。

どういう人材が求められるのか

テック系のスタートアップやベンチャー企業では、ビジネスの不確実性が高く、機動力を保つためにも、軌道に乗るまではごく少数の開発者でどうにかするのが一般的だ。その開発者が生粋のソフトウェアエンジニアとは限らず、元は非エンジニアの創業者かもしれない。むしろ、そういうケースは増えるのは間違いない。ソフトウェア開発の難易度が下がってきている昨今、大切なのは、プログラミングスキルそのものよりも、顧客理解や顧客体験へのこだわり、そしてビジネスの解像度の高さになる。自分の作りたいプロダクトやそのビジョンを創造することができる人はより求められる。その意味では、小規模のチームや個人では、ソフトウェアエンジニアというより、何でも屋みたいな人の方が求められるかもしれない。これは、技術経験の浅い人でも、アイディアとやる気があればバリューを出せる領域である。
一方で、ある程度事業が確立されている環境では、ソフトウェアエンジニアに求められるケイパビリティはより高度化・多彩化されるだろう。例えば、フロントエンドエンジニアであれば、バックエンドもできるようになる、だったり、UIUXデザインにも精通したり、といった具合である。さらに、技術的なスキルはもちろんだが、ビジネスへの理解、さらには、ピープルマネジメントの重要性はより一層増すだろう。企業を動かしているのは結局人であるからこそ、人をまとめることができる人材は非常に重宝される。

最後に

自分が大学生の頃、何となくプログラミング楽しいな、という好奇心からソフトウェアエンジニアというキャリアを考えはじめた。ただ、当時は下請けの仕事というイメージが強くネガティブな側面もあった。また、大学で見かけたプログラミング猛者たちは、すでに有名なIT企業でインターンしており、自分とは大きな差がすでにあったので、「今から始めても大丈夫なのか」という不安もあった。そこで、最後に、当時の自分、あるいは同じような境遇な人に向けて伝えたいポイントを書いておく。

いつ始めても遅くない

結局、好奇心とやる気があれば大丈夫。「勉強」というつもりでやるよりは、単純に興味があるから学んでいる、という状態が理想。一方で、そんなに興味が持てないなら難しい。

作りたいものがあるほど楽しい

開発ツールが常に進歩しているので、プログラミング初心者でもそれなりのモノが作れるようになったのは追い風だ。プログラミングを目的としてプログラミングを学ぶと、新しい技術に適応できないが、あくまでプログラミングは「モノづくりの手段」として捉えていれば、新しい技術を使って楽しよう、という発想になる。

技能者として海外移住の選択肢が増える

カナダやオーストラリアのような移民に積極的な国では、ソフトウェアエンジニアを含め専門職の人はある一定の条件を満たせば、現地で仕事を得ずしてビザが取得できる。また、他の国でも、英語力と技術力があれば、その国の会社に転職するのも可能になる。こういう選択肢が増えるのは面白い。
ソフトウェアエンジニアに興味がある方の参考になれば何より。
wave

おすすめの記事

Nagao Factory

海外での子育て、仕事、語学学習、シンプルで身軽な生活。そうした軸で生活をしていく中で経験したことや学びを綴っていきます。また、生活の中で遭遇する些細な課題を解決できるプロダクトも開発しているので、同じような課題を抱えている人のためにもなると幸いです。

wave

この記事が気に入ったらサポートをしてみませんか?

Buy me a coffee