![見出し画像](https://assets.st-note.com/production/uploads/images/121545135/rectangle_large_type_2_7f486741767da6a2d0710b90ad7c75ed.png?width=800)
エンジニアになって半年経ったので簡単に振り返る
先日書いた「エンジニアになってからの3ヶ月を振り返る」を多くの方が読んでくださり、反応いただけたこと、ありがとうございました!
2023年5月10日にエンジニアになって早くも半年経ったので、一つの記録として簡単にこの半年(4, 5, 6ヶ月目)の振り返りをつらつらと書いていきます。
所々、誤字脱字があるかもしれませんが、ご容赦ください。そして、指摘点があればコメントか何かで教えていただけますと幸いです。
4ヶ月目
4ヶ月目は引き続き開発をゴリゴリと進めることは当然のこと、新しく24新卒エンジニアのメンターをさせていただくことになりました。
開発ではRailsのDelegated Typeという機能を初めて使用したのですが、頭が混乱してしまい理解するまでに少し時間がかかってしまった印象がありました。
先輩に「ここがよく分からないです、ここまでは理解できているんですが、、」とヘルプを出してからは頭がかなりクリアになり、そこから実装もスムーズに進むようになりました。
口に出して説明してみることで「自分がどこまで理解できているのか」を整理せざるを得ない状況になります。
そしてそれを話しているうちに「あ、ここ考えられてなかったかも?」という観点が見つかることもあるので、「壁打ち」という言葉が正しいかは分かりませんが、それも含めて先輩にヘルプを出すのは非常に効果があるなと感じました。
一方でこれまでの3ヶ月間で成長できていた感覚があったことで、自分を過信してしまい、「もう少し考えたり調べたら実装方法が見えるはず」と思ってしまうことがあったのも事実です。
結果としてヘルプを出すまでに少し時間がかかってしまったのは反省点でした。
初心忘れるべからず。
15分ほど迷ったら言語化して迷いを書き出すこと、それによって頭を整理することが重要だなと学んだ月でした。
24新卒エンジニアのメンターに関しては、実際に自身がこれまで先輩方に教えていただいた考え方や実装方法を抽象化して伝えることを意識して行なっていました。
実際に進めていく中で、以下を具体性と共に伝えることは本当に難しいなと初めて感じました。
自分だったらどのような実装方法をするか?
他にどのような実装方法の選択肢があるか?
その中でもなぜそのような実装方法にするのか?
「メンターをやる側の方が実は成長する」という言葉を先輩エンジニアから言っていただいていましたが、まさにその通りでした。
5ヶ月目
4ヶ月目にRailsのDelegated Typeでかなり苦しんだと書いたと思いますが、復習を行い、慣れることができたおかげで、かなりサクサク実装が行えるようになりました。
そして各issueの実装を進めていく中で悩んだ際には、PdMと機能面やビジネス上の制約等のすり合わせを改めて行った上で実装するなどの動きを無意識的にできるようになり始めたのもこのタイミングです。
例えばフロント側の細かな修正があった際、PdMと「どのように見せたいか?」「そうした場合、このようになる可能性もあるがそれでも問題ないか?」などをすり合わせながら実装を進めることができたのは良かった点でした。
一方、実装を進めていく中で実装方法(How)を考えすぎてしまい、途中でその機能の目的を見失いかけていた自覚があったので、そこは反省点だったなと思います。
Howに固執せず、本来の目的を常に意識して行動できるような目的思考を持たないといけないなと感じた月でした。
また、このタイミングから過去にレビューで指摘いただいた観点を網羅しようと思い、自身の中である程度汎用的になるよう抽象化してまとめ始めました。
実際に自分が実装を行なった後のセルフレビュー時や、他エンジニアのPRをレビューする際にもチェックリストのように使うことができたので、やって良かったなと思っていることの一つです。
6ヶ月目
チームの開発スピードをこれまでの2倍早くし、顧客への価値提供を最速で行うという目標を掲げて動き出した1ヶ月でした。
「これまでの2倍早く行う」と考えると『そんなの出来るわけないじゃんw』など聞こえてきそうですがw、当然かなり負荷はかかりつつも楽しむことができたと思っています。
時間を投下するのはもちろんですが、その中でもどのようにしたらスムーズに進められるのかを考えると、以下2つが考えられました。
過去に同様の実装をしたことがあればそこは過去の実装を参考に行う
まず最初にそのissue内で不確実性の高い箇所を見極めて潰す
これらを意識的に行うことで、後になって詰まることや手戻りが発生することを防げたので、とても良い収穫でした。
一方で、「比較的大きそうだな」と感じたissueがあった際に、それらを小さなissueへと分解せず、一気に進めてしまったことがありました。
一気に進めようとしてしまったことで考慮すべき点がかなり大きくなってしまい、無駄に脳内メモリを消費してしまった感覚があったので、その点は反省しています。
また、enumやGraphQLのtypeなど、共通で使うものがあると分かったタイミングで先にその実装を終わらせるようにする戦略を取る方が良かったなとも感じています。
今回は必要になったタイミングで定義するようにしていたので「このenumってどんなステータスがあったっけ?」「このtypeって何が必要だったっけ、型はなんだったっけ?」などなど、都度考える必要があったのが辛く、ここを改善すれば全体の開発スピードはもっと上がるのだろうな、と振り返って思っていました。
どちらも個人的に非常に大きな学びでした。
そしてこの6ヶ月目は25新卒エンジニア2daysインターンのメンターを担当させていただきました。
詳細は割愛しますが、ソフトウェア開発・設計の考え方において重要なことを多く学べたと思っています。(DB設計本当難しいw)
そのアウトプットとして以下記事を書いたのですが、メンターをやるって本当に沢山の学びがあるなと改めて感じました。
最後に
めっちゃざっくりでしたがw
ここまで読んでくださりありがとうございました!
「もうエンジニアになって半年経つのか、、、」と驚きが強いですが、毎日必死に食らいつきながら、楽しく過ごしています。
最初は全く読めなかったコードも、今では多少時間がかかるとは言えど、読めるようになってきていることに最近感動しました。
その時に「あ、自分って成長できているんだな」と感じられました。
おそらく自分が想像している以上に成長できているのだろうなと思っています。
そう感じられること、そんな素敵な環境にいられること、応援してくださる方が周りにいることに本当に感謝しないといけないなと感じた半年間です。
ただ、、まだまだ分からないことも沢山あるし、もっともっと色々なことにチャレンジせねば!と思っているので、ここからまたギアを上げて走って行きたいと思います!(一緒に頑張りましょう!)
ちょっと長くなってしまいましたが、ここまで読んでくださりありがとうございました!
またいつかお会いしましょう!
この記事が気に入ったらサポートをしてみませんか?