未経験×独学からWeb系自社+受託開発企業のエンジニアになるまでのストーリー

##はじめに
経歴として大学卒業後に自動車部品の会社で金型設計の仕事を2.5年していました。
2020年4月から独学を開始し、約6ヶ月後にWEB系自社+受託開発企業様から内定をいただくことができました。
内定までの学習状況や転職活動での経験を共有させていただきます。
低偏差値大学、有用なスキルor資格無し、離職期間15ヶ月の私でもなんとかなりましたので、
これから勉強を開始される方や、転職活動中の方の参考になれば嬉しく思います。

##目次
1. なぜエンジニアを目指したか
2. 学習開始時に設定したゴール
3. 転職時のスキルセット
4. 情報収集方法
5. 学習教材＆金額
6. 学習＆転職活動
7. 反省点
8. まとめ

##1. なぜエンジニアを目指したか
この部分が最も大事だと思います。前職では目標もなく、なんとなく大手に入った理由から退職しましたので。
個人で稼げるから、リモートワークできるからという気持ちは、少なからず誰しもがあると思いますが、そのような理由のみで始めると挫折や、転職活動で苦労する可能性が高くなると思います。
自由な場所と時間でお金を稼ぐだけなら他にも色々ありますし。
人生において成し遂げたい目標(又は理想のライフスタイル)を決め、手段として企業を選択するのが本来の筋と思います。

私の場合、大きくは以下の3点になりました。
1. 転職や新しい挑戦をする人を応援できるサービスが作れる。
2. インターネットを通すことで自分の生み出した価値を沢山の人に提供できる。
3. 将来の選択肢を多くする立ち回りができる。

1：23~24歳の間に、「今選ばなかった選択肢が次の瞬間もあるとは限らない」というのを痛感し、価値観を大幅にアップデートできました。この経験から、次の一歩を踏み出す人の力になりたいと思うようになりました。
2：何万点もある自動車部品の中から、私の作り出した部品を意識する人が殆どいないという思いが前職ではあり、多くの人に届けられるソフトウェア製品に携わりたくなりました。
3：Web系エンジニアのメリットまんまです。需要、スキルの可搬性、ワークスタイルの柔軟性etc...(1番の経験に強く影響を受けました)

これらを達成するのに最も合理的かつ、現実的な選択肢がWeb系エンジニアへの転職でした。

