見出し画像

エンジニアとしての2021年を振り返る

年の瀬ですね。
みんな2021年やったことを振り返ってるのを見ると、すごい濃いなーと感じるのと同時に自分も振り返ってみたくなり筆を取っている次第です。

基本的に自己満足100%の内容ですのであしからず。
ちょいちょい読んで良かった本とか紹介してますがそれ以外に有益な情報はないです。笑

どういう切り口で振り返ろうかと思ったんだけどシンプルに時系列順に振り返ることにする。

今年の年始に立てた目標の振り返り

各月の振り返り

全体の振り返り & 来年の目標

という感じの構成。

一応前提書いておくと現在でエンジニア歴1年8ヶ月。
エンジニアの1年目後半と2年目前半を振り返る感じになる。


年始に立てた目標の振り返り

年始に立てた目標は大体こんな感じだった。

・フロントエンド / バックエンドの軸足決める
・AtCorderで緑コーダーになる
・CSの基礎知識強化
・ブログを毎月1本は書く

1つずつざっと振り返る。

フロントエンド / バックエンドの軸足決める
当時はフロントとバックどっちもやる的なポジションでGoでバックエンドがメインだったけど、転職してReactメインのフロントエンドエンジニアになったからこれは達成できた。

AtCorderで緑コーダーになる
AtCorderは参加してもいないw
一応1月にアルゴリズム勉強した形跡はあったw
学びたいことがありすぎてどうしてもここは後回しになってしまうので、もうこれは目標に入れることを諦めるw

CSの基礎知識強化
CSをどう定義するかはさておき、基礎知識の強化はだいぶできたんじゃないだろうか。
特に自分でコンパイラやCPUを実装(CPUはエミュレーター上)したのはコンピュータがどういう風に処理を行っているかをソフトウェア、ハードウェアの両方の観点から学べたのでとても良かった。

ブログを毎月1本書く
ちゃんと毎月1本書いた!
なんならほとんどの月で2本以上書いてた
最後にも書くがこの効果は絶大だったと思うので来年もこの習慣は継続する

各月ごとの振り返り

1月

数ヶ月やってきた機能のリリース前でひたすらテストとバグ修正をやってた。機能が結構複雑だったのもあって、どれだけユニットテスト書いてもバグは出るもんなんだなーとか思いつつ周りの人と分担しながら修正しまくってた記憶。この時自分バグ修正得意だなと自覚。

社内勉強会では発表されたばっかのReact Server Componentsについて発表。実務ではGo使ってたけどプライベートではReact使っててこの頃から既にReactの方が楽しいなって思ってた。笑

2月

バックエンドのPHP → Goのリプレイス作業しながらSQLの発行回数減らしたりチューニングなどなど。30秒くらいかかってた処理が3秒くらいになってパフォーマンス向上が数値として現れたのはシンプルに気持ちよかったな。

あとはAWSのCode Pipeline使ってCI構築したりECSにデプロイするCD構築したりなど。
CI構築結構好き。その後副業とかでもよくやった。

3月

暗号化の実装してて、GoでエンコードしてPHPに処理返してデコードするみたいなことしてた。
バイト、ブロック、暗号利用モードとかどうすれば安全な暗号化になるかとか調べながらやってて普段やらないことでなかなか楽しかった。

そして半年くらいやってきたPHP → Goのリプレイスをやりきった…!

・カオスなPHPを読み解く練習になった
・テスト駆動でコードを書くいい練習になった
・パフォーマンス向上させられた
・言語、アーキテクチャ変更で実際の処理を変えないことの難しさを知れた

など個人的には非常に学びが多かったのでやって良かったなと思っている。

そしてプライベートで色々あり、3月上旬から猛烈な勢いで転職活動始めた。
Reactやりたい意欲強くてReact, TSで完全フルリモートの企業に絞る。
結果的に3月下旬に今の会社の内定もらって4月いっぱいで退職することを伝えた。
当時の会社がちょうどたまたま3月はフルリモートだったから業務後に面談組みまくってて、今振り返ってみてもここは怒涛の1ヶ月だった。笑

