フルスタックエンジニアとは?よくある疑問について解説

エンジニアのキャリア

フルスタックエンジニアとは?

フルスタックエンジニアとはおもにWEB開発においてどんな分野でも開発を行うことができるエンジニアを指します。 モダンなフロントエンド開発やバッグエンド、データベースやインフラ、セキュリティなどの基本的な知識を身につけているエンジニアがこう呼ばれることが多いです。

フルスタックエンジニアの基準

フルスタックエンジニアといっても基準はかなり曖昧です。そのため色んな論争が起こる部分でありますが一般的には次のスキルセットをもっていることが最低限の基準です。

  • フロントエンドでFluxの考え方を理解してReduxやVuexなどに基づいたシステム開発に携わったことがある。
  • バックエンドの開発に必要な知識が一通り身についている。要件定義やテーブル設計などの上流工程に携わったことがある。 -実務でAWSかGCPを使って新たなアプリケーションを公開したことがある。CI/CDの構築をしたことがある。Dockerが使える。

基本的にはWEBサイトを作成するために必要なスキルセットを一通り習得していることと実務経験があることが最低限の条件だと思います。 またそれに加えてアプリ開発ができてWEBの分野などで何か得意な技術スタックがあることが望ましいです。 これ以上言い出すときりがないのでおそらくここら辺がフルスタックエンジニアの基準になると思われます。

フルスタックエンジニアになるには?

気付いたらフルスタックエンジニアになっていることが多い

フルスタックエンジニアはなろうと思ってなっているというよりは気付いたらフルスタックエンジニアになっていたということが多いともいます。 スキルが幅広いと色んなところでアドバイスをしたり教えたりしているうちに裁量が大きくなっていって気付いたら色んなタスクを振られることで気付いたらフルスタックエンジニアになっていることが多いです。 スキルセットが広いと未知の領域でも「やればできるでしょ」といって仕事を振られる機会も増えてスキルセットがどんどん広がっていきます。

趣味で作りたいものを作る

ただ何もしてなくてそのような状況にはなりません。ちなみに私も機械学習エンジニアでありながら「何でも屋さん」なっていますがそうなった理由としては個人開発をたくさんしていたことが大きかったかもしれません。 そもそも最初はセキュリティエンジニアとしての新卒のキャリアをスタートしたのですが個人開発でインフラ、バッグエンド、フロントエンド、機械学習の知識を身につけてサイトを公開していました。 セキュリティエンジニアはインフラよりの地味な仕事が多くもっと開発がしたいと思いました。そのときにポートフォリオとして面接で見せたところスタートアップからオファーをもらい機械学習エンジニアになりました。 このように最初は個人で開発してある程度全般的にWEBの知識を身につけていることを示せると今の専門以外のキャリアをスタートさせることもできます。

裁量の大きいスタートアップなどの職場で働く

そこで私もスタートアップで最初は機械学習エンジニアとして採用されたのですが人手が足りていないので何でもやるようになってWEB開発やインフラ構築、要件定義からシステム設計まで上流工程からなんでもやるようになりました。 スタートアップでは人手が足りておらずできるならやってという具合にどんどん仕事を任される環境があるのでスタートアップで働くことはフルスタックエンジニアへの近道です。 あとは何でもやりたいですという意思表示さえあれば幅広く仕事を任せてもらえるのでフルスタックエンジニアになりたければスタートアップで働くことをおすすめします。

やりながら学ぶ癖をつける

フルスタックエンジニアになるには専門外の仕事を振られてもできないといって諦めずにやってみることが重要なことが多いです。実際にやってみながら学ぶのが習得は早くなるので挑戦してみることが重要です。 どんなスキルセットも調べれば出てきますし細かいノウハウに関しては詳しい人から意見をもらいながらプロジェクトを進めることで知見も同時に身につきます。 このように書籍やWEBページで学んでから実践するのではなく実践しつつ調べて必要なことを素早くキャッチアップし周りから意見を仰ぎながらやることで効率的にスキルを習得することがフルスタックエンジニアになるにはとても重要です。

年収はあがりやすいか?

