駆け出しエンジニアのタグつけている人コーダーとフロントエンドエンジニアの違いわかっていない問題 Part.2
Part.2です。
Part.1を読んでいない人は、できれば読んで欲しいですが、フロントエンドエンジニアに必要なスキルだけ知りたい人は、この記事だけ読めば十分です。
【前の記事】
https://note.com/karukichi_yah/n/n957238cc5de8
フロントエンドエンジニアに必要なスキルとは?
では、本題です。
あくまで、2020年時点での話ですが、フロントエンドエンジニアとして働くには以下のようなスキルが必要になるかと思います。
※Pythonは、RubyやPHPと比べると用途が少し異なる(機械学習やデータ解析が主な用途)ので、省きました。
※WordPressは、制作会社によって採用しているところとしていないところがまちまちなのでここではあえて入れませんでした。
・HTML・CSS
・SCSS
・jQuery
・JavaScriptの深い知識
・Ruby・PHPなど何らかのサーバーサイド言語の知識
・サーバーやHTTPなどウェブに関する知識
・Unixコマンドを用いたPC操作
・データベースの知識(MySQL,PostgreSQLなど)
・Git
コーダーのところに書いていない知識は太字で変えてみました。
コーダーと比べたら必要なスキルが一気に増えたと思いませんか?
では、一個ずつ説明していきたいと思います。
SCSS
CSSをプログラミングっぽく書けるアレです。
規模の大きい案件になるとスタイルを管理するのが困難になるので、習得は必須かと思われます。
→余談ですが、募集要項にStylusやLessなど、SCSS以外のCSSメタ言語が書ける人を募集している企業も少数ですが、職探しの時に見つけました。
JavaScriptの深い知識
フロントエンドエンジニアの場合、高度なJavaScriptの知識が求められるので、あえてこういう書き方をしました。
ここで重要なのはjQueryではなく、JavaScriptの深い知識がいるということです。
両方書いてみた方の多くは、jQueryよりもJavaScriptの方が難しいと思った人が多いのではないでしょうか?
→僕は学習し始めの時、jQueryそこそこ書けるから楽勝っしょwって思って、JavaScriptの勉強を始めたら、マジでイミフなんですけどーってなりました。
話が若干どころか結構逸れましたが、2020年現在だと以下のようなスキルや知識が求められる気がします。
・Vanilla JS
・NodeJS
・AngularJS
・ReactやVueなどUIに特化したライブラリの知識
・webpackやaxiosなどJavaScriptライブラリの知識
・Babel
・TypeScript
めっちゃいっぱいありますね。(☝︎ ՞ਊ ՞)☝︎
Vanilla JSは普通のJavaScriptです。
未経験者に上記全ての技術を求める企業はあまりないかとは思いますが、JavaScriptのみ、しかもよく使われている技術だけで、これだけ多くの技術があります。
→僕の職場は、VueとAngular以外は全て業務で使用しています。
上記に挙げたもの以外でも、まあいっぱい使われていると思います。
Ruby・PHPなど何らかのサーバーサイド言語の知識
いきなり結論から言いますと、フロントエンドエンジニアだからといって、サーバーサイドの知識が全くなくても大丈夫ということはないと思います。
なぜ、フロントエンドエンジニアでもサーバーサイドの知識が必要なのかを説明するために1つ例を挙げてみます。
SNSのようなアプリケーションを開発することになって、非同期通信を用いたいいねボタンを実装することになったとしましょう。
REST APIを用いて実装することとなった場合、主に以下のような知識が必要になります。
REST APIとは?
https://wp.tech-style.info/archives/683
・HTML・CSSの知識
・非同期通信を行う手法やバックエンドとの連携手法
→どのような構造で、どのようなkeyや値を持ったJSONを返すのかやURL設計など
・配列やオブジェクトの扱い方
・DOMの操作
・HTTPの知識
→HTTPメソッド、HTTPヘッダ、HTTPステータスなど
HTML・CSS・jQueryの知識だけでは、どうにもならないと思いませんか?
非同期通信って、JavaScriptのイメージが強いような気がしますが、いざ実装しようとすると、フロントだけでなく、バックエンドの知識やHTTPの知識など、様々な知識が必要になるんです!
駆け出しのフロントエンドエンジニアがどの程度書けたほうがいいかという基準は一概には言えませんが、個人的にはフレームワーク(RailsとかLaravelとか)を使ってアプリケーションを作り、デプロイできるくらいのスキルは最低限いるのかなとは思います。
サーバーやHTTPなどウェブに関する知識
最低でもこの辺は理解しておきたいところです。
・サーバー周りの基本的な知識
→よく使われるWebサーバー(Apache、Nginx)やよく使われるサーバーOS(CentOS,Debian,Ubuntuあたり)の種類など
・HTTPメソッドやHTTPステータスコード、HTTPヘッダの読み方など
この辺がよく分からないと、非同期通信の実装とか、ログインの仕組みとかがいまいち理解できないような気がします。
Unixコマンドを用いたPC操作
真っ黒い画面でキーボードを操作するアレです。
サーバーにSSHなどでアクセスして操作を行う機会がフロント・バックエンド問わずエンジニアはあるので、これも最低限はできないとまずいのかなと思います。
ちなみにですが、最後に紹介するGitをある程度使えるようになるには、基本的なUnixコマンドを理解していないと多分しんどいと思います。
データベースの知識(MySQL,PostgreSQLなど)
がっつりDBをいじるということはフロントエンドエンジニアだとあまりないかもしれませんが、以下のようなスキルは最低限必要だと思います。
・DBのログイン
・テーブルの作成やレコードの更新・削除
・データの検索
・データ型の違いの理解
この辺りのスキルは最低限はフロントエンドエンジニアでも必要だと思います。
Git
ソースコードを管理するのに使うので、基本操作は最低限できなきゃダメです。
まとめ
3000字弱の文章を10行でまとめます。
コーダー
HTML・CSS・jQueryが書けて、CMS(主にWP)の知識があって、デザインもデザイナーさんほどではないがある程度出来る人。
→サイトの制作がメインで、場合によってはプログラミングの知識も少しは必要。
フロントエンドエンジニア
→HTML・CSSに加え、高度なJavaScriptの知識やサーバーサイドとの連携手法など、ウェブ全般の知識に長けた人。
→サイト制作を行う場合もあるが、ウェブアプリケーションの開発がメインになるため、プログラミングスキルやコンピュータそのものの知識も必要。
最後に
いかがでしたでしょうか?
コーダーとエンジニアでは必要なスキルが全く違うということ、駆け出しエンジニアとかプログラミング初心者のタグつけてる人って一体どっちを目指してるの?っていうことが伝えたくて、今回このnoteを執筆しました。
違いがなんとなくでもわかっていただけたら、僕がこのnoteを執筆するのに費やした4時間くらい(書いた内容がなぜか半分くらい消えて、書き直した時間も含む)は有意義な時間だったのかなって思います。
次noteを書くのはいつかはわかりませんが、またなんか気が向いたら書くかもしれないです。
それでは、最後まで読んでいただきまして、ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?