事務職からエンジニアへ、独学・未経験転職の実際　〜Part 1: 勉強編〜

はじめまして！私は半年弱ほど独学でバックエンドのプログラミングを学んだ後、ウェブ開発系の会社から内定を頂き、4月から転職予定です。

勉強中も転職活動中もネット上の情報を参考にしましたが、アフィリエイト記事や不正確な情報も多く、「もっと○○の情報があったら助かるのに」と思うことがありました。ですので、大変僭越ながらこれまでの軌跡を書き残します。少しでもお役に立てれば嬉しいです！

こんな情報を求める方には一例として参考になるかと思います：

- 実務未経験で、職務経歴書で何をアピールすれば良い？
- どんな勉強をしておくと良い？
- 未経験からの転職で、納得のいく条件を求めるのは難しい？

注：人によって状況は異なると思うので、あくまでひとりの経験談・ひとつの意見として捉えていただければ幸いです。

# 目次
1. 自己紹介（簡潔にします！）
2. 勉強方法：メンター付き独学のすすめ
3. 勉強期間&時間：仕事との両立問題
4. 勉強内容と、そこから転職で評価に繋がった点を分析<br>
①とにかく手を動かす<br>
②Githubや技術ブログにアウトプットする<br>
③複数言語に挑戦する

長くなってしまったので、**勉強編**と**転職編**に分けます。今回は勉強編です。

# 1. 自己紹介（簡潔にします！）
- 年代：20代半ば
- 最終学歴：英語系の大学院
- 職歴：都内外資系企業の事務部門

幼少期にアメリカに住んだことがきっかけで英語が大好きでしたので、大学院まで行って専攻しました。エンジニアを目指すにあたり、英語力はプラスだったと思います。プログラミング自体英語で学びましたが、日本語に比べて情報量が圧倒的に多いからです。
一方で、プログラミング経験はほぼ皆無の状態からのスタートでした。大学でHTMLの授業を受けたものの、画面が真っ白になるたびに周りの友人に助けを求めるほど苦手でした・・・

# 2. 勉強方法：メンター付き独学のすすめ
私はプログラミングを独学で学びました。
といっても、幸運なことに近しい友人に経験豊かなバックエンドエンジニアがいて、彼にメンターをしてもらいました（それでもお役に立てる情報もあると思いますので、「なんだ、全然独学と言えないじゃないか」と思って画面を閉じないでいただけると嬉しいです）。

勉強方法はスクールやウェブ教材など色々あり、人によって適した方法は様々だと思います。有料で現役エンジニアにメンターを依頼できるサービスもあるようですね。

各方法のメリット・デメリットはあちこちで議論されているので割愛しますが、**メンターのもとで独学するメリット**を挙げると、主にこんな感じです：

- 学習プランを相談できる（独学だと「次に何を勉強すれば良いのか」という方針を立てるのすら難しいため）
- 行き詰まった時に相談できる（自分で長時間調べて分からないことでも、経験者なら一瞬で解決できることもあるため）

もちろん、メンターがいてもモチベーションや勉強ペースの管理は自分でする必要があります。

# 3. 勉強期間&時間：仕事との両立問題
勉強期間としては約5ヶ月間で、まとまった時間が取れる週末は朝から晩まで没頭した日もあります。
平日は仕事の後や、会社にパソコンを持参して昼休みに時間を取ったりしていました。

