こういった件名の記事は世の中に沢山あり食傷気味の方も多いと思いますが、今回の記事は、世間一般の話ではなく、もばらぶ固有の話を中心に書いていきます。もちろん世間一般の話と重なる部分も多々あるとは思いますが。

今後のソフトウェア開発について

1ヶ月ちょっと前に以下の記事を書きました。今読み返すと、「開発プロジェクトへの影響: 現時点での意見」の章とかは若干雑な論の進め方だなとは思いますが、言いたいことは概ね書いてあります。

今回の話に関連するところだけを要約すると、今後ソフトウェア開発で必要とされる開発者は、

  • 上級開発者
  • エッセンシャルワーカー的な開発者(そこまで高度なスキルは必要無いが、人間が実際にやる必要がある仕事を行う開発者)

に二分されると思っている、という話でした。

今回の記事ではそこからもう少し進んで、その「上級開発者」とはどういったスキルを持った人達なのか、どうなったらそこに到達できるのか、などについて書いていこうと思います。

もばらぶにおける「上級開発者」の定義

開発者の役割を単純化すると、「計画」と「構築」

ソフトウェア開発には色んな観点がありますが、1つの見方として以下のように単純化できます。

  • コンピューター上で実現したい何かがある
    • どのように実現するのかを計画する
    • 実際に構築する

もちろん、「計画」と「構築」は実際には明確に分けることは出来ないというのも多くの人が知っていることかと思いますが、計画が中心の人、構築が中心の人というのは存在します。

ソフトウェア開発の「計画」と「構築」という行動・役割をスポーツに例えるなら、サッカーの攻撃と守備のように、基本的に1人で両方やるようなものに近いです。野球のピッチャーとバッターのように(大谷のような例外を除いて)兼任する事が無い役割ではありません。

もばらぶが考える上級開発者とは、「計画」と「構築」のどちらか、あるいは両方に秀でている人の事です。

「計画」に秀でた人とは

「どのように実現するのかを計画する」というのを少し具体的に述べると、受託開発であれば

  • お客様と話をして要件を詰める
  • 要件・制約などを考慮してアーキテクチャ・基本的な構成を設計する
  • 予算・人員などの制約を考慮して、スケジュール・マイルストーンを決める

といった業務になります。これに秀でた人は、世間一般の職種だと以下のような人達が該当します。

  • アーキテクト
  • SE
  • PM

こうした人達は世間での需要も高いですし、当社としても重要だと考えています。

「構築」に秀でた人とは

また、「実際に構築する」作業についてももう少し具体的に述べると、

  • 要件・アーキテクチャ・各種制約を考慮して、使用する技術を選定する
  • 要件に沿ってインフラを構築・設定する
  • 要件に沿ってプログラムを実装する

といった業務になります。こちらに秀でた人は、職種で言うと世間一般で「エンジニア」と呼ばれる人達が該当します。

ただ、一口にインフラの構築やプログラムの実装といっても幅広い内容が含まれます。また、前述のブログ記事でも書きましたが、例えば、単純な CRUD 処理を書ける技術は2〜30年前であれば重宝されたと思いますが、2025年12月現在では AI で簡単に実装出来ますし、コモディティ化していると言えます。

つまり、AI 時代に「構築」を行うエンジニアに求められる能力とは、 AI が得意でないことを出来る能力です。網羅的なものではありませんが、具体的には

  • 世の中であまり行われていないような処理を実装・構築出来る
  • プロジェクト固有の特殊な状況・制約を判断して、適切に実装・構築出来る

といったものがあります。この辺は書き出すと長くなりそうなので、別の機会に詳しく書こうと思います。

もばらぶがエンジニアに求めるスキル

前章では、もばらぶが考える「上級開発者」の具体的な役割について述べました。本章では、「上級開発者」になるために当社が必要と考えているスキルについて書いていきます。

ソフトウェアエンジニアリングの知識

当たり前ですが、ソフトウェア開発者であれば、当然ソフトウェア開発に関連する知識が求められます。

知識に関しては、生成 AI 時代の今は、細かいプログラム言語の文法やネットワークプロトコルの仕様などを暗記する必要性は薄くなりましたが、仕組み・意図・背景などを正しく理解出来ている必要があります。

また、生成 AI のお陰で、新しい技術・知識を勉強するのが以前よりも効率的になりましたが、土台がないと新しい技術・知識を吸収する速度が遅くなります。現時点での知識量だけでなく、今後知識を効率的に増やしていける土台があるかどうかが重要になっていきます。ただ、現時点で土台が無い人も心配する必要はありません。時間をかけて土台を作っていけば良いと思います。

ソフトウェアエンジニアリングの経験

知識と同様に経験も必要です。そして、経験は今までより大事になってくると思います。極端な言い方をすれば、知識は生成 AI に聞けば教えてくれます。ただ、その知識をどう現実世界に反映させていくのか、については経験が必要です。

もちろん、生成 AI はネット上に膨大に存在するケーススタディのような情報も学習していますので、典型的な案件であれば生成 AI の答を適用するだけで対応可能かもしれません。ただ、新たな技術・概念を必要とする案件、ニッチな案件など、生成 AI があまり持っていない知識が必要な案件では、人間が持っている知識・経験を活用しながら進めていく必要があります。

情報を整理する能力

生成 AI に質問をする場合も人間相手に作業を依頼する場合もどちらも同じですが、現時点で持っている情報を分かりやすく整理して相手に伝えることで、効率よく仕事を進めることが出来ます。

これはツールをうまく使えるかどうかという話ではなく、物事を適度な大きさに分割、あるいは統合して、それらの論理的な関係性を把握できるか、という話です。

ソフトウェア開発者は、ソフトウェアエンジニアリングの知識・経験の重要性については当然理解していて自分で勉強をしている人も多いと思いますが、この「情報を整理する能力」の重要性については理解していない・気づいていない人も多いですし、学校とかでもこうしたメタな知識についてはあまり教えてくれないように思えます。

この能力は、ほぼ全ての知識労働の土台となるので、苦手な人は意識して身につけていくと良いと思います。

人と対話して情報を引き出す能力

ソフトウェア・システムを構築する能力に長けていたとしても、どのようなソフトウェア・システムを作るのかがブレていると、良い結果になりません。また、これは良く言われる話ですが、お客様が口に出して言う事と実際に求めている事は必ずしも一致しません。そのため、お客様と対話して、本当にお客様が求めている事を理解し情報として整理するという能力が必要になります。

これは、対お客様に限った話ではありません。同僚と打ち合わせなどで会話する際も、その人が何を求めているのかを的確に理解して返答できれば、プロジェクトがより円滑に進められるはずです。

そうした能力を求められる典型的な職種としては

  • プロジェクトマネージャー
  • システムアーキテクト
  • プリセールスエンジニア

などが挙げられます。ただ、広い意味でのエンジニアは、こうした職種の人達がやるような業務もある程度は求められますし、上述の通りそういう業務も出来る人が「上級開発者」だと考えています。

どうやってこうした技術を身につければ良いのかというと、正直なところあまり正解は見えていません。ただ一つ言える事は、経験は重要だと思うので、人と対話する機会を多く持つ事は重要だと考えています。

まとめ

本投稿では、もばらぶが考える AI 時代の「上級開発者」の定義と求められるスキルについて書きました。ソフトウェアエンジニアリングの知識・経験が必要というのは従来から言われている事ですが、それ以外にも情報を整理する能力、人と対話して情報を引き出す能力、というのが今まで以上に必要になってくると考えています。