この時実務1年くらいで内定決まった後に転職ドラフト初めて参加。
1件だけだけど指名もらえてそこそこ金額も高かったので嬉しかった。

4月

本業は引き継ぎメインだった気がするけどあんま覚えてない。笑
Goで認証のミドルウェア実装してた気がする。
firebase使ってandroidへのプッシュ通知とかもやってた。

ReactやったりGoやったりAWSやったり、中途半端になった感はあったかもしれないが色々な方向に興味持ってる状態で色々触らせてもらえる機会があったのは恵まれてたし、ありがたかった。

本業以外では時間がたっぷりあるなーと思い色んな本読んでた。
有名だけど、「プログラムはなぜ動くのか」がとても面白かった。

5月

転職した会社で働き始める。
働いてるエンジニアがみんな経験年数結構あって、少数精鋭って感じのチームだなと思ってたのでワクワク7割、やってけるのかって不安3割って感じだった。
入社してすぐ開発チームがワーケーションで福岡に集まるとのことで福岡で合宿っぽいことをやってすごい楽しかった。
普通にみんな昼間っから飛行機で移動とかしてて、マジで会社のカルチャーの違いを感じた笑

Firebaseを使った開発がこれまでのサーバーがある開発と色々違ってその違いに慣れるまでにわりと苦労。

Firebase preview channel導入したりStorybookのデプロイ環境調べたりしてた。この頃、自分は開発環境整備的なところ好きなんだなーと自覚。

6月

入社後1ヶ月経ってようやく開発には慣れてきたもののまだまだレビューでの指摘が多かった時期。
細かい修正とかのチケットを消費する日々で大きめの機能開発とかはやってなかったから特筆すべき事項なし。

バリュー出せてるか心配だったが、PRは結構出していてエンジニア5年目だとしても素晴らしいパフォーマンスと言ってもらえたのはとても嬉しかった。

副業ではLambdaのコールドスタートに悩まされてた。
Provisioned Concurrencyとか設定して対応したけどなんかコレじゃない感…
この頃は運用してく中でLambdaのいいところだけじゃなくて不便なところもちょいちょい見えてきてそういう意味ではいい経験になったと思う。

プライベートではこの頃から和歌山にプチ移住した。
と思ったらワクチン接種で東京戻ったり。

色んな人と飲んだりできて楽しかった期間。

7月

ようやくレビューでの指摘が減ってきた。
振り返って思うけど、考慮が足りてなくて指摘もらってたことも多々あったが、チームのコーディングルール的なところがわかってなくて指摘もらってたことも結構あったなーという気もする。
これは新しい環境に行ってすぐはある程度は生じるものなんだろうなと覚悟している。

atomic designのあり方をチームで見直してコンポーネントの再設計とリファクタリングをした。
この時atomic designの難しさをちゃんと理解できた気がする。言語化して話し合ってみると人によって想像以上に認識がずれている。アーキテクチャ設計の文脈でも似たような経験あったし、人によって解釈が異なるものの認識を合わせるのは大変だなという学び。
リファクタリングしまくってた期間。なかなか楽しかった。

あとwebpackからviteへの移行をやった。
導入しようとしてもライブラリ対応してなかったりで色々エラー出るも全然情報がなく、この頃からちゃんとGitHubのissueを見る癖がついたと思う。
ビルド周り周辺のこととか深く知れたし開発体験も向上したしこれはいい経験になった。

あとこの頃読んだ「コンピュータの理論と実装」がめちゃくちゃよかった

技術書読むのはわりと早い方だと思うんだけど、これは実装課題がなかなかヘビーで読み切るまでに1.5ヶ月くらいかかった。笑
今年読んだ本の中で1番時間かかったけど1番良かった本かもしれない。
かなり難しかったけど学びが多かった。

最終的に0と1で情報を処理するコンピュータがどうやって成り立っているのか、CPUやメモリはどういう回路で構成されているのか、高水準のプログラミング言語はどうコンパイルされていくのかなどを実際に実装しながら学べてとても良かった。

実装課題が難しいが、やり切って本当に良かったと思う。

8月

Storybookをchromatic使ってデプロイするCD構築したりした。
あとライブラリのアップデートがしばらく行われてなかったのでまとめてアップデートした。