それでも仕事が忙しいと勉強時間が取れなかったり、帰ってからも疲れて集中できなかったりして辛かったです。退職して勉強に集中するべきか悩みました（そうした方の[成功談](https://qiita.com/Ryokky/items/833cb3cf916ec0fd1e19)も見かけます）。私の場合、無職になるのは怖かったのもあって転職先が決まるまで続けましたが、それが絶対的な正解だとは思いません。経済的に問題がなく、勉強時間の確保に有効だと思うなら、やめるのも選択肢だと思います。

# 4. 勉強内容と、そこから転職で評価に繋がった点を分析
独学だと、Progateなどをやっているうちは良いですが、その後の勉強の指針がなくて苦戦すると思います。私の場合、前述の通りメンターに感謝するところが多いですが、順番としてはざっくり言うとこんな感じでした。

1. Rubyの基礎（e.g. 配列、ハッシュ、ループ）
2. Command lineの使い方（e.g. 主にcdやmkdirなど基礎的なコマンド）
2. ミニプロジェクト
3. Node.jsを少し（e.g. callback）
4. ミニプロジェクト
5. SQLの基礎
6. Gitの基礎（e.g. add, commit, push）
5. Railsの基礎（e.g. MVC, relational data）
6. プロジェクト
7. 上記のプロジェクトをAWSでdeploy 

転職活動を始めてから気づいたのですが、勉強方法について企業から評価していただいた点がいくつかあったので、ご紹介します。

## ① とにかく手を動かす
上記のミニプロジェクトは決して大したものではありません。具体的には、Image Magickを使ってjpgをPDFに変換するものや、Fakerを使ってモック顧客データを作成するプログラムなどを書きました。
つまり少し学んでは実践する、というのを繰り返していたのですが、理解したことのアウトプットという意味で非常に有効でした。

一方でこれが転職活動中にも評価に繋がりました。Githubに残っていたコードを見てくださった企業もあったのです。面接で言われたのですが、「実務未経験の応募者の中には、『御社に入ったらこんなことやってみたいです』と言うばかりで、実際に行動していない人も多い」そうです。
**小さなことでも色々と挑戦していれば、口で「やる気がある」と言うよりもアピールになります。**

また実務未経験からの転職におけるポートフォリオの重要性については、誰もが口を揃えているとおりです。びっくりするような画期的なものを作る必要はありませんが、**面接で話の種になる何かしらのプロジェクト**があると良いです。
ちなみに、私は[Twilio](https://twilio.kddi-web.com/)という電話・メール系のAPIを使い、リマインダーメッセージを自由に設定できるAPIをRailsで作りました（Githubは[こちら](https://github.com/risafj/mr_messenger)）。

## ② Githubや技術ブログにアウトプットする
Githubにコードを上げておくことのメリットはすでに述べましたが、加えて、ただコードを上げるのではなく**読みやすい形にしておくこと**、さらにいえば**READMEをきちんと書いておく**ことをお勧めします（注：READMEとは、repositoryの説明文などを載せておくファイルで、Github上で最初に表示されます）。

職務履歴書にGithubのリンクを載せても、何も説明がなかったら読んでもらいにくいのではないでしょうか。これは私にとって盲点だったので、転職活動開始前に慌てて各プロジェクトのREADMEを編集しました。内容としては、「なぜそのプロジェクトを作ったのか」「どんな技術を使ったのか」など簡単なもので良いと思います。
実際、「READMEの説明文を見て、丁寧な人だろうという印象を持ちました」と言ってくださった面接官もいました。

Githubの他にも、私は自作アプリ開発中に使った技術についてブログ記事を書きました（**例えばcron jobについて書いた記事は[こちら](https://dev.to/risafj/cron-jobs-in-rails-a-simple-guide-to-actually-using-the-whenever-gem-now-with-tasks-2omi)**）。こちらも読んでくださった企業の方もいらっしゃいましたし、転職活動と関係なく、**学んだことのアウトプット＆将来の自分に向けた参考資料**になるのでおすすめです。


## ③ 複数言語に挑戦する
Node.jsにも触れていたことで、「Rails以外も学ぶ気があるみたいでよかったです」と言われたことがありました。私は採用側に立ったことがないので分かりませんが、転職活動においては案外重要な点だと思います。


<br>
勉強編は以上ですが、転職編ではこんな点をカバーします：

- 実務未経験での職務経歴書の書き方
- おすすめの転職サイトとその理由
- 待遇や労働条件

ご拝読ありがとうございました！

追記：[転職編](https://qiita.com/risafj/items/c5e64b26d5b03cdeda80)を投稿しました。