こんにちは。都内のITベンチャー企業でエンジニアとして働いているアトフジ(@ato_fuzi)です。
2019年9月からプログラミングの勉強を開始し、2020年2月に内定をいただきました。
という点については、転職活動時に私も気にっていたことなので、今回は私自身の「内定獲得時のスキルセット」についてお伝えしたいと思います。
※この記事は、全くの初心者向けというよりは若干プログラミング言語の知識がある方、実際に勉強を開始している方向けの内容です。
内定をいただいた時の僕のスキルセット
内定をいただいた時のプログラミング言語のスキルセットはこちらです。
【フロントエンド】
HTML、CSS、JavaScript、Jquery、vue.js
【バックエンド】
PHP、SQL、Laravel
これらの言語を使って、サイトの模写を2回行い、WEBサービスを1つ作成した程度です。
サイト模写というのは、WEBサイトの見た目だけをHTML、CSSを使って再現してみるという作業です。
例えば、このブログのトップ画面をそっくりそのまま真似してみるというのが模写コーデです。個別記事への遷移とか検索機能は全くノータッチ。
模写コーデのサンプルはこちら
WEBサービスは、ツイッターのようなSNSサービスを真似して作ったサービスです。
気になる方はこちらから実際に僕が作ったサービスを体験できます。
WEBサービス:Engineer Town
mail:sample@sample.com
pass:password
でログインする事が可能です。
フロントエンドとバックエンドの違いについて分からない方へ
フロントエンドはWEBページの見た目部分を作る言語です。このブログで言えば、トップ画面のタイトルの配置や記事一覧をどのように表示するか、といった目的を達成出来るのがフロントエンドの言語です。WEBサイトのデザインを作り上げる言語と思っていただければOKです。
バックエンドはWEBページの裏側の処理を作る言語です。このブログで言えば、ブログ記事のリンクを押した時、データベースから対象となる記事の内容を取得して表示したり、検索ボックスでブログ記事を検索する機能を実装するのがバックエンドの言語です。よくあるユーザー登録やメールのお問い合わせ、決済機能なんかの実際の中身の処理は全てバックエンド言語によって書かれています。
結構沢山の言語が必要なんだと思う方もいるかもしれませんが、実際はかなり浅い理解でした。
コードは完璧に覚えてなくて「都度調べてコピペしてコードを記入していく」というレベルに近いです。
各言語についてどの程度の深さだったのかも参考までに紹介しておきます。
ちょっと専門用語も入ってきますが、分からない方は雰囲気だけでも掴めればいいんじゃないかと思います。
HTML
- 動きのないHPを作成できる
- 模写コーデ2回程度
サンプルのようなサイトを15時間くらいかけてやっと作成できたレベルです。
今なら1時間くらいで出来る気がします。
CSS
- ネット検索を駆使し、希望のスタイルを付けられるレベル
- アニメーション等の動きは付けていない
- レスポンシブ対応できない
- bootstrap(CSSフレームワーク)も使えない
- Sassがなんなのか理解もしていない
模写サイトとWEBサービスのデザインはほぼCSSで書いてます(色、配置、大きさなど)
JavaScript・Jquery
- 理解度はかなり低く、ネットのコードをコピペして対応するレベル
- 生のJavaScriptのコードは自分では書けない
JqueryはJavaScriptを簡単に書くことが出来るライブラリです。
JavaScriptを一から自分で書くのはかなり大変なので、ほぼJqueryを使ってました。
作成したWEBサービスのトップ画面にタイトルをフェードインさせたり、タブの切り替え、検索ボックのポップアップ機能は全てqueryで書いてます。
しかし、全てコピペです。
PHP
- Webサービス1つ制作(ポートフォリオ)
- 単なるコピペじゃなく、実装したい処理を自分自身の頭で考えてコードに落とし込めるレベル
- 言語の中では一番理解度が高い
WEBサービスの裏側の処理を全てPHPで記入しています。110時間かけて作成しました。
ユーザー登録機能・ログイン機能・ログアウト機能・プロフィール編集機能・フレンド登録機能・メッセージ送受信機能・投稿機能、その他もろもろの機能を実装しています。
WEBサービスを作成すると、必然的にHTML、CSS、JavaScriptのレベルも上がるのでおかなり勧めです。
転職時に一つ作品を作っておくは業界的にも当たり前になっています。ポートフォリオとも呼ばれます。
※ちなみにこういった機能を全てPHPを使って自分で実装したコードのことを「フルスクラッチ」と呼ばれます。面接でフレームワーク使っていますか?なんて質問を受けるかもしれません。フレームワークは先程紹介した機能のうち、ユーザー登録機能とか、ログイン機能が準備されていたりします。よくある機能は準備してくれちゃってる訳ですね。こういった機能を全て自分で準備したコードをフルスクラッチと呼ぶので、覚えておくといいです。
mySQL
- PHPのコード上でSQL文を書き、DBへのデータの登録、取得、更新が出来る
- DBの理解が浅いため、難しいDBのデータの取得方法はできない
- DBの操作はGUI(画面操作)でしかやったことがなく、CUIからの操作はできない(黒い画面)
DBにユーザー情報を登録したり、更新したりするためにPHPとセットで使いました。
laravel(PHPフレームワーク)
- PHPで作ったサービスをlaravelに移行
- フレームワーク特有のMVCモデルをなんとか理解
- PHPで書いた処理をlaravelで準備されている便利なオブジェクトで代替したレベル
- migrationやSeederを使ったDB操作はできない
最終面接に進んだ企業から「laravelを使えるくらいのスキルレベルになっていて欲しい」と言われたので、2週間死ぬきで勉強して習得しました。
Vue.js
- ちょっとかじったレベル
laravelの学習の際に、ついでにちょこっと勉強。ほぼ使えないレベル。
以上が私が内定をいただいた時点でのスキルセットになります。
エンジニア転職に必要なレベルはどの程度?
おそらくこの記事を読んでいる人は、「どのくらいのスキルであれば転職可能なのか?」「どのくらいのスキルで転職活動していいのか?」という点に関心があると思います。
その点から考えると、内定をいただいた時点での僕自身のスキルレベルは普通か、おそらく低いです。
というのも、僕が「エンジニア転職いいかも」と思ったのは実は2018年の頃。その頃から情報取集をしていましたが、明らかに実務未経験からエンジニア転職を希望している人の数が増えています。
おそらくインフルエンサーの影響が強いのではないかと思いますが、Twitter界隈で情報収集をしていると、未経験者プログラミングレベルは結構高まりつつあると思います。
最近だとポートフォリオとしてWEBサービスを作成した後に、Dockerと呼ばれる仮想サーバーで開発環境を構築し、さらに本番環境としてAWSで仮想サーバーを構築しコードをサーバーへデプロイ、しかも開発ソースの管理にはGitHub使って実務さながらにバージョン管理をする、という超難易度の高いことをされている方もちらほらいる程です。
そう考えると、今回お伝えした僕自身のスキルセットは、ある意味面接を始めるための最低限のレベルだったのかなとも思います。
じゃあ実際、どのくらいのスキルが求められるかは、勉強している言語、入社しようと考えている企業の規模によっても変わってきます。
モダンなスタートアップ企業だと、従業員数が少ないため新人教育に時間はさけず、割と即戦力を求めています。そういった企業へ行こうと思ったら正直僕のレベルだと全く足りていないと思います。
未経験者の申込数も多いと思うので、いわゆるレッドオーシャンですね。
例えば、自社開発企業でも従業員人数が100人近くいるような企業であれば、僕みたいに何か一つポートフォリオを作って行けば「自分で学習して成長できる能力がある」と判断して、面接を受けてくれる企業があるでしょう。
そういった企業に出会えるのを狙って、どんどん面接を申し込むのも一つの戦略です。
僕自身は、「必要最低限のスキルを身につけてガンガン面接を申し込んでいく」と言う戦略で活動していました。
エンジニア転職で判断されるのな何もスキルだけではありません。
前職の経験、経歴、対人スキルなど、中途採用は新卒と違い総合力で闘う事ができます。
そのへんの考え方については、こちらの記事で詳しくお伝えしているので、気になる方は是非見てください。
参考:エンジニアへの転職活動でスキル以外に意識した3つの事【重要】
転職するまでの期間や様子についてはこちらの記事に詳しく書きました!
参考:【未経験】銀行員からの転職でエンジニアへ!期間はどれくらい?【30代既婚者】
今回は以上です。個別に質問や相談がありましたらなんでも聞いてください。