この頃から副業での開発をちゃんとやり始めた。
バックエンドから取ってきた座標データをもとに3D描画するみたいなやつ。
難しかったけどフロントエンド感あってなかなか楽しかった。
あとCIの構築とかもやったり。

この頃読んだ「Linuxのしくみ」がわかりやすくてとても良かった

9月

9月から新機能の開発を1人で任せてもらえた。
結構でかい機能開発で見積もりしたら12月いっぱいかかることに。
バッファ考慮して2月くらいまでかかる想定で開発を開始した。
大変そうではあるが、でかい機能開発を1人でできるのがめちゃくちゃ楽しそうでワクワクした。

それ以外だとライブラリを月一でアップデートするべく、Renovateを設定して運用を始めた。今の所いい感じに運用できてる気がする。
リリースノートとかちゃんと見てライブラリの中身を知るようになったのは思わぬ収穫。

10月

新機能開発がスケジュール通りに進行できていい感じのスタートを切れた。
この頃くらいからようやくTSで型パズル的なことがある程度柔軟にできるようになってきたなと思う。

あとRenovateでライブラリのアップデートしようとしたらテストが落ちててライブラリの仕様が意図せず変わってた的なことが起きてた。
issue発行して修正してもらう体験ができて、OSSコントリビュートというには程遠いかもしれないがとてもいい経験になった。
本当は自分でPR出したかったんだけど難しかった…これは来年の課題にする

11月

新規機能開発が山場を迎える。
最初に立てた見積りで2週間で組んでた新規登録周りがやり始めるとめちゃくちゃ重かった…
結果、2週間で合計7000行くらいのレビューをしてもらうことになってしまった…見積もりする時はレビュワーの負担も考慮すべしという学び。
が、なんとか山場は超えスケジュール巻き目で開発をほぼ終えられた。

そして11月から新たな副業先で開発させてもらってる。
久々にフロントとバックエンドがきっちり分かれてるクライアントとサーバーの構成で、Firebaseに慣れた身としては色々考えなきゃいけないこと多くて大変だなーと思いながら開発してる。笑
ただAPIリクエストをmockする方法とか試せていい機会になった。

あとは業務外でLT登壇させてもらったりした。
普段あんまりLT登壇するとかないんだけど、定期的にやりたいなーと思った。普段から早口全開だから、せめてああいう場では余裕を持った喋り方できるようになりたいと思っている。笑

オフラインで勉強会にも参加させてもらって、非常に楽しかった。
オフラインで会って交流みたいなの久しくしてなかったからいい刺激になったので今後も定期的に参加したい。

この頃読んだ「実践Firestore」がめっちゃわかりやすくて良かった。もっと早く読むべきだった。

12月

新機能開発は主要な部分は実装を終えて、1ヶ月ほどスケジュール前倒しで終えられたので、これはかなり自信ついた!
あとはQAと修正をひたすらやった。リリースブロックになるクリティカルなバグはなかったのでちゃんと予定通りリリースできそうで一安心。

あとは職場の人たちと仕事観について結構ぶっちゃけた話ができて、どうなったら転職するかとか日常的に他社とカジュアル面談してる話とかをみんなで腹割って話せたのはかなり良かったと思う。
今の職場は自分のやりたいこととか結構聞いてやらせてくれる環境なので本当にありがたい。

LTとしてCloudflare workersについてまとめた。
こういう発表の機会はちゃんと調べてアウトプットする機会なのでよき。

あと転職意欲は高くないけど、転職ドラフト参加してみた
・エンジニア転職後1年半でどれくらいの評価をもらえるか気になった
・どんなところが評価されるのか気になった
・どういう役割を任せてもらえるのか気になった
・開発裏話的なのを聞いてみたかった
などが理由。

結果としては2桁の指名をいただけて、指名時の最高金額が現職の2倍以上、平均が約700万円でかなり満足。

指名理由として共通していたのは
・技術ブログの内容の深さと継続性
・キャッチアップの速さ
・自走力

あたり。
これらは自分でも大事にしているものだったので非常に嬉しい。