##2. 学習開始時に設定したゴール
[こちらの動画](https://www.youtube.com/watch?v=N0yetny4Zco)を参考にPortfolio作りを計画しました。以下が具体的な言語と技術になります。

・ITに関する基礎知識、Linux、SQL
・HTML5/CSS3(Sass)/Bootstrap　マークアップ
・JavaScript(Jquery)　フロントエンド
・Ruby/Rails　バックエンド
・AWS(VPC/EC2/RDS/Route53/ACM/ALB)　インフラ
・Docker/docker-compose　環境構築
・CircleCI(CI)　自動テスト

学習前の段階ではAWSやDocker、CircleCIについてはよく分かっていませんでした。
メリットや学習コストについて、この段階から理解するのは難しいと思いましたので、ひとまず計画に組み込み走り始めました。

##3. 転職時のスキルセット
上記に加え、知識不足から以下を追加で学習しました。
Git/Github、Vue.js

転職活動はPortfolio(Rails)と自己紹介用のSPA(Vue)の2点を用いました。

##4. 情報収集方法
Twitter(エンジニア用)
YouTube(勝又けんた氏、web万屋氏、くろかわこうへい氏等)
Google(Qiita、Teratail、Stackoverflow等)
雑食系オンラインサロン

情報収集はとても重要ですので、Twitterやオンラインサロンを活用するのをおすすめします。
繋がりができれば挫折しにくくなりますし、もくもく会の主催や参加を選考時に評価いただける場合もあります。

##5. 学習教材＆金額
[こちらの動画](https://www.youtube.com/watch?v=LT-dXBUnZdI&t=585s)を参考にしました。

Progate(4ヶ月×1000円)
Dotinstall(1ヶ月×1000円)
Udemy(Rails:1200円、AWS:1200円、Docker:4500円、Vue.js:1200円)
Rails tutorial(無料)
Youtube(無料)
Paiza(無料 ＊コーディングテスト対策)
AWS(2ヶ月×2000円)
オンラインサロン(3ヶ月×1000円)
Wantedlyプレミアム(1ヶ月×3200円)
MENTA(2ヶ月×10000円)
キタミ式イラストIT塾 基本情報技術者(1000円)
Linux標準教科書(1200円)
確かな力が身につくJavaScript「超」入門 (確かな力が身につく「超」入門シリーズ)(1000円)

消費税や細かい部分は忘れてしまいましたが、全て合わせて約46500円でした。

基礎をProgateで抑え、Udemyで深堀りという進め方が最も効率良く感じました。
理解が足りない部分は都度ググったり、辞書代わりに書籍を使用していました。
Udemyは頻繁に90％セールをするので、その時に買うのをおすすめします。
書籍はメルカリ等で中古で買えます。技術書籍はそれなりの値段しますので。

スクールは何十万とかかるので、費用の安さはメリットと感じます。
今はMENTAのようなサービスもありますし、Twitter等でメンターを探してもいいと思います。
完全に一人でやっていると効率が悪くなるので、ある程度はお金をかけたほうが良いです(私の金額は高い方と思います)。

＊追記
学習デバイスはMacを使用して下さい！メルカリで5万円もあれば買えます。(高スペックでなくともOKです)
エンジニアの記事等はMac前提の話が多いので、挫折要因で多い環境構築のコストが下げられます。

##6. 学習＆転職活動
```4月 IT基礎知識、Linux、HTML5/CSS3、JavaScript```
キタミ式イラストIT塾、Linux標準教科書は基礎を抑えるつもりで流し読みし、2冊を1週間で進めました。
progateを中心に進めHTML,CSSまでは超楽しいと思いました。特に初めて書いたコードがブラウザに表示された時の感動は今でも覚えています。その後に勉強したJavaScriptで挫折しかけましたが。。。

```5月 Ruby/Rails、Git、SQL```
こちらもProgateを1週ずつ学習し、定番のRails tutorialを1週しました。
GitやSQLは問題ありませんでしたが、Railsから難易度が跳ね上がりました。
眠たい目を擦りながらなんとか進めたのを覚えています。
この頃からQiitaを書くのを習慣付け、アウトプットで理解を深めようとしていました。

```6月 Portfolio作成開始```
この段階で一通りのインプットが終わったので、Cloud9でPortfolio作成を開始しました。
作ったのはコミュニティ作成サービスです。詳細は[Github](https://github.com/Fumi-Mura/circle_app)をご覧ください。
[こちらを参考に](https://qiita.com/masa08/items/0960f9e934889b468d96)サービス定義〜リリースまでをCacooで設計しました。(Controller,Model,Gem設計はしてないです)
理想通りのサービスが作れると何故か自信満々でした。。。

実際にサービスを作り始めたら思い通りにならないことの多さ！！笑
とにかくトライ＆エラーの繰り返しでした。何が分からないか分からない状態に陥ることもしばしば。
夢中でコードを書き続け、気づいたら朝になることも。
やっとの思いで完成させたPortfolioを実際にデプロイする作業に入ります(本当の地獄はここからでした。。。)

```7月 AWS/Dockerの勉強、Portfolioインフラ構築```
HerokuやXserverでの進め方は経験していたのですが、昨今の流行りはクラウドを用いたものが主流です。
早速デプロイするぞ！と意気込み勉強を開始したのですが、各種書籍、記事、動画を見ても何をしたらどうなるかが繋がらず、理解に苦しみました。
Udemyの[こちらの動画](https://www.udemy.com/course/aws-and-infra/learn/lecture/15131460?start=0#overview)でなんとなく理解でき、[こちらの記事](https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce)を参考に、広いAWSの土地に自分のサービスをデプロイする作業を始めました。

しかし現実は甘くなく、正しい操作で作成したはずなのにエラー画面しか表示されない。。。
何も進まないまま1日が過ぎることも珍しくありませんでした。

表示される無情なエラー文から仮説を立て、検索や勉強し直した知識で解決する、を地道に繰り返しました。どれだけ手を動かしても、結局は一つの操作であっけなく解決したりしました。
しかし、そこにたどり着くには良質な時間を膨大に投下するしかないと感じました。

なんとか独自ドメインでHttpsアクセスに成功し、次はDockerの導入を試みました。
最初はとっつき辛く感じましたが、使い方やメリットが分かると、コードで環境を管理できるので非常に便利と感じました。

また、無職期間が長すぎて親との関係がこじれ始め、家での勉強が気まずくなり7月はほぼ毎日ガストにいました。笑
9時〜23時の間コロナ禍の中で本当に迷惑な客だったと思い、感謝と申し訳なさでいっぱいです。ご飯最高に美味しかったです。

```8月後半 転職活動開始```
そんなこんなで、開発・本番環境にDockerを使用し、独自ドメインでHttpsアクセス可能になったPortfolioを携え、Wantedlyで転職活動を開始しました。応募の詳細は以下になります。

**70社応募　→　10社返信(7社お祈り、3社面談or書類選考)**

面接に進めたのは2社のみで、一次面接とスキルチェックで両方落ちました。
このままではまずいと思い、Portfolioの改善とWantedlyの文章を直すことにしました。

```9月 CircleCI、Portfolio新機能追加```
転職活動を一時中断し、Portfolioを強化しました。
CircleCI及び機能の追加(管理者ユーザー、通知機能、Rubocop、テスト追加)
また、自社開発企業に内定をいただいた方や、現役エンジニアの方からアドバイスをいただき、Wantedlyの文章を変更しました。

```9月後半 Vue.jsの勉強、自己紹介SPA作成```
Vue.jsの勉強と並行し転職活動を再開しました。
[こちらの教材](https://www.udemy.com/course/vue-js-complete-guide/learn/lecture/15371624?start=15#content)を参考に学習を進めSPAを作成。学習2日、制作6日、Total約8日でした。
こちらが作成した[自己紹介用のSPA](https://my-portfolio-998ce.web.app/)になります。

```10月前半 内定```
9月末に応募した企業の中から、無事に自社開発企業に内定をいただきました。
Portfolio改善後の応募結果は以下の通りで、ある程度は効果がありました。

**115社応募(内直応募5社)　→　35社返信(20社お祈り、13社面談or書類選考、直応募の返信2社(書類落ち))**

ここまでの苦労から、返信いただいた企業を一社も無駄にはできないと思い、面談や面接の前には必ず企業のHPを読み込み、A4の紙にその企業の事業や文化をまとめ、事前に質問を準備しました。
特に、最終面接では企業のブログを読み漁り徹底的に調べ上げました。
逆質問では、事前に準備したことが伝わるように言葉を選んでいました。せっかく時間をかけてのだから、不自然の無い範囲である程度打算的なのは許してください。笑

また、面接時にはなるべく会話が一方的にならないように気をつけていました。沢山勉強し入社意欲の高い企業ですと、意気込んで喋りすぎてしまいますが、余白を残しておけば相手から質問してくれます。大事なのは、相手を自分の話したい内容に誘導することだと思いました(相手の方との相性もあるのでそこは臨機応変に)。

面接は[こちらの動画](https://www.youtube.com/watch?v=b1_v0PkprC8)を参考にさせていただきました。
最終的に内定いただいた企業は、以下の点を評価いただきました。
・技術に対する姿勢
・コミュニケーションスキル
・月5冊の読書
・TwitterやQiitaへの継続的なアウトプット
・離職後の留学、もくもく会の主催や参加等の行動力

転職活動している他の方や、既に転職された方のPortfolioを見ていると、実際のサービスとして運用できるほどの機能や独自性をもった作品、CapistranoやECS/ECRに加えTerraformまで実装している方がいたりしました。。。
私のレベルでも転職はできましたが、エンジニア職が人気となり、コロナと相まって転職難易度がかなり高く感じました。
その中で内定をいただけたのは運が良かったと思います。

##7. 反省点
独学/転活を振り返り、やっておけばよかったと思ったことです。

- 独自性の高いPortfolioを作る
困りごとを発見し解決できるサービスだと最高です。
自分の好きなサービスの方がやる気は出ますのでその点はトレードオフです。

- PortfolioのTopデザインを拘る
最初の見た目で印象はかなり変わります。Piterest等でイケてるデザインを真似しましょう。
CSSが苦手だと一苦労しますが、見栄えが違うと自分のやる気にも繋がると思います。
できればBootstrap以外を使用することをおすすめします。
CSSフレームワークであればBulma等、VueやNuxtでフロントを構成できればベストかと思います。

- Portfolioを作りきる
前後半の返信率から分かる通り、Portfolioのレベルは高い方が良いです。
期日ベースである程度作り次に進みましたが、自分の納得するまで作りきるのをおすすめします。
時間との兼ね合いもありますのでその辺りはバランスよく。

- 難しいことを複数同時に進めない
例えばDockerの導入とAWSのデプロイを同時に進める等です。
参考書・記事等で勉強しても前提条件(OS、言語/FWバージョン、Gem等)が異なりますので、高確率で予期せぬ事態が発生します。
問題の特定が困難になりますので、解決可能なサイズに予防しておくのが無難と思います。

- チーム開発を意識しGitHubのプルリクを適切に活用する
Rails tutorialでは教えてくれませんが、実務を意識した開発をしておきましょう。
過去の履歴も意外と見られているそうです。ひと手間増えますが費用対効果は高いと思います。
Twitterやオンラインサロン等で仲間を募集しチーム開発をしてもよいかもしれません。

- Wantedlyの文章を工夫する
スペック自慢大会ではありません。自分を雇うことにどんなメリットがあるか提示しましょう。
また、応募者が多い企業では一人の書類を10秒程しか見ないと聞いたことがあります。
勉強したことが分かる技術的キーワードや、目を引くネタを先頭に書くのは興味を持っていただくのに有効と思います。

- コーディングテスト対策をしておく
実施している企業が一定数(体感半分以上)います。
PaizaやLeetcodeで慣れておかないと詰みます。

##8. まとめ
長くなりましたが私の半年間の道のりになります。
何度心が折れかけて、エンジニアになるのを諦めようとしたか分かりません。
それでも継続できたのは、本当にやりたいことがエンジニアの先にあったからだと思います。

勉強すれば誰でもエンジニアになれるとは、とてもではありませんが言えないです。
**しかし、「断固たる決意を持ち、正しい学習プロセスをもとに、最後までやりきることができれば」エンジニアになるのは可能と証明できたのではないかと思います。**
勿論ここがゴールではなく、ようやくスタートラインに立ったという気持ちで、何事も前向きに取り組んでいきたいと思います。

エンジニアに限らず、現在取り組んでいることに誇りを持ち、目標に向かって行動している人が大好きです！
これから学習を開始する人、Portfolio作りや転職活動で頑張っている人を心の底から応援しています！
少しでもこの記事が役に立てば嬉しく思います。

エンジニアになると決意してから、沢山の人に支えられてここまでこれました。
本当にありがとうございました！！

[Twitter](https://twitter.com/Fumy72676433)もやっていますので、よければフォローいただけると幸いです。