オンプレインフラエンジニアからWebエンジニアになるまで

## 概要
文系出身の元インフラ・ネットワークエンジニアが約1年間プログラミングを学び、Webエンジニアとしてキャリアチェンジするまでを書き連ねた記事です。

### 筆者について
[この記事](https://qiita.com/yyy_muu/items/eb89b5e2b9f2ff3fd238)でも記載したのですが、筆者のこれまでについてです。

文系大学を卒業後、新卒入社した会社(NW専門のSIer)で、NW商材(ルータ・スイッチなど)のセールスエンジニア業務を担当していました。

その後海外で働こうと思い退職したが、コロナ禍で渡航できず、日本でアルバイターをしていました。IT業界や技術を習得することが好きなことから、もう一度ネットワークエンジニアへ転職しました。その後約2年間、オンプレのサーバ・ネットワーク機器の構築・運用業務などを担当していました。

ネットワークエンジニアへ再転職後、次のステップとしては、場所・時間・お金の自由度が高いエンジニアとしてご飯を食べていきたいと考え、Webエンジニアを目指して勉強していました。

独学と[Happiness Chainというプログラミングスクール](https://happiness-chain.com/)での学習1年強を経て、2023年3月から自社開発企業にて業務委託のWebエンジニアとしてキャリアチェンジしました。

### きっかけと転身理由
- きっかけ
よく、なぜネットワークエンジニアからWebエンジニアに転身しようかと思ったのか？と理由を聞かれますが、具体的なきっかけは正直特になかったです。
ただ、ネットワークエンジニアの業務の中でアプリケーション層(SSL証明書関連の業務)の知識が求められる機会がありました。このタスクがきっかけで、業務知識を補おうと思い自己学習を始めました。ブラウザで動くアプリケーションの仕組みを知るため、業務外でも勉強をしようと考えるようになりました。

- 転身理由
学習当初、ProgateでHTML/CSS〜Ruby on Railsをやり、次にRailsチュートリアルをやっていました。
いつだったは覚えていませんが、学習を続けるうちに、普段触れることのないアプリケーション側の仕組みや自分の書いたコードが動くようになる点が面白いと感じました。
加えて、オンプレのインフラ・ネットワークエンジニアとしてこの先5年10年続けることは、人生設計と体力的に厳しいと思いWebエンジニアに転身しようと決めました。

### 学習方法と学習時間
独学で約5ヶ月、プログラミングスクールで約1年間の学習をしていました。
これまでの学習時間は、独学でたぶん300-400時間、スクールで約700時間だったので、累計1000時間くらいやっていたんですね。。。結構長かった。

1日あたりの学習時間は、平日2-3時間・休日4-8時間の学習時間を設けるように続けていました。
できるだけ毎日学習することを心がけていました。しかし、働きながらだったので、疲れて眠くて何も頭に入らん！という日には勉強しない時もありました。

### 学んだこと
#### 独学
- Progate/ドットインストール
  - HTML
  - CSS
  - JavaScript
  - 素のRuby
  - Ruby on Rails
  - SQL
- Railsチュートリアル1周（重めで全然終わらない＆難しかった印象。。。）

#### プログラミングスクール
基本的に、書籍やUdemyでのインプット後に、クリアが鬼難しい独自課題でアウトプットしていました。(色々やったなあ、お疲れ自分)

- [Web技術基礎](https://qiita.com/yyy_muu/items/0fa5293e099a0fe625ce)
- VimとLinux
- Git & GitHub
- Docker
- Ruby
- SQL
- REST
- Ruby on Rails
- 自動テスト(RSpec)
- JavaScript(Vanilla JS)
- React
- ReactとRailsでのSPA
- TypeScript
- Next.js (ここの学習途中で転職しました)

### プログラミングスクールを選んだ理由
独学での基礎学習は、これまでの経験から不明点を自分で潰すことでなんとかなりました。

しかし、その後ポートフォリオを作成して転職活動をすることを考えた時に、ソフトウェア開発のプロでない自分が、今後独学で勉強し続けるのは厳しいと思っていました。
そこでまずはメンターとなってくれる人を探そうと思っていた時に、たまたまTwitterで@yudai_on_railsさんをお見かけし、[Happiness Chain](https://happiness-chain.com/)の生徒としてご指導いただくようになりました。

### 数多あるプログラミングスクールの中でも、Happiness Chainにした理由
私の場合、他のスクールを検討していたのではなく、上記で書いた通りのご縁があり、プログラミングを教えてもらえる環境がたまたまプログラミングスクールでした。

ただ、@yudai_on_railsさんに教えてもらおうと思ったのは以下の理由からでした。
- 私と同様に文系出身
- 未経験からWebエンジニアに転身し当時の私の学習言語(Ruby, Rails)で実務をされている
- 直近でなりたい将来像を体現されている

Happiness Chainのロードマップは、メンターの方(当時は@yudai_on_railsさんだけだった)がこれまでやってみて良かった教材や課題内容があることと、現役のエンジニアからコードレビューしてもらえる点がいいなと思いました。特に、実際にWebエンジニアになるまでにやったことを真似すれば、一番効率が良さそうだなと思いました。

### Happiness Chainでの学習した所感
- 課題が難しく、時にPRを出せる兆しも見えず心が折れそうになる
  - わからないことしかなくて、ひたすらググって気づいたら次の日の朝になりかけた日もあった
  - そんな時、他のメンバーも同様に苦しんでいるので同志だと思えて頑張れる
- でも、上記の苦しみを経験しているので、鬼メンタルになった
  - 今後難しい課題に直面しても、できるまで努力を続けられる精神を養えた
  - 心が折れそうな時には、しっかり休むことも大事だと学んだ
- 卒業しても、コミュニティに参加し続けられるのと、ロードマップ（現在進行中で随時追加されている）を閲覧できるので、実務以外での学習環境や交流機会を得られて嬉しい

上記の所感を一言で言うと、Happiness Chainで学習を継続して本当に良かったなと思います！

## 終わりに
Happiness Chainでレビューをしてくださったメンターの皆様をはじめ、一緒に学習していた生徒の皆様には大変感謝しております！

おかげで現在は、Next.js(TypeScript, React), Expressを使用する自社開発企業で、ユーザーに価値あるサービスを作る環境で働くことができ、とても意義ある時間を過ごすことができています。

Webエンジニアへの転身は私の中で新たなステップとなり、ほぼ全てのタスクが未経験の内容なので難しさを感じることも多々ありますが、小さなタスクでも達成するとできることが増えたのだなと実感しています。
この選択を正解だと思えるように、引き続き無理せず頑張っていきたいなと思います！