プログラマーSEは狭く深くか広く浅くか?収入、キャリア別考察
「いやいや、それじゃその技術が廃れた時につぶしが効かなくなるから広く浅くのゼネラリストを目指した方が良い!」
意見は分かれる所だと思います。どちらが正解と言いきれるものではなく、人それぞれの価値観によります。
- 収入を上げたい
- 昇進して偉くなりしたい
- やりがいのある仕事をしたい
- つぶしがきくか
これらをそれぞれの観点で考えるべきポイントを紹介します。
収入が高いのはどっち?
「収入が高いのは狭く深くのスペシャリストっしょ!」と思いきやそうとも限りません。どんなにその技術の専門性が高くてもその技術を使える人がたくさんいたり、その技術の需要が減れば収入は高くならないためです。
例えば、今サーバーサイドJavaのスキルが高くても特別収入は高くならないですよね。サーバーサードJavaを出来る人がたくさんいるからです。
逆に浅い知識であっても、今需要が高くて出来る人が少ない技術であれば収入を高くできます。iPhoneが出始めの頃にObjectiveCの勉強をして仕事に就いていれば高い報酬が得られたでしょうからね。
広く浅くでも先駆者になれば高い収入を得られるということです。
偉くなれるのはどっち?
「今度こそ、そりゃあ狭く深くのスペシャリストでしょう!」と思いきやこれまたそうとも限りません。
古くからある技術を深く習得しても、もっと詳しい人がいるものです。
例えば、今からCOBOLについて学んでも何十年も前からずっとCOBOLを使ってきた人にはこれまでの歴史を経験しているという点で絶対に勝てません。
であれば、新しく出たばかりの技術を習得した方がその道の第一人者になれて出世したり、ネットで有名になれる可能性が高まります。
まぁ、とはいえ、社内での相対的なポジションなので、社内で一番詳しくなればいいという意味で狭く深くというのも良いでしょうね。
やりがいがあるのはどっち?
これは、人の趣向によって異なります。
- 一つの技術を突き詰めていくのが好きな人なら狭く深くのスペシャリスト
- 新しいものが好きで幅広く技術を使ってみたいなら広く浅くのゼネラリスト
ですね。
個人的には広く浅く技術を使ってみて気に入ったものを深くやってみるのがいいと思っています。
狭く深くやってると、本当はもっと好きな技術が存在してるのにそれを知らずに今使ってる技術を使い続けるなんてことになりがちです。私の場合サーバーサイドJavaをずっとやってて、それだけでいいやと思っていましたが、ここ数年でPHP, Ruby, node.jsなどのLL言語やUnityを使ってみたらなんであんなにつまらないJavaをずっとやっていたんだろうと後悔しました。
そういうことにならないためにも幅広く技術を使っていった方が良いと思います。
つぶしが効くのはどっち?
一つの技術を狭く深くやっていると、その技術が廃れたらつぶしが効かなくなりそうですが、技術が廃れても完全に需要がなくなるとは限りません。
例えば、COBOLという言語は新規開発では使われなくなってきているでしょうけれど、既存の金融系システムでは未だにたくさんつかわれています。COBOLを使える技術者が減ってきているため為、COBOL技術者の希少価値があがっていると言われています。ですから、自分がやっている技術が廃れたからと言ってかならず喰いっぱぐれるということでもなさそうです。
楽しい方をやればOK!!
「結局どっちやねん?」という話でしたが、物事は全てトレードオフであり完全に割り切れるものではありません。技術を狭く深くいくか広く浅くいくかはケースバイケースなんです。
ですから、自分にとって楽しい方を選べばいいと思います。楽しい方を選んで、その技術が廃れたとしても後悔はありません。楽しかったんですから!
ここまで読んでくれたあなたへ、最後にこんな質問を投げかけてみます。
「今あなたは、自分にとって楽しい仕事をしていますか?」
答えがイエスじゃないとしたら、やりたい仕事をするために動いたほうがいいと思います。
私の場合、業務システム開発 → Webサービス → ゲーム開発と系統の違う仕事を渡り歩くことが出来ました。
系統の違う技術でも、案外やれば出来るものだし、転職も出来るものでした。ぜひ、一歩踏み出してみてください!