TL;DR
エンジニア/クリエイターとして、「ゼネラリスト」「スペシャリスト」どちらが自分に向いて要るかを見定めていきましょう(自分のことは棚に上げて
なに急に
最近、プライベートでGO言語をちょくちょく触っています。
GOはローカルOSがLinux、Windows、Macどれであっても、単一CLIですべてのプラットフォーム向けのビルドができるのが、便利でよいですね。
一方わたしの今の仕事、SI業界ではJavaが多いです。
JavaはJVMのおかげでLinux、Window、Mac(Macは業務システム上にはほとんどないですが)どのプラットフォームでも稼働します。
Javaがこの業界で流行りだしたきっかけは正確にはわかりませんが、一度経験した技術者がある程度の範囲で教育なしで稼働できる(即戦力とは言っていない)ということで、「これさえ知っとけばOK」ということで流行ったんじゃないかな〜と推測します。 要するに主目的が人的リソースということですね。
いまも業界でJavaがよく用いられているのは、Javaがわかる(できるとは言っていない)技術者が圧倒的に多いことと、過去のJava資源が多く残って要るからなんじゃないかな〜と思っています。
おそらくJavaは、今後COBOLと同じように生き残り、COBOLよりはバージョンアップされていくはずです。
他にも、.NETやSwiftなど、プラットフォームが絞られる技術もあります。
汎用性ないじゃん、と思いますが、そこで活躍する技術者ももちろんいます。 各プラットフォームに沿った技術はVMレイヤーが減るおかげで各プラットフォームのユーザによりオプティマイズされた価値の高いコンテンツを生み出すことができます。
ひとつのプラットフォームとして、汎用的なVMレイヤー。 各プラットフォームにスペシャライズされた、ネイティブレイヤー。
それぞれで生き残ることは、「プラットフォームを選択して技術者として生きる」という風に表現できるかと思います。それぞれのプラットフォームの スペシャリスト ですね。
対して
「何でも屋さん」と表現できるエンジニアもいます。
技術について(その個人としては)深い知識を持つことが難しいので、「何でも屋さん」というと聞こえはよくないかもしれません。
ですが、「特定の技術・プラットフォームにこだわらない」という風にも捉えることができます。
表現されるサービス、ビジネスに応じて最適なプラットフォーム・アーキテクチャを選択し、技術的により深い部分はスペシャリストの協力を得ることで、コンテンツ・ビジネスを成功に導く。いわゆる ゼネラリスト ですね。 プライオリティは「コンテンツ」になります。
エンジニアとしてスペシャリストとゼネラリストを分かつのは何か
断言することは、自分に対しても諦めになってしまいそうなので、実はやりたくないことです。
ですが現在の考えとしては、これは「性格」に依るのではないか、と思っています。
自分に対してよりゼネラリスト寄りの人、スペシャリスト寄りの人と議論することで、その判断基準の違いが見えてきます。そうすることで、相対的に自分の位置・自分が大切にしているもの、というのが少しずつ見えてきます。
そこは本当に人間として、「性格」の違いになってくるんですよね。
まとめ
働き方として、自分の性格に合わないやり方、理解できない・納得できないやり方で働くというのは結構なストレスです。
自分が、世の中のいろんなエンジニアと比較して、相対的にどの位置、 階層の上下ではなく同じ水平線上のどの位置にいるのか を早めに把握して、早めに自分が一番モチベーションが高くなる仕事が発見できれば、きっとより豊かな気持ちで日々を生きることができるんじゃないかと思います。
エンジニアとして、生存戦略、しましょう!
棚に上げられている私からは、以上です。