何社かと面談させていただいたが、年収は1.5倍くらいになるものの働き方や開発的な面でやっぱり転職しようと思うところまでは行かなかった。
ただ副業として興味あるところはあり、現在選考中。

転職ドラフト本当いいサービスだなと思ってるので、今後転職や副業探しする際はメインで使うことになると思う。

1年全体の振り返り

1ヶ月ごとに振り返ってみて思ったけど、5月に転職して以降の方が明らかに濃い。笑
環境って大事だなと思うと同時に、そういう環境で開発できて本当にありがたいなと。

React, TSに関しての知識が深められたのと、ネットワークやコンピュータのしくみなどに関しての基礎知識を強化できたのは想像以上の成果を出せたのではなかろうか。

とは言え、知れば知るほど知らないことが泉のように出てくるので、エンドレスゲームを感じながらうれしい悲鳴をあげている。

ちなみに読んだ本の数は35冊だった(途中で挫折した本は除く)。
実務に関係ある本と関係ない本が半々くらい。

読んだだけで実践しなきゃ意味ないだろってのはその通りだと思うので、読んだものが全部血肉になっているかと言われたらNoである。
一応重要なものは簡単にまとめてあったりするので全く意味がないとは思ってないが、もう少しなんらかの形にしたりしてアウトプットすべきかなーというのは課題に感じている。

さて、改めてざっとまとめてみる。

・フロントエンドエンジニアに転職した
・PHP → Goのリプレイスやりきった
・開発環境整備的なことを色々やれた
・OSSでissue立てて修正してもらうことができた
・TSの型パズル力がかなり向上した
・1人で任された開発を予定スケジュールより早く終えられた
・本35冊読んだ
・CSの基礎知識を強化できた
・技術ブログ平均月2本ペースで書けた

仕事でやってきたことに関しては色んなことができたしやりきったし、振り返ってみてもかなり満足!!

転職前からReact触ってはいたけど、フロントエンドエンジニアになってまだ半年ちょいかと思うとかなり濃かったな。
まだまだやれることたくさんありそうで楽しみである。

来年の目標

仕事に関しては満足だが、業務以外での学びという意味では自信持って濃い1年だったかと言われたら正直即答はできない…

原因はやっぱ上述したようにインプットはそれなりにしてきたと思うものの、アウトプットが足りてなかったように思うのでそれができればもうちょっと自信持って言えるのかなと。

ということを踏まえて、来年の目標は主にアウトプットメインに。
そして簡単なテーマを決めた。
「使う側から作る側へ」

具体的にはこんな感じ

・ライブラリを何か作ってみる
・eslintのプラグインを何か作ってみる
・Chromeの拡張機能を何か作ってみる
・ラズベリーパイ使って何か作ってみる
・OSSコントリビュート(PR発行とマージ)
・技術ブログを月2本以上書く

作ることをテーマに掲げたのは、今まで使う側にいてその立場なりにライブラリの中身を覗いてみたりしてたけど、やっぱり作る側にしか見えない世界みたいなものがある気がしたからそれを見てみたくなった。
言い換えれば視座を高めたくなった。

あと技術ブログは今WordPress使ってるんだけど、何かを作る過程で技術を色々試すという点で言えば0から自分のブログを作るのはアリかもしれないなと思ってるのでそのうち移行するかもしれない。

OSSコントリビュートは純粋にやってみたい。
今度はissueじゃなく、自分で機能関連のPR発行してそれがマージされるところまで。
これもモチベーションとしては視座を高めたいからというのが大きい。

ブログは知識の定着と周囲から評価される材料になるなどいいことばかりだったのでぜひ続けたい習慣。
主目的ではないがブログを見て参考になったと言ってくれる人がいるのも嬉しい。
今年は月1本を掲げてたが、ほぼ毎月2本書いてたので来年も2本ずつ。

自分的にはちょっと高めの目標を設定したつもりなので頑張るぞっ…!!

というわけでお疲れ2021年の自分!
2022年は大きな飛躍ができますように。

ほぼ自己満な記事でしたが最後まで読んでいただきありがとうございます!

みなさん良いお年を。
来年も頑張りましょう!!

この記事が気に入ったらサポートをしてみませんか?