年収をただ上げたいからフルスタックエンジニアになるのは学習コストを考えるとあまりおすすめしません。 好きで技術を使ったりしているうちに気付いたらスキルを身につけている人が多いため年収を上げるためにわざわざ幅広く知識を身につけるのはあまり得策ではないかもしれないです。 スキルで年収をあげたげれば比較的目指しやすくて需要が多く相場の高いアプリエンジニアをおすすめします。また大学が情報学系出身でデータ分析が得意のであれば機械学習エンジニアやデータサイエンティストを目指すのもおすすめです。 好きで好きで仕方ないスキルがあればそれを徹底的に突き詰めてLT会で発信してたりするとそのスキルが必要な企業の目に止まって高い給与で採用されるという方法もあります。 またエンジニアが年収をあげるもっとも簡単な方法はプロジェクトやプロダクトマネージャーになることです。スキルを磨くのが好きな人がエンジニアには多くニーズの割にやりたい人が少ないことと上流工程を担当できる人が少ないからです。

フルスタックエンジニアの場合はその肩書きで相場が決まることは少ないです。WEB開発のできるアプリエンジニア、WEB全般の開発ができるフロントエンドエンジニア、WEB開発のできる機械学習エンジニアと言った具合に専門領域で相場が決まることが多いです。 採用面接の通過率で言うと食わず嫌いで何でもできることは採用担当者から高印象を持たれるため上がりますが、スキルを多く身に着けたからといって年収に直接的に影響があるような印象はありません。 ただしCTOなどを目指す場合はすべての技術スタックに対してそれなりに理解がないと力不足なのでフルスタックエンジニアからCTOになる場合には年収を上げるために役に立ちます。

フルスタックエンジニアに向いている人は?

興味関心の幅が広く色んなことを学びたい人

興味関心が広い人もフルスタックエンジニアに向いています。色々学んで動かしているうちに楽しくなってきてスキルの習熟度がどんどん上がっていて業務で使っているうちにフルスタックエンジニアになる人もいます。 また技術的な課題を抱えている際にその問題と向き合い解決しようと解決しているうちに様々な技術に触れることが多くなりインフラの知識が身についたりすることも多いです。 自分の担当している領域以外にも興味をもって挑戦したいと興味関心の幅が広い人にはフルスタックエンジニアが向いています。

スタートアップで活躍したい人

スタートアップでは一つの技術に特化した人よりも幅広い分野に長けている人のほうが重宝されます。 それはやることが明確に決まっているわけでないため柔軟に色んなことをやっていくことが望まれるからです。 またリソースがそこまで潤沢にあるわけではないので出てきた仕事がフロントエンドやバックエンドに偏ってしまう場合には仕事を選んでやってられるわけではないので何でもやることが重要となってきます。 さらに技術的な課題がいたるところにありそれを見てみぬふりせず自分で直していくことが求められる場面がおおくこれはできないからやらないという姿勢だと限界がくることも多いです。 特にCI/CDやインフラはインフラエンジニアに任せているだけではなくWEB開発している人からも意見して変えていくことが効率化のためには必要なことが多いです。 そのためスタートアップで活躍したい人は幅広く習得する必要がありフルスタックエンジニアであることが求められます。

ものづくりが好きな人

ものづくりが好きな人はフロントエンドからバックエンドまで一気通貫で開発するのが機能を自分で実装しているという気持ちが増すので楽しいです。 バックエンドの速度やフロントエンドの見え方まで細かいUI/UXに対するこだわりを持っていてチームで開発していると工数の問題で妥協せざるを得ないことが多いです。 人にやれといって押し付けても実現されることはほとんどないので自分がこだわりをもって実現していく必要があります。 システムの品質に強い興味と熱意があるのであればフルスタックエンジニアになってあるべき姿を自分の力で実現しましょう。

CTOになることに憧れている人

CTOは経営的な課題を存在する技術のなかから最適なソリューションを選択する能力が求められているので技術に対する幅広い知識が必要となります。 特定の技術にだけしか知識がないと適切な選択をできないためフルスタックエンジニアでありなおかつ高い習熟度が求められます。 もし将来的にCTOになることが目標であればフルスタックエンジニアになった上で各スタックのレベルを磨き込む必要があります。 さらにマーケティングやビジネス的な視点も学ぶ必要があるため技術を超えたところでもある程度フルスタック性を求められます。 またCTOとして従業員を採用する場合でも幅広い知識がないとエンジニアのスキルの習熟度を見抜けないのでやはり幅広い知識がないと務まりにくいです。

