未分類

フルスタックエンジニアに関して思う事

少し前までフルスタックエンジニアという言葉が流行ってました。定義は人それぞれですが、一言でいうとフロントエンドからサーバーサイド、果てはインフラまで何でもできるエンジニアの事を指す言葉ですね。

何でもできるフルスタックエンジニアは、さぞかしエンジニアの憧れだろうとIT職ではない方から見れば思われるかもしれませんが、エンジニア界隈では結構ネガティブ寄りな単語になっているように思います。何がネガティブかというとフルスタックエンジニアを名乗っている割にはスキルがしょぼいなど、自称フルスタックエンジニアへの印象がよろしくないという感じです。正直フルスタックエンジニアという正式な職種があるわけでもないので、名乗ったもん勝ちみたいな側面もあるのは事実です。あとは、フルスタックエンジニアの仕事範囲をどこまで定義するかやスキルの深さの意味合いが人によって違うので、フルスタックエンジニアへ抱く期待がバラバラになってます。極端な場合だとデザインもできるべきだとか、マネジメント含むとか組み込みもできるべきだとかありとあらゆる技能含める場合もあります。そもそも、複雑かつ変化の速いIT業界で何でもできるなんて無理でしょというシニカルな視点を持つ人もいます。

先も言ったようにフルスタックエンジニアの定義は人それぞれです。が、フルスタックエンジニアという単語が求人に出てくるからには、求められているフルスタックエンジニア象があるのだと思います。というわけで、私なりのフルスタックエンジニア象を定義しておこうと思います。私が考えるフルスタックエンジニアとは、担当プロジェクトに関わる技術スタックに広く通じている人だと考えています。あくまで、担当アプリに関わる技術スタックと狭めて言ってます。Web系ならば、フロントからインフラまで、IOTならばハードも含みます。会社ではエンジニアとデザイナーで職能が区切られる場合が普通だと思いますので、デザインは求められないと思います。結局の所、フルスタックとして動く事で会社に価値を提供できていれば良いので、全分野に渡る知識は必ずしも必要ではなく、仕事回せるだけの知識があれば良いのじゃないかなと思います。もう少し具体的に言うと、ReactとLaravelとAWSで動くWebアプリケーションがあれば、ReactとLaravelとAWSで仕事を回せるスキルがあれば、フルスタックエンジニアと名乗っていいのではないかと思います。人によっては、他のフレームワークはどうなの?、Go言語も知っておくべきでしょ?GCPも使いこなせないと…とかあるかもしれませんが、上記の担当アプリでそれらの知識が合ってもあまり役に立ちませんし(新規開発フェーズでは、技術選定もあるので全くないとは言いません)、担当アプリについてなら誰よりも詳しい人材は会社に取っては頼りになるのでフルスタックエンジニアとしてのバリューは十分に出せているのかなと思います。詰まる所、企業が求めているエンジニアは、全分野高レベルのスーパーエンジニアではなくて柔軟性の高いエンジニアというだけなのではと。

最後にフルスタックエンジニア目指すべきかですが、会社によるのかなと思います。大手ならば分業が普通なので職種横断が難しい事もありフルスタックエンジニアって現実的じゃないんですよね。それよりも専門性を高めていく方が評価されるし給料も上がるんじゃないかと。中小企業だとフルスタックな人材求められそうですが、フルスタックで働いても数万しか他のエンジニアと給与変わらないとか普通にありそう(というかあった)。最初期のスタートアップだとフルスタックとして動かないと回らないんじゃないですかね。ただ、フルスタックエンジニア目指す場合でも専門分野1つ持っておいた方が良いなと思います。思うのは個人でアプリ開発したいとか、新しい事業を少人数で対応する必要があるとかで必要に迫られてフルスタックとなるのが普通で、キャリアとしてフルスタックエンジニア目指しても給与的には報われない印象はあります(給与は会社によるので一概には言えないです)。

結構適当に書いたので、くそ雑魚エンジニアの戯言だと思っていただければ。

Pocket