美容師(21歳・男性)がIT転職してエンジニアとしてZOZOに入社するまで

# はじめに

はじめまして、株式会社ZOZOでフロントエンドエンジニアをしているツチヤと申します！

IT未経験から現職に至るまでをシェアしようと思います。
初めてのアドベントカレンダーなのですが、会社を背負って技術記事を出すほどの自信は無くポエムにしました笑
少しでも参考になったり読み物として楽しんでもらえたら嬉しいです！


エンジニアを目指したのが2018年頃からなので情報が古い部分があるかもしれませんが、
特別お金をかけてスクールに通ったりせずに職業訓練校を上手に使って異業種への転職ができたので
当時の自分のようにプログラミング教室にお金を掛けられない方などにとって有益な情報になれれば嬉しいなと思います。


# IT転職開始時のプロフィール
- 住居: 都内（高校卒業後、美容専門学校に通うため上京）
- 学歴: 美容専門卒
- 年齢: 21歳
- 性別: 男性
- 職業: フリーター（焼肉屋のバイトなど）

# IT業界を目指したきっかけ
新卒で美容師として就職しましたがひと月で退職、フリーターになりました。

なんとなく進路を決めて美容師になった結果がこれだったので今後は流石にちゃんと考えないとやばい！と思い、アルバイトをする傍ら自分のやりたいこと・向いていることは何かを探すことにしました。

まずは世の中にどんな仕事があるのかを知ろうと色々な分野の本を適当に読んだり、スマホでググったり...
そんな中でwebエンジニアという職業を知り、興味を持つようになりました。

# 職業訓練校へ
webエンジニアに興味を持ったものの、フリーターでお金がなかったので当時流行りだったテックキャンプなどのプログラミング教室に通う余裕は当然ありませんでした。

ですが僕にはゼロから自力でweb開発を勉強するような根性はなかったので、なんとか誰かに教えてもらいたいと調べている内に職業訓練というものを発見しました👀

何やら国や自治体が運営しているもので無料でプログラミング教室的なものが受講できるようです。
しかもなんと条件を満たせば給付金をいただきながら学ぶことができるとのこと...!

早速詳しい内容を知るために最寄りのハローワークに行きました。

学校選びですが、自分が受講した時期だと都内でweb系のコースが複数あったのでチラシを集めて比較し選びました。
IT系ならとにかく古臭くない方が良いかな、くらいの考えでしたが設備が綺麗で充実している施設にしました。

## 職業訓練校を受講した感想
流石にプログラミング教室のようなモダンっぽい感じのカリキュラムではありませんでしたが、HTML/CSSの基礎は身につきLPを自作できる程度には身につきました！
(おまけにちょっとデザイン領域もかじりました)

今時のweb開発、特にアプリケーション開発だとデザイナーとサーバーサイド、フロントエンドといった形で細かく担当が分かれていると思いますが
訓練校のカリキュラムではその限りでは無く、一人がデザインからコーディングまで一貫して行う想定で組まれていました。
ひと昔まえのweb開発ではデザインからコーディングまで一貫して行うのが一般的だったようでそうなっているみたいです。

そのため訓練校を出た後の就職活動では、どの求人に応募すれば良いのかわからずフロントエンドエンジニア志望だったのですがwebデザイナーに応募してしまったりしましたw

とはいえ無料でここまで教えていただけるのとてもありがたかったので
自分ではどう勉強すれば良いのかわからない&お金にそこまで余裕がないという方にはとてもおすすめ出来ると思います。

学習した内容は下記の通りでした！

- HTML/CSS
- jQuery
- WordPress
- フォトショ・イラレ

## 職業訓練校を受講するまでの流れ

受講するまでの流れはざっくり下記の通りです↓
1. 最寄りのハローワークへ行く
2. 訓練校の見学
3. 受講を申し込む
4. 面接・試験を受ける
5. 合否通知

