フルスタックエンジニアなんて目指さない方がいい | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

最近、採用の広告などでフルスタックエンジニアという言葉を見かけます。

あんまりよくわかっては無いんですが、ネットワークやサーバー、OSなどのインフラ関連からプログラミングやHTMLなど幅広いレイヤーの知識を持っている人を募集しているようです。

 

個人的にはそんな人がチームに入ってくれるんなら願ったりかなったりだとは思うのですが、技術が複雑さを増していく中でそんなレイヤー1から7とかまでをちゃんとわかっている人なんてそうそういないだろうとかも思ったりするわけです。

 

 

 

フルスタックであることの難しさ

 

 

 

最近は高度なライブラリが揃っていたりクラウド系のサービスによってそんなに知識が無くても新しい仕組みを作ったりすることはできたりします。

 

ただ、それを支えるエンジニアという職業から見れば、やっぱり一つ一つに対してきちんとしたスキルを持ってないと通用しないわけで、じゃあそれが幅広いスキルを横断的に身につけられるかというと技術の多様化によって決して楽なわけではない状況です。

 

確かにネット上には技術ネタを書いているエンジニアブロガーや、企業でもその情報を数多く公開していたりもしますので、一昔前よりは困るレベルは低くなっています。

 

それでも技術の変化などによって新たに会得しないといけない知識は年々増えていっているわけで、確かにインフラからフロントエンドまでかなり密に連携しているわけですからそれらを全てマスターしているに越したことはありませんけど、エンジニアの求められるスキルレベルは上がっていっていると思ったりします。

 

前に「クラウド時代のエンジニアの活きる道 」というエントリで書きましたが、この辺は募集対象のエンジニアの仕事によるんでしょうけど、現在ではクラウドサービスを作る側と使う側とで二極化していったりしてるので、後者ならまだしも前者においてはかなり複雑なスキルが求められます

 

そんな中で、フルスタックな知識を求めるなんて、おいおいちょっと待てよって気分にもなってくるわけですけど、確かに技術というのは1つの分野で完結するものではなく、関連性があるものまで知識を持っていないとなかなか解決できない問題もあったりします。

 

一極集中、この分野だけで飯を食っていくんだと言ったところで、例えばプログラミングだけであったとしても、通信においてはネットワークが、ファイル操作においてはOSやファイルシステムの知識も要るわけですから、なかなかプログラムの知識が非情に長けているから良いというわけにもいきませんし、そういった関連性のある知識は必然的に持っていないとプロフェッショナルな領域まで到達することもできません。

 

まぁ、そんなギークな世界につかっている人にとってはフルスタックエンジニアなんて言葉を聞いても鼻で笑えばよいわけですが、私のような凡人エンジニアにとっては1つのコアとなるスキルを磨きつつ、関連があるところも通信簿で言うところの普通レベルの知識を持つところで結構四苦八苦しているわけです。

 

 

フルスタックに夢見るエンジニア

 

 

 

何よりこの言葉について疑問に思うのは、あたかも幅広い知識を求め、そしてそれに応じた様々なレイヤーでの仕事ができるように謳っているところなわけですけど、ブッフェで自分が好きなものを取って食べるかのように自分の興味のある仕事だけができるとは限りません(多くの場合できないでしょう)。

 

 

会社としては幅広い知識を持っている人がきてくれたほうが当然助かります。
プログラムができ、ネットワーク機器の設定もでき、サーバーのセットアップやミドルウェアにも理解があれば色んなプロジェクトや状況に応じて(というのは多くの場合は炎上している場合かもしれませんが)その人のポジションを変えることができます。

 

 

これはある意味、会社にとって都合のいい人となるリスクもあったりします。

 

わからないことがあったらあの人に任せればいいとか、この分野を担当できる人がいないからやってもらおうとか。

それによって希望する経験と知識を得ることができたのならよいかもしれませんが、そうではなく自分が持っている知識を淡々とこなせば済むようなタスクの繰り返しになることもあります。

それは最初は楽しいことのように感じるかもしれませんが、新たに得るものがなくそのうちその技術も枯れていってしまっては将来的にエンジニアとして活きる道が無くなる可能性もあります。

 

そもそも全てのレイヤーの仕事がその人に任せることができるほどシステム構築の作業は単純ではないので、酷く疲弊しなくてはならない仕事となるか、先ほど書いたように都合のよいポジションに当てはめられるということも考えておかなくてはなりません。

 

そういうことを考え出すとフルスタックというスキルを求められる仕事というのは、物理的に不可能な仕事を求められたり、酷く単調な仕事を求められたり、という感じで個人的にあまり良いイメージを持つことはできないなとか思ったりもするわけです。

エンジニアと一言でいっても色んなレイヤーの仕事があり、それぞれに面白そうと興味を引かれることもあるでしょう。

ただ、その多くを体得することはかなりの時間を使わなくてはならないことで、やっぱり自分の中で得意とするもの、面白いと思うものをきちんと見つけて、そこから異なるレイヤーにも知識や興味を広げていくということをしないと、フルスタックという言葉に惑わされて横断的なスキルはあるものの中途半端となってしまっては都合のよい扱われ方しかされなくなってしまうのではないかと思うわけです。

 

まぁ、そういう人って知識の幅があることを理由に最終的には上流工程の担当や管理職に当てはめられたりするんですが、本人が納得するなら全然かまわないわけですがエンジニアとしての道はなくなるわけで、どういうキャリアパスを描くかしっかり考えておく必要があるなって思います。