GitHub Copilot 登場以来、ちょっと考えていたことをところてんさんが言語化してくれていた。
GitHub Copilot 自体は破壊的なゲームチェンジャーであり、登場してから少し経ってから使ってみて、今ではもう内と仕事にならないくらいまでのツールになっている。
生成AI、LLM といったパラダイムが出現して以来、数々のホワイトカラーの仕事(特に手作業で担保していた箇所)が機械に置き換えれるという言説はたくさん目にしてきたが、ソフトウェアエンジニアの主たる業務の1つであるコーディングがここまで早く機械依存になるとは思っても見なかった。
そういう世界は間違いなく来ると思っていたけど体感で10年くらい早くやってきたと思っている。
そして GitHub Copilot によってコーディングの半分くらいは機械依存になっていたところに今回 GitHub Copilot Workspace というコーディングをすべて機械依存にするというまた厳ついゲームチェンジャーが早くも現れてしまった。
僕自身は余りキャリア論のようなものには興味がないし、そういう話も人にはしないようにしてる(聞かれれば答えるが自分から積極的に語るようなことはしない)タイプであるが、これは流石に今後のキャリアのことを考えざる得なくなってきている。
正直今すぐすべての仕事がなくなったり、ということはないだろうし、今後もなくなることはないんだろうと思う(GitHub Copilot Workspace を導入していない企業では引き続きコーディングはソフトウェアエンジニアの業務の1つになりうるという話)
ただし、そういう仕事はどんどん少なくなっていくようにも思う。本当に Software は世界を食っている。10年では置き換わらなくても20年経ったらソフトウェアエンジニアが業務で自分でコーディングする時代は終わってるかもしれない。
キャリアを考えるなら向こう5年を生き抜く術よりも20年~30年先の世界を考えないといけない。人生100年時代なんて言われるし自分たちの世代は一生現役である必要があるかもしれない(というかその可能性は高い)
そう考えたときに、ソフトウェアエンジニアとしてコードを書くことを生業にしていると5,10年先は大丈夫でも20年後は生きていけないのかもしれないなと真面目に考えている。
コードを書くことは楽しいし、仕事でなくなるのは寂しい気持ちももちろんあるが仕事となれば話は別であるし、仕方ないのかもなと思う。
なぜなら、そもそもコードを書くことで食っていこうと思った場合、GitHub Copilot 以前の世界でもその世界はいわゆる「天才」と勝負する世界であったはずで、凡人がそれ一本で食っていこうとするととてもじゃないがハードルが高すぎる世界であったと思う。僕はサッカーが好きなので、この手の話をするときに、「ソフトウェアエンジニアとしてコードを書くことで勝負するっていうのは最終的にこの世界におけるメッシやクリロナと勝負することになる」という表現を使っている。
こういう表現自体も今までは言いすぎと言うか考えすぎのきらいもあったかもしれないが Copilot の出現以来、天才よりも安定して天才に近いアウトプットを吐きだす機械と勝負する世界になってしまってと感じている。もちろん全てのアウトプットにおいて機械が勝ることはまだ先のことかもしれないが、僕のいるweb開発の世界ではある程度作るものと作り方は大手のクラウドベンダーがホワイトペーパーとして出していたり、書籍、資料も充実しており、一定のクオリティを担保するためのプラクティスは誰でも簡単に手に入る時代になっている。そして機械はこれらすべてを吸収してアウトプットとして吐き出してくる。
さながらAI将棋の世界線である。もちろん、ポスト(現在進行系かもしれないが)AI将棋の申し子である藤井聡太くんみたいなエンジニアが今後出てこないとは言えないが、それは少なくとも"自分ではない"ことは確定している。
そういうわけでこういう時代にソフトウェアエンジニアを生業として生きている自分としては、今後どういうキャリアを目指すべきなのかは真面目に考えるところであるが、実はこの考え自体はここ4,5 年ずっと考えてきたテーマであり、一定こうしていくか、という方向性はある。
それが「ソフトウェアのコードを書いたことがある、書けるという経験をバックグラウンドとしたPM業」である。
これは GitHub Copilot Workspace 時代とマッチしたキャリアかなと思う。最初に掲載したところてんさんの資料に書いてあることとまるで同じであるが、GitHub Copilot Workspace ライクな機械を使った開発が主流になる時代で必要になる能力は
機械の出力したコードをレビューできること。場合によってはより良いコードを機械に対して提示できること。
機械に出力させるコードの大本になる「要件」を決めることができること。
その要件を定義するための要求を定義できること。
要求を定義するために、事業を理解すること。
事業の理解のために事業サイド(ビジネスサイドとも言う)とコミュニケーション取れること。
になると思われる。やったことがある人にはわかりやすいがこれはざっくり「プロジェクトマネジメント」の領域にあたることが多いし、エンジニアとしてもこういう役割を求められて実行してきた人には、別に今に始まったことではないのかもしれないが、明確にこの力が求められる世界に片足入ったと感じている。
PM 業それ自体はソフトウェアエンジニアとは別のロールとして定義されており、会社によっては専用の職種が存在しているものであるが、明確に組織が別れていない場合もあり、その場合多くはソフトウェアエンジニアが兼務することが多いものでもある。
これからの時代はもしそうした兼務をせざる得ない状況になったら積極的に兼務していくと AI コーディング時代の助けになるかもしれないと思っている。
また話は少し逸れてしまうが、コードを書くことに美学ややりがいを持っているタイプにはこのPM業というものは好まれない傾向にあると思っている。
ただ、現実の事業では外注管理を始めとしてこのPM的な役割はものすごく重宝される。結局のところ自分1人でやれることには限界があるなかで、どう出力の bandwith を広げていくのか、その広げられる立場というのは経営レイヤーから見るとものすごく企業な人材になる。
GitHub Copilot が示した AI コーディングの時代においては、ソフトウェア開発関わるエンジニアにこのロールが強制的に求められていくことになる (= コードを書けることの希少性はなくなる)
ゲームチェンジャーの出現によって、ある希少性が失われるともに新しい領域の希少性が出現する、ということは今までも起きてきた世界である(ソフトウェアエンジニアのコーディングスキルも歴史的に見ればソフトウェアの普及によって生まれが希少性だったと思っている)
そういうわけで、僕は Copilot 普及の前から積極的に PM 業を引き受けている(というか半ば強制的させられたとも言える)
やり始めた当初は失敗も多く、また業務量も増える(コードも書くしPMもするので)のでしんどかったが、ある程度見通しを立てて動くことができるようになると、事業の解像度ややってる業務の解像度が上がって行くのが実感できて面白いし、何より AI コーディングの時代に必要なスキルを業務で付けさせてもらったお得感というものを感じている。
このキャリアが正解という保証はどこにもないが、このキャリアの方向性と市場からの需要(カジュアル面談とかしててもコーディングそのものよりもこの経験を買われることが多い)も加味すると、まだまだホワイトスポットとして残っていそうな領域であり、恒常的に人材が不足するポイントでもあるので、もうちょっと食っていけそうだなと感じている今日このごろである。
おしまい