フルスタックエンジニアに対する批判

器用貧乏で強みがない

フルスタックエンジニアは一つ一つの知識理解が浅いと思われることがあります。正直これは人それぞれなのでフルスタックエンジニアみんながそうというわけではありません。 そもそも仕事を進める上では理解が浅いところに関しては聞きながら進めることが求めれるためスペシャリストの意見を理解しつつ実装していくことでたとえ深い理解がなかったとしてもベストな結果を出すことができます。 スペシャリストの人も全く知識がない人に説明するよりもある程度理解している人に説明するほうが簡単なので効率的です。 興味を持って幅広くスキルを習得してたり全体を俯瞰する視点を持ってたりするためとかならずしもスペシャリストの人が出す成果より劣るとは限りません。

フルスタックエンジニアといってもどこまでできるの?

フルスタックといってもどこまでできるのか?ハードウェアもできるの?マーケティングもできるのと言われることが過去に有りました。 中にはフルスタックという言葉をみると引っかかる人がおり文脈を読まずにこういった批判をしてくる人もいます。 こういった人と口論してもしょうが無いので最も自信のあるスキルと何ができて何ができないかということを明確に説明できるようになっておきましょう。 そしてとにかく自信を持っているスキルについてはそれ専門のエンジニアにも引けをとらないぐらいにスキルを磨いて置くと何も言われません。

胡散臭い・本当に何でもできるのか?

胡散臭い・本当に何でもできるのかと思われることがあります。

同じ時間をスキルにつぎ込むのであれば確かに一つに集中したほうがスキルの習熟度はあがりそうです。 一方で興味を幅広くもって学習量やキャッチアップの良さで幅広くかつ深くスキルを習得しているエンジニアも多いので一概にスキルが低いというわけではありません。 面接でこのように疑われないように自分が一番自信のある領域についての理解を深めてちゃんと実績を示せるようにするとフルスタックエンジニアとしての説得力が増します。

フルスタックエンジニアの強みとは

上流工程で強みが発揮される。

要件定義やシステム設計、スケジュール管理などの上流工程では幅広い知識を持っていることが強みとなります。 工数の見積もりの精度や必要なエンジニアの特性と人数を把握できたりとフルスタックエンジニアとしての経験と知識が大きく役立ちます。 将来的にプロダクトマネージャーなどの上流工程を担当したい場合はフルスタックエンジニアとしての経験が大きく役立ちます。

システム要件が曖昧な状況での機能実装のスピードがはやくなる。

要件が曖昧な状況下で開発をする場合、一般的にはフロントエンドやバッグエンドエンジニアであったりインフラエンジニアとの連携が必要となります。 その際にいきなり自分の専門外のタスクが発生して人に依頼することになったとしてもその依頼される側もすでにタスクを受け持っていることが多いためそれが終わるのを待つ必要があります。 そうすると手が止まってしまい効率性が悪くなります。しかしフルスタックエンジニアであれば自分で一通りのことができるため人に仕事を依頼せずとも開発を進めることができるため機能実装が早くなります。 このようにシステム要件が明確に定義できずやってみないとわからないような状況下ではフルスタックエンジニアの柔軟性が大きな価値を持ちます。

効率的な開発が可能となる。

フルスタックエンジニアだとエンジニア同士の連携のコストが少なくなるため効率的に開発することが可能です。また全体を俯瞰して最適な開発方法や設計に気付くこともできます。 特にアジャイル開発においては分野ごとにタスクが偏ることが発生して連携のために待ちが発生してリソースを効率的に利用できなくなることもあります。 特定の分野に縛られずタスクをこなすことのできるフルスタックエンジニアを採用することは経営的なメリットも大きいです。

人を採用する際に重要となる

