こんにちは!WEBエンジニアのやすおです!
最近ですが、とある方のツイートがバズっていましたのでご覧ください。
もし私がエンジニアを目指すなら、フロントエンドは完全に捨てます、コスパが悪いから。
インフラとバックエンドのみに力を入れる。
んで、後は情報処理に出てくるようなコアな知識、仕事の進め方のノウハウを重視する。余計なものはいらない。
— ニートのSE (@neet_se) 2020年3月31日
もし私がエンジニアを目指すなら、フロントエンドは完全に捨てます、コスパが悪いから。
インフラとバックエンドのみに力を入れる。
んで、後は情報処理に出てくるようなコアな知識、仕事の進め方のノウハウを重視する。
余計なものはいらない。
このあと、リプライでのやりとりの中で様々な意見交換されてましたが、要約すると、「フロントエンドはシステム全体を把握することが出来ないので、スキルが付きにくい。それより、バックエンドやインフラの知識を入れたほうがコスパ良いよ!」ってことです。
これに関しまして、やすおの意見は
そもそも、対象の業界がや、業種によって話が変わってくるので、一つずつ整理してお話ししたいと思います。
そもそもフロントエンドエンジニアとは?

フロントエンドエンジニアとは、一般的には、HTML、CSS、JavaScriptなどで、いわゆるクライアント側(ブラウザ側)の構築を行い、時にはPHPやWordpressなどの構築、カスタマイズを担当する業務です。
例えばTwitterを例に出して考えたいのですが、Twitterでツイートする時の処理をざっくり説明すると、下記の流れになります。
- ツイートボタンを押して文章入力画面を表示させる
- ツイートボタンを押したらサーバーにツイートを保存。
- ツイートが一覧画面に表示される。
1の文章入力画面の表示ですが、PC版のTwitterの右上のボタンをクリックするとモーダルウィンドウが表示されるのですが、これはJavascript(jQuery)によって処理が書かれています。これはフロントエンドエンジニアの領域です。
2のサーバーにツイートを保存する処理ですが、Ajax通信で非同期処理でサーバーにPOSTしているのですが、ここまではフロントエンドの領域で、受け取った値をDBに保存する処理はサーバーサイドの領域になります。
3の一覧画面への表示ですが、サーバーから適切なデータを取得しクライアント側へ送る処理はサーバーサイドの領域で、クライアント側で一覧表示する画面をつくるのはフロントエンドの領域です。※あくまで一般論なので、実際にTwitter社がどのように行っているかは不明です。
この様に、クライアント側(ブラウザ側)の処理を担当するのがフロントエンドの役割になります。
一般的には利用者の利便性を高めるためにUI・UXを考えることも必要となってきますし、何といっても技術の移り変わりが速い傾向にあるのがフロントエンドの特徴です。
WEB業界とSierでのフロントエンドエンジニアの役割の違い
ちょっと古めの記事なのですが、Forkwellが2016年に行った「初心者に一番オススメな言語」という調査を行いました。それが下記です。
WEB系・スタートアップ1位:Ruby(有効回答の32%)2位:JavaScript(同16%)3位:PHP(同11%)SIer1位:Java(有効回答の68%)2位:C#3位:Ruby
見事なほどに、言語が別れましたね。
WEB系やスタートアップの2位はフロントエンド言語であるjavascriptが入っていますが、SIerの方はすべてバックエンド言語しかランクインしておりません。(しかもJAVAが68%)
この結果からみても明らかですが、SIerではフロントエンド言語が全然重視されていません。
SIerの主要取引先の銀行・不動産・金融のHPのUIなんか見ても、JSが上手く使われてたりしませんよね。反対にTwitterやInstagramなどのアプリケーションを開発するエンジニアはUIの設計に命かけてます。
結論としては
結論として、SIerで働くのであれば、フロントエンドの知識は深くなくても大丈夫ですが、WEB系やスタートアップで働くのであれば、必須になります。おそらくTweetされた方はSIerで働かれてる方なのではないでしょうか。
僕の下記Tweetをご覧ください。
フロントエンド全部捨てるか‥web系で未経験で入社するとほぼほぼ全部やらされるから、どれかを捨てるって選択肢なかったな。
分業制度が行き届いてる企業に一発で入社できるならそうかもしれないけど、ほぼ無理なので、初めは全部やって後から自分と相談すれば良いと思う。— やすお@フリーランスエンジニア🤩元社畜 (@freelance_yasuo) 2020年3月31日
会社に入社して、全部やってから自分の好みで専門領域を変えていけばいいと思います。初めから自分の適性なんてわからないですしね( 一一)
未経験からフロントエンドがっつりやるべき?
では、未経験でWEB系を目指されているエンジニア志望の方は、普段からバリバリ、フロントエンド言語を学習したほうが良いのでしょうか?
僕の意見は…
これが僕がWEB系なら半分反対と言った理由です。
WEBエンジニアにフロントエンドは必須と言った手前申し訳ないのですが、未経験の場合はHTML、CSS、javascriptに深入りするのを決しておススメしません。
なぜならHTML、CSSだけで何冊も本が出るくらい深いですし、PHPやRubyの勉強の傍らjavascriptを勉強するほど、時間は余っていないと思うからです。
ですので、HTML、CSSはさらっとこなし、javascriptはバックエンド言語で学んだアルゴリズムを応用したり、簡単なモーダルウィンドウを作るレベルまで出来たら、それ以上は深入りする必要はないと思います。※本当に余裕があるのであればAjax通信も勉強しましょう。
終わりに
僕自身、最初の会社に入社した時は、HTMLちょっとできる、CSSなんとなくわかる、javascriptなんとなくわかるかも、ってな具合にフロントの知識がふわふわしていましたが、業務を重ねるうちにだんだん分かってきます。
未経験の段階でフロントエンドにオールインするとコスパが悪いので、それだったらRuby、PHP、JAVAなどのバックエンド言語の習熟に勤めたほうが良いと思います。
最悪ポートフォリオを作成するときにフロント側はBootstrapなどのフレームワークを入れたらそれなりのものが作れちゃいますしね。
RUNTEQ(ランテック)
実践型Webエンジニア養成プログラミングスクール(低価格です)
TechAcademy
最短4週間で未経験からプロを育てるオンライン完結のスクール
TECH::CAMP
スパルタ式プログラミングスクール!自分に甘い人はぜひ!
DMM WEBCAMP
転職を本気で考えている方向けのプログラミングスクール!
お仕事決まれば全額キャッシュバック!転職特化型Ruby実践研修

僕は元々Fラン大学出身で、ブラック企業の社畜だったのですが、30代前半でWEBエンジニアとしてIT企業に転職して人生が大きく変わりました。
WEBエンジニアは実務経験1年程度あれば月収50万円は稼ぐことが出来ますし、実務経験2~3年程度あれば年収1000万円稼ぐことも可能です。
もちろん稼ぐためには努力は必要です。しかし、逆を言えば「努力が必ず報われるのがエンジニア」という職業です。
エンジニアになって稼ぎたい!理想の働き方をしたい!と思っている方は「未経験からエンジニアになる方法」を読んで、ぜひ挑戦してみてください。