ソフトウェアエンジニアのレベル
サッカーだと高校・大学時代にパッとしなくてもプロ入りしてしばらくして突然覚醒して日本代表になるみたいな選手が結構いる
そういうのって何なんだろうとよく考える。プロに入ってる時点でそれなりにすごいのだけど。
普通に考えたら優れた才能はティーンエージャーのころから覚醒していてそのままトップに上り詰めるのが普通な気がするけど
一方で高校サッカーや甲子園で優勝してもプロでトップどころか中堅にもに上り詰められない選手は山ほどいる
むしろ十代の最高峰がなんとか中堅くらいになっていくイメージ
また一方でテニスや卓球、将棋や囲碁のような個人競技は子供~10代の覚醒がすべてという気がする。すごい人は子供の頃から明らかにすごい。
チームスポーツは個人の能力よりもチームへのフィットが重要なのでどこで覚醒するかはわからないのかもしれない
ではソフトウェアエンジニアリングはどうかというと、単純なプログラミング能力の高さはエンジニアリングの強さにはなりえないと思う
そういう才能は競技プログラミングやセキュリティのような特化的な領域では個人競技と同じ理屈で早熟が最強になると思う
ソフトウェアエンジニアリングは個人競技と言えるほどルールが単純ではなく、成功の定義も難しい
ソフトウェアを作るという作業は長期間・大規模・大人数なので個人の能力よりも別のなにかが成功の鍵になると思う
成功の定義やレベルの高さというのがあまりはっきりしないので、そもそもレベルアップとはなにかが定義しづらい
もちろん基礎能力や知識というのは定量的に積み上げることは可能だが、ソフトウェアエンジニアのレベルの高さは定量的には測れない
設計とか構造とかテストとかシンプルさとかそういう技術を積み上げればトントンとレベルが高くなるわけではない
今の業界では知識や技術を積み重ねれば出世できてお金ももらえるという風潮が蔓延しているが、本質はそこではない
じゃあソフトウェアエンジニアとして高いレベルに行くにはどうすればいいのかというと、それはよくわかりません
僕自身あまり多くのソフトウェアエンジニアを見たことはないけど、知識や技術がすごくても「へ〜」で終わってしまう印象の人は沢山いる
一方で技術や知識はさておき、不思議な輝きを持った人を時々見かけることがある
一見地味なのだけど観察しているとやっぱり何か不思議なものを持っているとわかる
そういう人は技術や知識も当然のように身に着けた上で高い領域に手が届くような気がしている
そうである人とそうでない人にはとてつもない断絶があるように見え、怖くもある
ソフトウェアエンジニアとしてのレベルが、定量的に測れない不可視の才能で決まるのであればそんなに恐ろしいことはない
しかし個人競技ではない領域ではどこでもそういう事になっているのかもしれない。起業家や作家も似たようなものかもしれない
なので僕は楽観的にこうすればソフトウェアエンジニアとしてのレベルが上がるという手段を知らない
唯一の共通項を挙げるとすれば本当にプログラミングが好きかどうか、だけかもしれない
繰り返しになるけど知識や技術を身につければレベルが上がるわけではなく、レベルを上げるにはレベルを上げるしかない
どうやったらレベルが上がるのかはわかりません。それはとても人によると思う