未経験から4ヶ月でWeb系エンジニアに転職するためにやったこと

# はじめに

こんにちは！
今回、全くの未経験からWeb系エンジニアに転職することができたので、自分の振り返りとして書いてみます。
また、これから目指している方の励みになればとおもいます。

# エンジニアになるまでの4ヶ月
## 準備

エンジニアを目指す前の自分は医療職であり、プログラミングは全くの未経験でした。
なのでまずはPCではなく自分の環境構築として、以下の環境を整えました。

- 無職になる(勉強時間確保のため)
- 東京に住む(元々は新潟県在住）
- MacBook Proを買う
- エンジニア用のツイッターアカウントを作成
- プログラミングスクールに通う

書きながら、結構思いきって生活環境変えたなと思いました笑

この条件で2018年8月からプログラミング学習を開始します。

## 1ヶ月目（8月）

まずはプログラミングスクールの教材をひたすらやりました。
内容としてはHTML、CSS、Bootstrap、JavaScript、jQuery、Ruby、Ruby on Railsを一通りって感じです。

成果物としてはTwitterとInstagramのクローンアプリのようなものを作成しました。
参考にどうぞ

[Twitterクローン](https://morning-thicket-88905.herokuapp.com/talks/top)

[Instagramクローン](https://intense-peak-63967.herokuapp.com/pictures)

スクールの期間としては6ヶ月あるのですが、1日8〜10時間くらいの学習時間が取れたのでこの時点でカリキュラムは卒業課題を残すのみとなりました。

## 2ヶ月目（9月）

まるまる1ヶ月間、スクールの卒業課題に取り組みました。
卒業課題の要件がオリジナルアプリの作成ということで、要件定義、テーブル定義、ER図、画面遷移図、ワイヤーフレームを作った後に実際にアプリを作成しました。
作ったアプリがこちら

[オリジナルアプリ](https://comitrace.herokuapp.com)

**自分の1日の時間の使い方をみんなに公開できるSNS**として作りました。
この時点で、スクールの内容は全て終了しました。

## 3ヶ月目（10月）

ここから作ったオリジナルアプリをひっさげ、転職活動をはじめました。

まずはエージェントに2社ほど登録し、応募ボタン**連打**
Wantedlyの内容も充実させ(ウォンテッド・スコア100くらい)、「話を聞きに行きたい」ボタン**連打**
面接の経験を積むため自社、受託、SESなどは気にせずとにかくIT系企業の面接を受けまくりました。
この頃はだいたい週7〜8回くらい面接に行ってました。
面接の所感などは後述します。

また、面接の他に**体験入社**などにも3社ほど行かせていただきました。

勉強の方は面接の合間に自分のアプリの機能を拡張したり、技術書などを読んだりしていました。
この期間も1日たりとも勉強を欠かさず少しでもいいのでやっていました。

## 4ヶ月目（11月）

11月に入ったくらいで、面接回数は合計20〜30回以上は経験していました。
ここから、自社、受託に絞って面接を行いました。

結果的に月の半ばくらいに**Rails**の**自社開発企業**から内定を頂いて転職活動を終わりにしました。

# 就職するまでに勉強した内容

## プログラミングスクールのカリキュラム

上にも書きましたが、カリキュラム内容はHTML、CSS、Bootstrap、JavaScript、jQuery、Ruby、Ruby on Rails、Twitter・Instagramクローン、オリジナルアプリでした。

難易度的には**Railsチュートリアル**を優しくした感じだと思います。
全くの未経験の自分にはちょうどいい内容だったかなと思います。

一番良かったのは**オリジナルアプリの作成**でした。
カリキュラムなしで自分の頭で考えてアプリを作ることは何よりも勉強になります。
実際これを作りきるまでほぼRails理解してませんでした笑
**自分の力で作った**おかげでそれなりにRailsの知識がついたと思います。

あとはスクールというコミュニティに入ることで一緒に勉強する仲間と出会えたのがとても良かったです。
勉強仲間がいるだけでかなりモチベーションを維持できると思います。

## 技術書

ただ読むというよりは**手を動かしながら書く**ことを意識してました。
技術書とパソコンはほぼセットでした笑

実際にやったものを上からオススメ順に紹介していきます。

##### ○ 現場で使える Ruby on Rails 5速習実践ガイド

個人的には一番良かった技術書です。
オリジナルアプリを作った後にやったのですが、これを元に結構リファクタリングできて、質の高いコードになったと思います。

また、テスト（RSpec）についても何から始めればいいか書いてあるので、全くテストやったことのない人にもとっつきやすくオススメです。

##### ○ リーダブルコード

こちらはやったというより、読んだって感じです。
読んだ時期としてはオリジナルアプリを作った後くらいです。

本に記載してあるコードはJavaやPHPでしたが、コードの書き方や名前の付け方を抽象的に書いてくれているのでRubyの経験だけでも読めます。
こちらもかなりリファクタリングでお世話になりました。

##### ○ Everyday Rails - RSpecによるRailsテスト入門

基本的なことはスクールのカリキュラムでやってきましたが、テスト（RSpec）はこれで学びました。
RSpecの書き方やあるべき姿など細かくわかりやすく書いてあります。

実際、転職活動でもポートフォリオにテストを書いておいた方が評価は高いです（無いよりは）

##### ○ イラスト図解式 この一冊で全部わかるWeb技術の基本

HTTPやセッションなどをかなり優しめに説明しています。
未経験の自分でもわかりやすかったです。

この辺のHTTP、セッション、クッキーなどの知識は**面接で聞かれる**ことが多かったので、どんな教材でもいいとは思いますがさらっと勉強しておくのがオススメです。

##### ○ Ruby on Rails チュートリアル

こちらは本ではないですがやった教材として紹介。
実際初心者の方には結構難しいと思います。
自分も10章くらいまでしかやりませんでした笑

普通にやるのは面白くなかったので、erbをSlimで書いたり、minitestをRSpecにしたりして進めていました。

##### ○ プロを目指す人のためのRuby入門

こちらは4章までしかやってないです、、、
Rubyについてかなり勉強になる本です。

ただポートフォリオとしてのオリジナルアプリを作るのに**必須ではない**かなとは思いました。

とはいいながらもRubyの引き出しがめちゃくちゃ増える本なので余裕がある方は読んだ方がオススメです！
就職した現在ではとてもお世話になっております。

## 勉強会、もくもく会の参加

大体、月に5〜6回、主にRuby、Rails関係の勉強会に参加していました。
正直勉強会でされるLTなどは話が全くわかりません笑

一番の目的は勉強会というより、懇親会です。
さらにいうと**実際に働いているエンジニアと話す**ことが目的でした。

スクールにいるだけだとエンジニアとして働いている人と会う機会は中々ないです。
エンジニアの方とお話しすることで、エンジニアになるために**勉強すべきこと**や**転職活動のやり方**などを知れたりします。
実際、**某テック系YouTuber**の方や、**採用担当のエンジニア**の方などとお話しする機会があり、どんな企業がオススメか、何を勉強するのがいいかなどエンジニアになる上でかなり有益な情報を得ることができました。

## その他アウトプット

アウトプットは転職する上でかなり大事だなと思いました。
面接だけじゃ自分のこと**(特に技術面)**はなかなか伝えきれないなと感じます。
なのでアウトプットを継続的、かつ積極的にして**「入社した後伸びてくれそう」**と相手に思ってもらえるようにしてきました。

##### ○ Qiitaへの技術記事投稿

オリジナルアプリを作り終えたくらいに、その経験で学んだことをいくつか記事にしていきました。
エンジニアではないながらも自分の記事に**いいね**がつくのがとても嬉しかったです。

技術記事ということでブログでもよかったのですが、マークダウンの練習にもなるとのことでQiitaにアウトプットしてました。
また、めちゃつよエンジニアから~~マサカリ~~**ありがたいコメント**が飛んでくることもあり、それで一層理解が深まるのでかなりオススメです。

##### ○ 100DaysOfCode

ツイッターで流行りのハッシュタグ **#100DaysOfCode** をご存知でしょうか？
毎日、プログラミング学習の記録をツイッターに書いて100日目指すというものです。
これを勉強開始時から毎日続けていました。

転職活動中に勉強記録は100日を超え、それがかなり面接官のウケが良かったです。
また、毎日勉強したことをアウトプットすることで**勉強とアウトプットの習慣化**ができるので、こちらもかなりオススメです。

[ツイッターアカウントはこちら](https://mobile.twitter.com/ryokky59)
どんな感じで書いてたか見本にどうぞ。
少し下に追っていく感じにはなってしまいますが、、、

##### ○ GitHub

勉強したものはほとんどGitHubにpushするようにしていました。
大体は**オリジナルアプリのリポジトリ**以外は見てくれないことも多いです。

たまに勉強量を見てくれる方もいるのでやったことは上げておいて損はないかなと思います。

# 転職活動

転職活動の期間としてはだいたい1〜2ヶ月くらいでした。
なるべく早くから開発業務を経験したかったのでは**Railsの自社か受託**に就職できることを目指して動きました。

## まずは受けてみる

最初の1ヶ月くらいで20社ほど面接を受けに行きました。
受けた企業は自社、受託、SESだったり、言語もRuby、PHP、Python、Javaなど特にこだわりなく受けに行きました。

面接はじめたての頃は、スムーズなコミュニケーションが取れなかったり、将来どうなりたいという質問に答えられなかったりしていました。
でも面接経験を重ねるにつれ、**業界知識**や**面接経験**が蓄積され、かなり手応えのある面接ができるようになってきたと思います。
また、後半は面接の流れにも慣れてきて、かなり**リラックス**、かつ**堂々**と面接ができるようになり、そこも評価されるようになりました

## いざ、本命企業へ

面接にも慣れてきた頃、本命企業へ応募していきました。

応募していった企業は目標だった**Railsの自社か受託**に絞っています。
Railsはスタートアップ企業によく好まれるので、マージンが発生するエージェントよりはWantedlyのほうが比較的、求人が多いです。
また、Wantedlyには**SNS連携**があるおかげでアウトプットしたものを簡単にアピールでき、かなり印象良く面接を進めていくことができたように思えます。

結果的に転職活動全体で**5社**ほど内定をいただくことができました。
そのなかで開発に携われそうな**Railsの自社企業**に就職することを決め、転職活動を終わりにしています。


# まとめ

よく「未経験からWeb系エンジニアは厳しい」という声を聞くのですが、**本気で頑張れば絶対になれます！**
というか実際になった人が自分の周りにもかなりいます！

ただ、本気で頑張ればと言いましたが、頑張る方向は間違えないようにしないとだなと思いました。
この記事が**正しい努力の方向**のヒントになれれば幸いです。

# 追記（2019/1/14）

こちらのYouTubeの動画でこの記事が紹介されました。
エンジニアを目指す方たちにとってはかなり参考になるかなと思いますので合わせてみていただくのをオススメします。

[プログラミング初学者の「わかってから始めたい病」の危険性](https://www.youtube.com/watch?v=f0-s8hGmFWk&t=4s)

# よくあった質問(2019/2/9)

たくさんの**いいね**ありがとうございます！
多くの方に読んでいただいて、そしてかなりの反響があって嬉しい限りです。
これを書いた後に、DMなどで結構質問とかがあったのでこちらに共有したいと思います。

##### ○スクールに通うべきか 

実際に通ってエンジニアになった身としては、スクールは**必須ではない**と感じています。
理由としては
・ 現在は多くの独学できる教材があること(例：Progate、Railsチュートリアルなど)
・ メンターをツイッター、サロン、サービスなどで見つけることができる
・ 独学でエンジニアに転職したという報告が増えてきている
などがあります。
スクールに通うとなるとどうしてお金が必要になりますし、スクールによっては仕事を辞めなければいけないところもあります。

ただ、スクールに通うことでメリットもあり、
・　なにを勉強すればいいか迷わない
・　同じレベル感の仲間ができる
・　卒業生してエンジニアになったからから話が聞ける
これらがあるおかげで独学よりも早く転職することができると思います。

また、卒業後もコミュニティとして在籍できるスクールもあります。
これのおかげでエンジニアになった後も学習の手助けになるのはかなりのメリットかなと思います。
実際、自分は卒業後もかなり利用しています笑

自分がエンジニアになるためにどこまでリソースとリスクをとれるかしっかり判断するのが大事だとおもいます。

##### ○転職活動はどれくらいのスキルで始めたか

時期としてはオリジナルアプリを一通り形になるまでつくったらすぐに始めました。
Railsのスキルだけでいうと
・　典型的なCRUDが作れる
・　一対多、多対多のアソシエーションが組める
・　有名なgemを利用する（devise、kaminariなど）
・　Ajaxで非同期にページネーションやお気に入り登録などをする
くらいだったとおもいます。

その後、転職活動をしながら、RSpec、OAuth認証でのログイン、slimなどを勉強してアプリに取り入れています。


##### ○オリジナルアプリのエラーに対してどうしてたか

スクールのカリキュラム内のことはメンターに聞いたりしていました。
でもオリジナルアプリに関してはメンターでもわからないことが多くかなり時間を使ったりしました。
大体はエラー文をググって調べて直します。

でもどうしてもわからない時は実装方法や仕様を変えます。
なので最初の要件定義で想定していたアプリとは違うところも出てきました。
それは**自分の実力不足**として認め、とりあえずアプリとして形にするところを目指して作り進めました。

# 最後に

自分は4ヶ月でそこそこ早くエンジニアになれましたが、職場では実力不足を痛感しています。
実務に入ったほうが早く成長できると思いますが、その分、技術力が足りなくて苦しいこともあります。
幸い、自分の入った職場はいい方々に恵まれていてなんとかやっていけてます。

短期間で目指すのではなく、時間をかけてしっかり基礎を学び、ある程度技術力がついてからの転職も個人的にはアリかなと思います。
また、転職の前に**インターン**などで現場を経験するのもいいかもしれません。

どういう風にエンジニアを目指すかは人それぞれあると思います。
自分が決めたやり方を**信じて**頑張っていきましょう！
これからエンジニアを目指す方々を陰ながら応援しています！

**それでは!**