はじめに
この記事は バイセルテクノロジーズ Advent Calendar 2024 の16日目の記事です。
昨日は金澤さんによる新卒・インターン生向けカリキュラムで開発するアプリのサンプルを作る際の技術選定でした。
こんにちは!テクノロジー戦略本部 開発2部 Stock チームでバックエンドエンジニアをしている、25卒インターンの大石(umaidashi18)です。
Stock は、リユースプラットフォーム「Cosmos」の在庫管理アプリケーションです。
2024年2月から、バイセルの内定者インターンに参加しており、約10ヶ月が経過しました。
若手のエンジニアにとって、コードレビューというと「レビューされる側」というイメージが強く、レビューをする側に回るのはハードルが高いと感じる方も多いのではないでしょうか。しかし、私の経験から、若手のうちから積極的にレビューに参加することには大きな価値があると実感しています。
今回は、インターン生という立場でありながら、積極的にコードレビューに参加することで得られた成長体験についてお話しします。真似できることも多いと思うので、参考にしていただけると幸いです。
対象読者
本記事は以下のようなエンジニアを対象にしています。
- レビューに苦手意識がある、もしくはまだ参加していない若手エンジニア
- そのようなエンジニアのメンターや、同じチームの人
また、上記の他にもプロジェクトに新しくジョインした人も「キャッチアップ」という観点で役に立つかもしれません。
内定者インターンの業務内容
内定者インターンでは、主に以下の業務に取り組んでいます。
- すでに Stock を導入しているグループ会社向けのサービスの運用業務
- 次に導入する際に必要な新規機能の設計・開発業務
レビューに参加する前後での変化
インターンを開始して、最初の2ヶ月
インターン開始当初、私はほぼレビュー未経験でした。それまでの開発経験でも、常に自分がレビューされる側で、レビューをする経験はほとんどありませんでした。
チームには自分より経験も実力もある方ばかりで、レビューすることへの心理的ハードルは非常に高かったです。
また、StockはGo言語で開発していますが、私にはほとんど経験がなく、アーキテクチャの理解やコードの品質についての知識も乏しい状態でした。
そのため、最初の PR を出してもマージまでに1ヶ月以上かかり、大量のレビューコメントが付いていたのを覚えています。
そんな私でも、レビューに積極的に参加し始めてからは、次のような変化を実感できました。
レビューに積極的に参加してからの変化
- コードレビューを通じてチームの一員としての責任と役割を感じられるようになり(自己有用感の向上)、プロダクト開発へのオーナーシップが強まった
- プロダクトのコードに触れる機会が増え、実装のキャッチアップスピードが上がった
- セルフレビューを通じて、自分のコードを説明する力が付き、コードの理解力・読解力が向上した
さらに、実利的な面では以下のような成果がありました。
- プロダクトの設計への理解が深まり、自分の担当機能の設計に関するレビュー指摘が減少した
- 新規にプロジェクトに参画したメンバーへ、開発方針や設計の説明ができるようになった
- 問題発生時に、エラーの原因箇所を特定しやすくなった
- 担当外の機能についても理解が深まった
やったこと
私がレビューに参加してきた中で、自分の成長に寄与したと考えられることを3つ取り上げます。
レビュー観点を限定したレビュー
若手がレビューに苦手意識を持つ理由の一つとして、「先輩の方がコード書けるのに、私なんかが指摘できる場所なんてない」と思い込んでしまうというものがあると思います。私もそうでした。
しかし、人間であればベテランでも誰でもミスをします。そのミスの中には、私のような若手のエンジニアでも指摘できる小さなミスがありました。それはタイプミスです。
例えば、様々な都合で構文チェックされていない生 SQL 文などでは、1文字のタイプミスが大きな障害につながる可能性もあります。
レビューに自信がなかった私でも、タイプミスの確認のようにレビュー観点を1つに限定するとレビューのハードルを大きく下げることができました。
先輩のレビューをマネする
もし自分はなにもコメントをつけられなかったとしても、チームの先輩がレビューしている様子は見ることができました。その中で、自分にも指摘できそうなレビュー観点があったので真似してみることにしました。
Stock のバックエンドは Go 言語で書いているのですが、 Go 言語では書き方を間違えると nil 参照の実行時エラー(通称「ぬるぽ」)が発生します。
実際に、先輩がこの nil 参照エラーについてレビューしているのを発見し、それから新しいレビュー観点として加えていきました。また、レビュー観点を知ることで自分がコードを書く際にも気を付けられるようになりました。
このように、先輩のレビューを真似することで、限定したレビュー観点の中に新しいレパートリーを増やすことができました。
セルフレビューを行う
自分が出した PR について、自分でレビューをすることでレビューの練習をしつつ、先輩が確認しているレビュー観点を復習していました。
この際、「先輩だったらなんてコメントするだろう」と考えるようにすると非常に効果的です。
また、なぜそのようなコードを書いたのか、自分の考えや設計・実装に関する解釈をメモとしてコメントしておくことで、レビューしてもらう際に答え合わせをすることもできました。
最後に同じ若手へレビューのススメ
大前提として、「あなたのレビューを拒む人はいない!!」(はず、私は拒まれなかった)です!レビューはすればするほどよいと思っています。
すべてを理解してすべてをレビューできないといけないなんてことはないです!自信なかったら Approve せずにコメントするだけでも問題ないと思います!
レビューの機会は自分がコードを書くよりたくさんあるはずです!チャンスを逃さずに、ぜひ成長の機会にしましょう!
レビューに参加することでチームの一員としての自己有用感が得られ、モチベーションの向上に繋がります!
まとめ
私のこれまでのインターン体験を振り返りながら、レビューに積極的に参加する方法と得られる価値について触れてきました。
すでに本に書いてあるような当たり前のこともたくさん書きましたが、レビューについて再度認識を改めてもらい、私のような若手のエンジニアにとってのレビューのハードルを下げ、成長機会に繋げられたらと思っています。
最後に、バイセルではエンジニアを募集しています。少しでも気になった方はぜひご応募お待ちしています。
明日のバイセルテクノロジーズ Advent Calendar 2024 は前原さんの「SSE製品のPoCをした話」です。そちらもぜひ併せて読んでみてください!