人を採用する際にエンジニアの場合は人事や役員だけでなく現場のエンジニアが面接するのが最近では一般的です。 その際に自分のスキルセット外のエンジニアを採用する場合は見極めが難しくなります。 特定の技術の最初の一人目を採用する際には会社にその技術を持った人がいないため採用が非常に難しくなります。 なのでフルスタックエンジニアのように何でもキャッチアップできたり元々ある程度、実務経験があるエンジニアだと採用の際に習熟度を図れるため重宝されます。

フルスタックエンジニアの求人は?

フルスタックエンジニアとしての求人はスタートアップだとある程度ある印象です。 一方で大手の場合だと特定の領域に絞った求人が多いためフルスタックエンジニアとしての採用は少ないです。 しかしフルスタックエンジニアならフロントエンドエンジニアやバッグエンドエンジニア、インフラエンジニアに応募しすることも可能です。各スキルに対してそれなりの習熟度があれば採用されるのでフルスタックエンジニアだと受けられる求人の幅が広がることが多いです。

基本的に面接の際にWEBの幅広い知識であったり機械学習やブロックチェーンなどの尖った技術を身につけていることは高印象を持たれます。 さらにフロントエンドエンジニアやデータベースエンジニア、バックエンドエンジニアなどと同等に語れるぐらいの得意分野があると説得力がまします。

私はフルスタックエンジニア兼機械学習エンジニアだった頃、フロントエンドエンジニアとしてとある大手企業の採用を受けて内定を得たことがあります。その際の最終的なオファー内容を確認したらフルスタックエンジニア的な開発を求められることを知ってかならずしも求人にフルスタックエンジニアと載ってなくても隠れたニーズがあることが多いです。

将来的にはフルスタックエンジニアの認知も広がっていき一つのエンジニアのあり方として具体的な定義が固まってくればフルスタックエンジニアとしての求人も増えてくると思われます。

フルスタックエンジニアの今後のニーズについて

アジャイル開発が増えるに連れてフルスタックエンジニアのニーズは増える

フルスタックエンジニアは今後アジャイルな開発を行う企業が増えてくるとニーズは高まっていきます。 アジャイルな開発とは数週間などの短い期間で計画を立ててそれに基づいてチームで開発する開発手法を指します。

アジャイル開発では常に要件が大きく変化する可能性がありその要件によって求められるスキルが変わってきます。 フロントエンドに対する開発に偏りが発生したり、インフラ周りを構築し直したりと様々なタスクが発生します。 そういった開発に対応するには幅広いスキルセットが求められます。

そのような状況に上手く対応できるのがフルスタックエンジニアです。 大手でも最近はアジャイル開発が主流になりつつあるためスタートアップに限らずフルスタックエンジニアのニーズは高まってます。ちなみにわたしが新卒の頃勤めていた某WEB大手でもフロントエンドとバックエンド、インフラの垣根がなく開発することが求めれていました。

スタートアップへの投資が活発になることによる影響

スタートアップへの投資が活発になるにつれてエンジニアが必要となります。その際に採用したいエンジニアの特徴の一つとして専門領域を区切らず幅広く活躍できることを望まれます。 理由はスタートアップはアジャイル開発が基本的なことと潤沢にリソースがないので一人で一通りの機能開発を行うことが求められることが多いからです。 またスタートアップのCTOとしては幅広い分野に造詣が深いエンジニアが求められるためフルスタックエンジニアであることが望ましいです。 そのためスタートアップが今後増えていくにつれてフルスタックエンジニアのニーズが増えていくことでしょう。

新しいテクノロジーが登場する頻度が増えているから

情報技術の進歩は目覚ましく最近だとAIの技術進歩やブロックチェーンという新しい技術が徐々にWEB3.0という形で社会実装が始まってたりと次から次に新しい技術が登場します。 そんな中で自分の専門分野に注力しすぎると新しい技術へのキャッチアップが遅れるため時代の変化に追いつけなくなる可能性があります。 新しい技術を使ってサービスを開発することは大きなビジネスチャンスを掴めるためフルスタックエンジニアのキャッチアップ力は非常に頼りにされます。

このように今後もフルスタックエンジニアのニーズは増していくことが予想されます。 もしフルスタックエンジニアに向いてると思ったなら器用貧乏や批判を恐れずフルスタックエンジニアになることをおすすめします。

コメント

タイトルとURLをコピーしました