公務員からエンジニアになって1年が経過。振り返ってみる

# この記事の概要

- 自己紹介
- エンジニアになるまでの経歴
- 技術スタック
- エンジニアになるまでとなってからのギャップ的なこと
- 自分の課題点
- 来年どうしたいか

ひたすら振り返りをしています。

# 自己紹介

2021年11月からフロントエンドエンジニアとして都内の自社開発企業に勤めています。

[はりぃ。](https://twitter.com/ryouharry) と申します。

年齢は29歳です。

はりぃは高校時代のあだ名です。

## 詳細な経歴

- 偏差値ギリ50あるかないかくらいの高校を卒業


- 1年浪人


- 偏差値50ないくらいの文系私立大学に入学

    - お察しのとおり、普通にバカです

- 大学卒業後、地元に戻って公務員として働く

- 公務員になって3年目くらいに転職を意識する

    - 「公務員は安定している」の根拠のなさに疑問を抱く

        - 人口が減っている => 税収も減るよね？増税じゃいずれ賄えなくなるよね？ => 給料減る可能性あるよね？ => 安定ってなに？

        - コロナで普通にボーナス減る => 安定ってなに？

        - 残業多い、急な呼び出し、土日は別に休みでもない => 安定ってなに？

    - 世の中のこと分からんからとりあえず本を読みまくる

- エンジニアという職業を知る

- Rubyの勉強を始める（基本独学）

- 残業えぐくて学習時間を確保できず、退職を決意（公務員5年目）

    - プログラミング学習を始めて概ね半年ほど経過後に退職

    - ちなみに月のMAX残業時間は150時間、このレベルは本気で立って寝れる。

    - こんな環境下でもプログラミング学習を継続していた自分は正気の沙汰でないと今でも思う。

- 退職後2ヶ月位でしょぼいポートフォリオを完成させる

    - Ruby on Railsで作成、モノレポ

    - CircleCIでCI部分のみ対応

    - EC2にデプロイ

- いざ転職活動

    - お祈りしか来ん。

    - あかん、一生無職かもしれん。

    - やっぱ、SPAのポートフォリオ作ろう

        - Reactを勉強する

        - Dockerでやってみよう

    - 貯金的にも1年は辛抱できるからそこまでは頑張ろうと意思を固める

- SPAのポートフォリオは完成しなかったけど、学習経過だけは発信していたおかげで何社かお誘い受けたり、お祈り以外のメールが届くようになる

- 2社面接して1社内定、1社は辞退

    - 謎に面接は得意だった。~~というか愛想笑いが得意だから第一印象を損ねにくい。~~

- 現在に至る


## 会社で使用している技術

- フロント
    - Vue.js
    - Next.js
- バックエンド
    - PHP
    - Ruby
- インフラ
    - k8s
    - kibana
    - openSearch

# 月単位で振り返る
## 入社~3ヶ月目

### 入社

今思えば、順調な滑り出しだったと思います。

Twitter等の情報媒体で入手した情報では、未経験からエンジニアに転職した人の年収は300万円台と聞いていました。

そのレベルの年収を覚悟していたから提示された年収みて「あれ、聞いてたのと違う」とはなりました。

まぁ前職に比べると大きく下がったことに変わりないので、生活はまぁまぁきつかったです。

最初はフル出社だったにも関わらず駅から歩いて30分のところに住んでしまい（てかそこしかまともなところがなかった）、通勤が億劫でした。


### 1ヶ月目

入社してから1ヶ月はひたすらバグ修正をしていました。正直しんどかったです。

未経験で学習していたのは、RubyとReact（Reactはほんとちょっとだけ。）でしたが、メインプロダクトがPHPとVueで作られているので、何書いてあるか本当に分からなかった。

毎日朝5時に起きては、Vue、JavaScript、PHPの勉強。

出勤時間も勉強、会社行って「。。。分からん。」って言って、帰りの電車も勉強しながら帰る、寝る。

寝る時間、飯食う時間以外ほとんど勉強してました。

### 2ヶ月目

バグ対応を繰り返しつつ、VueやPHPへの理解を深めていたので、なんとかコードは読めるようになったし、バグの対応も時間はかかるものの何とかやっていけるようになりました。

努力が実ったのか、シンプルに人が足りないからか、2ヶ月目にして開発案件にアサインされた。

まぁ圧倒的に後者が理由だと思いますが、ポジティブに捉えてました。

最初は基本設計のドキュメント作りからやりました。

もちろん、そんなことやったことないので、どうしたらいいかわかりません。

上司：「とりあえず他のドキュメントを参考に作ってみて。」
俺：「承知しました。」
俺：「すみません、一応できたんですけど、こんな感じですかね？」
上司：「あ、全然違う。これじゃなにを作りたいか分からない。仕様や要件から必要な機能を日本語で書き起こすイメージ。言葉で説明できないものは、絶対に実装できないよ。」
俺：「はい。（。。。日本語むず。）」

エンジニアに必要な最も基礎的な能力は「日本語で説明する、伝える力」だということを痛感しました。

## 3ヶ月目~6ヶ月目

### 3ヶ月目

アサインされた初開発案件の実装です。

ドキュメントを作成していたので実装はスムーズに行うことができました。

難易度としても低いものだったと思います。

フロント、バックを一貫して実装できたのでいい経験でした。

### 4ヶ月目

大きなプロジェクトにアサインされます。

リソースの都合上、仕方なくでした。

というのも自分が入社してから次々とつよつよエンジニアが退社してしまったからです。

ちょうどこの頃にで自分が採用された経緯について知りました。

自分が採用される前は、経験豊富で技術力も高いエンジニアが複数人いたため、未経験でもやる気や伸び代のある人を採用して育成することでリソースの拡大を図る方針だったそうです。

自分の入社は運とタイミングが良かったってことです。

ラッキーとしか思わんかったすね。

偶然とはいえ、与えられたチャンスを最大限に活かしてやろうと思いました。

## 5ヶ月目~9ヶ月目

アサインされたプロジェクトで設計を含めたドキュメントの作成、フロント、バックの実装をしてました。

合間でバグ修正の対応もしてました。

バックエンドの一部のAPIを切り出す作業を行ったりもしました。
このタスクを通して、kubernetesのマニフェスト作成、podのデプロイを経験できました。

## 9ヶ月目~12ヶ月目

### 9ヶ月目

初めての評価査定でした。

ありがたいことにいい評価をいただき、給料もかなり上がりました。

頑張って良かったなぁとしみじみ思いました。

### 10ヶ月目

アサインされていた大きなプロジェクトのリリース作業を行いました。


自分のテストの考慮漏れにより、リリース直前で致命的なバグが見つかってしまい、多くの人に迷惑をかけました。

この時にテストの重要性を理解しました。

あ、ちなみにリリースは何とかできましたが、とっても苦い経験となりました。

### 11ヶ月目

次のプロジェクトにアサインされました。

前回ミスってる分、かなり慎重に進めました。

要件定義、設計、実装、テストまで通しで経験できました。

### 12ヶ月目

ログにkubernetesのmeta情報が付与されなくなるバグの解消を行いました。

慣れないインフラのバグ探しは正直心折れそうでした。

最終的には、GitHubのissueと公式ドキュメントから答えを見つけ出し、バグの修正を行いました。

この時に英語の読解力は最低限必要だと思うようになりました。

それまでは、DeepLとか使えば必要なくね？とか思ってましたが、自分にもし英語を読み解く力がもっとあったならば、このバグはもっと早く解決していたと思います。

# エンジニアになる前の理想となってからの現実
## 理想

前職とは違い、残業することはほとんどなくなって、趣味を楽しんで、休日も充実させることができる。

きっと楽しい毎日を過ごすことができるはず。

## 現実

空いている時間は勉強していることが多いので、大して時間は増えてないように感じています。

違う点としては、それが特に苦ではないこと。勉強しているけど、知識が増えると何だか嬉しいし、仕事場で評価されるのも嬉しかった。

趣味は筋トレとかドライブだったけど、休みの日もカタカタとPCをいじる時間が増えて、疎遠になりました。

おかげで体重は1年で6kgほど増え、健康診断でもあまりよろしくない結果に。

毎日は本当に楽しかったですし、転職して本当に良かったと思っています。

# 現状の課題点

- オンとオフ、メリハリをつけた生活ができていない。
    - コアタイムなし、フルフレックス、リモートは楽でいいけど、しっかりメリハリをつけて仕事をしないと普通にだらける。
    - リモートの日は「どうせ終わっても家だし、もう少しやるか」が続いて、気づいたら残業してる
    - 休みの日も「休みだし」とか言って、ダラダラと学習する日が多かった

- 知識が浅く広く分布しているので、専門性がない。これと言って得意な技術がない。
    - 自分の希望でフロント、バック、インフラのタスクを満遍なくふってもらっていました。
    - おかげでWebアプリケーションの全体像を掴むことができたが、これと言って強い分野がないのは課題点

# 来年の目標

- オンとオフ、メリハリをつけた生活を送る
    - 勤務形態に関わらず、勤務時間を定着させる
        - リモートの日は9時~18時
            - 18時からはジムで筋トレ
            - 半年後に体重は-5kgを目標とする
        - 出勤日は10時~19時
    - リモートの日のダラダラ残業はしない
        - 必ず18時に終わらせて上がって筋トレする

    - 休みの日の学習時間は最大4時間までにしてメリハリをつける

- 専門性を高める
    - 満遍なくタスクを振ってもらったおかげで、自分の中で興味ある分野を見つけることができた。
    - インフラとフロントに対しては強い興味を持つことができたので、この分野の深掘りをする
        - フロント
            - Next.js
                - 仕事でも趣味でやっている個人ブログでも使用している。
                - 仕事で扱う機会は少ないが、個人ブログを通して積極的なアウトプットを図る
                    - 最低でも週に1回は記事発信する
            - TypeScript
                - これまた仕事で扱う機会は少ない
                - 個人ブログはTypeScriptを使っているので、積極的にいじりたい
                    - 最低でも週に3回はコミットする
        - インフラ
            - CloudFormationを使った開発
                - CloudFormationを使えば後片付けとか楽そうだから。
                    - 2月末までに最低限いじれるようにする
            - EKSへの理解促進
                - 仕事でも使っているし、コンテナアプリケーションの運用はすごい興味がある。
                    - EKS on EC2でのデプロイ
                    - EKS on EC2でのデプロイ（冗長構成）
                    - EKS on Fargateでのデプロイ
                    - EKS on Fargateでのデプロイ（冗長構成）
                    - CD環境の構築
                    - ログの可視化
                - 上記を10ヶ月間使ってじっくり勉強する
                    - インフラの基礎知識も抑えていく

# まとめ

社会人になってから一番楽しく、あっという間の一年でした。充実していた証拠かと。

転職して本当に良かったと思っています。

来年はさらに成長し、充実させたいです。

目標は周りに宣言することで自分を追い込んで達成するタイプなので宣言してみました。

以上、勝手な振り返りでした。