試験を受ける必要がありますが（信憑性は分かりませんが）あまり落ちることはないと聞きます。
なのでとりあえず気になったら気軽に最寄りのハローワークで相談してみると良いかと思います！

また、都内の場合だとwebやハローワークに案内のチラシが置いてあったりするので、住んでいる区でどんなものがあるのか調べてみると良いかもしれません。

居住区内に受けたいものがない場合は県外のでも受けることができるようで、自分が受講した際のクラスメイトには都内に住んでいない方も何人かいました。
クラスメイトの平均年齢は35 ~ 40歳くらいだった印象です🤔


参考: 
・[求職者支援制度による職業訓練受講給付金のご案内](https://www.hataraku.metro.tokyo.lg.jp/kyushokusha-kunren/school/annai/kunren-seikatsu.html)
・[厚生労働省 東京労働局 求職者支援訓練　募集中・募集予定のコース情報](https://jsite.mhlw.go.jp/tokyo-roudoukyoku/newpage_00139.html)



# 就職活動（未経験転職）
職業訓練校で卒業制作があり、ポートフォリオとしてLPを作成したのでそれをひっ下げて転職活動をしました。
Git管理もしておらず、Sassなども使っておらずな、シンプルなHTML/CSS + jQueryライブラリでちょっとした動きを実装しただけのLPだったので未経験者の中でもレベル感はとても低かったと思います。

求人サイトも見たりしましたが正直よく分からなかったので、素直に転職エージェントを使わせていただきました。
未経験者向けで検索したらヒットしたため、[ワークポート](https://www.workport.co.jp/sv_info/?utm_source=ad&utm_medium=cpc&utm_campaign=ad&cctype=adwords&pgroute=ad_agt_a&gclid=Cj0KCQiAvqGcBhCJARIsAFQ5ke6VxbSmlXxsPklN0_N6wJ4M0D7jCmYric6-NIQQEW6qccLUI7gGNOEaAiccEALw_wcB)を利用しました。


面接ではスキルのアピールに重点を置かずに
- どういった考えでweb業界に進みたいと考えたのか
- この後の展望はどうしたいか、どう成長していこうと考えているのか
をしっかり考えアピールしました。

やはり未経験者だからか、書類を通過すること自体が困難でしたが
片っ端から応募して最終的に2社から内定をいただくことができました🎉

1社はCMSを使ったweb開発を主としている会社で、もう1社は受託開発を行なっているベンチャーで後者に就職しました。

転職活動を行なったのが2019年ごろのwebエンジニアブーム（？）の波が来始めている頃だったので運も良かったと思います。

# 1社目 web系の受託開発企業にて

最終的に3年ほどお世話になりました。
具体的にどんな業務を行ったのかについては1年ごとにまとめていきます！

## 1年目
入社して最初の業務からwebアプリケーションの開発を任せていただきました。
使用ツール・技術スタックは下記のような感じ...
- Vue.js
- Sass（FLOCSS）
- Laravel
- Docker  
などなど...

入社するまではGit管理をした事もありませんでしたし、前述の通りHTML/CSSと少しのjQueryだけでLPを作れるといったレベル感だったのでLaravelなど全く分からず、JSもほとんど書けずでもう何が何だかわかりませんでした😂
本当に何もできないので、チームのお荷物感があり精神的にもキツかったです。

初日にMacBookを貸与され、Dockerインストールして、Git入れて、backlogでチケット管理して...といった感じに指示を受けたのですが
Docker（アプリケーション実行環境）とbacklog（タスク管理ツール）の差も分からず、どの情報が直近で特に必要でどれがそこまで重要ではないのか等の取捨選択ができずとても苦戦しました。

そのため業務時間外での学習は必須で、大体平日は1・2時間、土日はどちらかは8時間くらい勉強、という感じの生活を1年くらいは送っていたと思います。

2年目に入るころには、サーバーサイドフレームワークのテンプレート上でフロントエンド開発ができる（Laravelのblade上でVue.jsを用いて受け取ったデータを元に画面を表示する みたいな事ができる）程度の技術力になりました。
ただバックエンド領域の知識や、APIを用いたフロントエンド実装などは引き続きちんぷんかんぷんでした。


### 1年目の学習で使った教材など
ほとんどまっさらな状態で入社したため基礎を固めることに注力しました。
ひとつひとつを深く学ぶ余裕はなかったので業務を進める上で困らない程度にある程度の速度感を持ってキャッチアップすることを大事にしました。

- Progate（Git）
gitは挫折するくらいならまずはこれで十分だと思います。
ひとまず初めての実務をこなす上での必要最低限は学べるのでさっとやりたい時に良いです。
（業務に慣れてきたら深掘りは必要ですが..!）

https://prog-8.com/courses/git

<br>

- [書籍] 改訂新版JavaScript本格入門　～モダンスタイルによる基礎から現場での応用まで
まずはフレームワークより先にプレーンのJSから学ぼうと言うことで、入門書として使いました。
難しすぎず、簡単過ぎずで挫折せずに最後まで学習を進められたので初学者にはピッタリでした！


https://wings.msn.to/index.php/-/A-03/978-4-7741-8411-1/

<br>

- [書籍] 基礎から学ぶVue.js
この本は当時の社内で10人くらいの人が持っていたと思いますw
こちらも難しすぎず、簡単過ぎずちょうどよかったです。

https://www.c-r.com/book/detail/1230

<br>

- [動画]【JS】ガチで学びたい人のためのJavaScriptメカニズム

JSを動画で学ぶ際はこちらの講座が網羅的で良かったです！

https://www.udemy.com/course/javascript-essence/

<br>

- [書籍] ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方

入社してから初めてターミナルというか、コマンドの存在を知ったので急いでこちらで学習しました
概念から学べる&ハンズオン形式でコマンドに慣れることができたのでよかったです。

https://www.kinokuniya.co.jp/f/dsg-08-EK-0340143

## 2年目
入社から1年ちょっと経ち業務にもweb開発にも慣れてきた頃です。
スタートアップ企業ということもあり人の入れ替わりが激しいために人手不足だったため、2年目にして初めて案件のフロントエンドの開発リーダーを担うことになりました。

この時に働いていた会社では、クライアントからお受けした案件に対し各ポジションのメンバー（フロント・サーバー・デザイナー・PMなど）がアサインされ一つのチームになるといった感じで、自分が任されたのはその中のフロントエンド数人のうちのリーダーです。

担当領域ごとの技術選定はリーダーに任されていたので、サーバーサイドのリーダーに相談しつつ初めてNuxt.jsを使ったSPAでの実装に挑戦することにしました。
当時社内でAPIでデータのやり取りをする実装のナレッジがあまりなかったので手探りではありましたが、なんとかリリースまで無事完了できました。

リリースまでには毎週土日いずれかは出社していたり、オフィスに泊まることもありましたが仲間と同じ目標に向かっている感覚があり楽しかったためこの時はあまり辛くは感じませんでした。


### 2年目の学習で使った教材など
2年目になり、言語やフレームワークの学習に加えて、綺麗なコードとは？変更しやすいコードとは？
みたいなことも考える必要が出てきました。

そのため体系的な学びに加えて世の中にはどんな設計技法があるのか、どういうコードは良くないかなどを主に学習していたと思います。

- 例えばこんな記事を読んだり...
  - [アプリの状態管理を安全に行うためのFluxとRedux](https://codezine.jp/article/detail/10751)
  - [MVCモデルとは！概念やそのメリットをわかりやすく解説！](https://www.geekly.co.jp/column/cat-technology/1911_040/)


<br>

- [動画] JavaScript エンジニアのための ハンズオンで学ぶTypeScript徹底入門
JSを卒業した買ったのでTSに入門したのですが、とっつきやすかったです。
動画学習した後は公式を読んだりで理解を深めました。

https://www.udemy.com/course/ts-for-js-developers/



## 3年目
3年目になると新卒や未経験中途の方のマネジメントを担当したり、業務の幅が広がっていました。
そのため技術のキャッチアップに加えて、良いチームとは？円滑にプロジェクトを進めるためには？といった視点も求められるようになりました。

ただ、自分はマネジメント領域も好きだったので上記のような動きをしていましたが
同時期に入社された方でも技術が大好き！といった感じの人達は高度な実装を主に担うみたいな方向で貢献をしていたので
歴を重ねると必ずマネジメントをするというわけではないとは思います。


### 3年目の学習で使った教材など
- [書籍] カイゼン・ジャーニー

https://kaizenjourney.jp/

<br>

- [書籍] SCRUM BOOT CAMP THE BOOK

https://www.shoeisha.co.jp/book/detail/9784798167282

<br>

- [書籍] 伝え方が9割

https://www.diamond.co.jp/book/9784478017210.html

# ZOZOに転職
## きっかけ
エンジニア歴も3年目になり、受託だけではなく事業会社での開発も経験してみたいという思いが芽生え始めていました。
受託開発だと実装 → 納品して終了 ということが多いためどうしてもUXやパフォーマンスの改善といった業務をしにくい側面があるからです。

そのため、自分の市場価値がどのくらいなのか確認がてら転職エージェント（レバテック）に登録してみることにしました。
その時にユーザーごとのレコメンド機能にチャレンジ求人というものがあり、そこにZOZOが掲載されていました。

元々美容業界に居たくらいなので、ファッションも好きでZOZOTOWNは学生の時からのヘビーユーザーでした。
（学生時代にツケ払いを使い過ぎて生活がカツカツになったこともありました...笑）

そのためチャレンジしてみるか！と応募した形です

## 入社してみて
自分が利用しているサービスに自分が書いたコードが反映されるという経験は初めてだったのでとても感動しました🥳
友人と話している時や美容室での雑談などでサービス名が出たり、twitterで検索すると使っている方の意見が見られたりというのもやりがいを感じるポイントになっています。

また技術者としては、歴の長いサービスに携わるのは初めてだったため、どのような経緯を経て仕様が決まっていったのか（今の仕様はどうしてこうなっているのか）や
古いコードと新しい技術を共存させるためにはどうすれば良いのかなど、始めての課題が多く前職とは違う頭を使っている感があり楽しいです。

前職と比較して感じた大きな違いは下記の通りです
- メリットが説明できればリプレイス・リファクタ等々にも前向きでしっかり工数がもらえる
- 受託企業の時ほど工数管理がシビアでない
- リリースすることが目標だったところから、リリースした先の効果だったりを目標にするという価値観の違い
- タスクや担当領域が細分化されている
- 実装上で慎重になることが増えた
  - バンドルサイズ（受託でも考慮する必要はあるが温度感が違う）
  - アクセシビリティ
  - SEO

などなど

前職ではクライアントの要望を正しく理解して、いかに納期までに効率的に実装をやりきるかという観点が強く求められていた感覚がありましたが、
現職では要望を正しく理解することに加え、改善の提案などの付加価値を強く求められている感覚があります。
これはリリースをすることで利益を生んでいるモデルとリリースした先が重要になるモデルの差だと思うので考えてみれば当然なのですが、実際に組織に所属してみて初めて理解できました。

この事で、受託と自社や、小さい組織と大きい組織などそれぞれで必要になるスキルや考え方が大きく違うと感じたので
（一方を知らない状態で）一方にスキルセットが偏りすぎないよう、また自分に合う合わないを知るという意味でもどちらも経験しておくのが良いと個人的には感じました。


# 最後に
長々と自分語り失礼しました🙇‍♂️
まだまだ半人前な上、入社がゴールではないので精進していこうと思います。

また、記載した内容の中で間違えている部分などありましたらご指摘位ただけますと幸いです。

最後までお読みいただきありがとうございました！！