未経験からエンジニア就職してサービス任されるまでにやったこと

## TL;DR

欲しい結果を明確に保ち続け時間と体力とお金をかけました。
端的に言えば他人よりは努力したので未経験でも就職できました。
以上。

## 前提

2つ大事な前提があるのでまずはそれを読んでください。

前提1:初めは誰でも未経験ってこと
前提2:エンジニア就職はスタートラインでしかないということ

前提1:初めは誰でも未経験ってこと
初めは当たり前なんだけど誰でも未経験だし初心者です。
バックグラウンドとか関係ないです。

前の経験や環境は思考や行動、価値観には影響を及ぼすかもしれません。
でも前の状態がなんであれ今何になってようとそこに貴賤などなく今が全てです。

自分が今の状態を手にするまでに投じた努力や苦難のストーリーはあると思うしそれを否定はしませんが
僕の価値観的に過去は過去だと思っています。
だから未経験からエンジニアとタイトルに書いていますが、これはある種の煽りです。

前提2:エンジニア就職と言うのはスタートラインでしかないということ
もう一つ大事なことですが、日本でエンジニアになるのはクッソ簡単です。
大事なことなのでもう一度 『日本でエンジニアになるのはクッソ簡単です。』
学歴どころか修めた学問の分野さえ問われません。

progateやドットインストールなどを初めエンジニアとしてスタートするための
準備商材は山ほどあり学歴を問われないのでスタートラインに立つことは超絶簡単なことなんです。

大事なのはスタートした後のことではないでしょうか?
そこには今回あまり触れませんがエンジニアリングで何をしたのかで語れないとスタートラインにいるのと一緒です。

## アジェンダ

- 勉強編
- リアルでの活動
- 面接対策

### 勉強編

何を勉強したか
初心者〜就職するまで
- Ruby
- Ruby on Rails
- MySQL
- Git
- HTML,CSS,JQuery

なぜ初めにRubyを勉強したかというと僕がエンジニアリングに興味を持った2015年くらいは
LarabelはいたけどマイナーでcakePHPかFuelの時代でした。
よくわかってなかったので作れればなんでもよかった。ということでRubyをやりました。

〜就職してから
- Java8
- React及びES6
- AWS
- PlayFramework

会社の主力事業がJavaで書かれてたのでJavaを勉強しました。
Mysqlはバイトの時に死ぬほどデータ出しで書いたので特別な勉強はいらず、どちらかというと設計とか
セキュリティ系のことをさらっと学んだ感じです。
この辺のスタックで社内サービス3個と効率化系のGASをゴリゴリ作りながら勉強しました。
基本作ってレビューもらって動かすと理解できる。

今のサービスにアサインされてから
- Scala
- Akka http
- React,Vue
- AWS
- firebase
- Go

新規系のものは完全にReactとVueでフロントを構成し
scalaをつかったマイクロサービスだったのでこの辺を勉強しています。
今でもScalaは新しい発見があるしアーキテクチャはよくわかってない。

#### どうやって勉強したか

初心者編
1. progateを7日かけてHTML,CSS,Rubyをやる
2. とりあえずRailsチュートリアルをざっと一周する
3. その後自分の作れそうなものを探す
4. 作る
5. レビューしてもらう

初心者の時は概念や仕組みが直感的に理解できないみたいなことがちょいちょいあるんで
悩まず動くものを完成度60%で作ります。時間かけてもしゃあないこともあるのでとにかく早く作る。わかんないのは努力するでも一人でなんとかする系の努力はしない。
とりあえずは動くのが大事。そしたらレビューしてくれる人を探しに勉強会とかイベントにいけます。

就職後
1. ドキュメントのサンプルをとりあえず作る
2. 簡単なリプレースとかを個人リポジトリでやって先輩を勝手にレビュワー指定して見てもらう
3. 実際の製品コードを動かしたりテストを読む
この辺は何か一つ言語ができるとこういった感じの勉強で自走できます。
とりあえずやるが一番のミソ。

べつに特別なことはしません。教材も基本無料。
動くものを明確にイメージしながらそれを目指してやるだけです。
あと、どうせ完全に理解はできないのでまずは動くことが大事だと思ってさっさと作ります。
何を理解してないかだけわかってればOK
時間ではなくて内容で勉強します。この機能を作るとかでセグメントをきる。

あと普通にいっぱいコード書きます。
githubも必ず3コミットくらいは毎日します。
楽しいなーって思って体力の限界までコード書きます。

### リアルでの活動

わからん事とか、興味がある分野のことをサクッと知るためにイベントや
ハンズオンに週一で行きました。

そこで会った人とかにコード見せてレビューしてもらったり
飲みに連れて行ってもらいました。

今のCTOもイベントで会いました。

### 面接対策

面接では技術的な弱点とかに触れつつ、何をしたいのか
今自分に足りないものは何かをスライドにまとめてました。

ここでも特別なことはしてないです。

## まとめ

- 目標(どうなりたいか)を明確に数値にしたよ
- 数値をクリアするために時間、お金、体力のパラメータを調整したよ
- ノウハウとかねーんだよ。黙って努力しろ

って感じです。
情熱とか言い訳とか抜きでまじでやるだけなんで。

というか面白いなと思って手を動かしてたのを後から理由づけしてるだけなんですが、何か参考になれば幸いです。


自己研鑽にあてさせていただきます。