🔰
レビュアー初心者が最初に知っておく、レビューの参加方法
なぜ書こうと思ったか?
今参加しているプロダクトチームで、レビューに参加したことがないメンバーが2名ほどいます。
そのメンバーたちが、
- どんな感じでレビューに参加したらいいのか?
- approveとかコメントをしたらいいのか曖昧だ
という話をしていたので、自分が今まで色んな会社、プロダクトでレビュアー、レビュイーとしてやってきた中で、
最低限こんな感じでコメントできてりゃレビュー参加してると言えるでしょ💪
という部分をコメントしました。
あくまで初心者が参加しやすい、という点での観点です。
中級者、上級者になりたいという方は別の記事を探してみてください🙏
観点を知っておく目的
- レビューに参加しやすくするため
- 一定の視点でレビューチェックが通っている状態を目指したい
- 品質が担保されていることをみんなが保証できるようになるプロダクトになる!
- レビューを見るクセが付く
- 人のコードを見て学ぶクセをつけて成長角度を上げる
- 自分の実装外の機能の仕様も把握できるようになる
- 新しい機能を作るときの影響範囲を、感覚的に把握できるようになる
- レビュー外の仕事にも活きるぜ💪
- 新しい機能を作るときの影響範囲を、感覚的に把握できるようになる
どんな観点でレビューのコメントをしたらいいの?
動作確認をした感想のコメントもOK!
動作確認して、ちゃんとデータ保存されることを確認しました!
とか
動作確認して、ここの動きが気になったのですが、仕様通りでしょうか?👀
[キャプチャを貼ったりする]
- レビュイーからすると、動作確認してくれるのはありがたい!
- 動かしてみないと気づかない実装漏れもあったりするので、そういうバグの事前検知は、本番障害を防ぐ上でとても大事👍
typoがないかをチェックしよう!
updateNama → updateNameのtypoでしょうか?
- 細かいですが、こういうところがきれいになると、後で読む人の認知負荷が下がり、読むのが楽になります😀
自分が知ってる範囲で、リファクタできそうな処理がないか見てみよう!
const list = [1,2,3];
const test = [];
list.forEach((num)=>{
test.push(num);
});
↓
こんな感じでリファクタできそうですがいかがでしょうか?
const list = [1,2,3];
const test = list.map((num)=>num);
- 仮にその指摘が的外れでもOK!
- その時にはレビュイーが「〇〇の意図でこういった書き方にしています。」と教えてくれるはずなので、その視点もあるのか、という感じで勉強できたくらいの気持ちで捉えればいいです。
仕様と実装がずれていないか聞いてみよう!
minCompletedYear: searchForm.getValues("minCompletedYear")
&& Number(searchForm.getValues("minCompletedYear")),
↓
この実装だと、searchForm.getValues("minCompletedYear")が空文字だった場合に
number | null でなくなってしまうのでエラーになっちゃいませんか?👀
- 仮にその指摘が正しくなくてもOK!
- 理由は上のと一緒。
- 聞くことで、正しい仕様をすり合わせ、及び把握ができるようになるので、気になったらサクッと聞いてみましょう。
実装改善を指摘をしてあげる時は、逆撫でしないような伝え方で指摘してあげましょう🙏
const list = [1,2,3];
const test = [];
list.forEach((num)=>{
test.push(num);
});
↓
🙅♂️ こうじゃなくて、mapで書き直してください
🙅♂️ パフォーマンスとかを考えたらmap1択だと思いますが?
🙆♂️ mapのほうが行数少なくなって見やすくなると思います!👍
🙆♂️ forEach→mapに書き換えるとシンプルになると思います🙋♂️
そんな逆撫でしたコメントじゃないだろ!😡と思った方へ。
- テキストコミュニケーションは、あなたが書いてるときの表情とか感情は読み取れません。
- テキストは予想以上に冷たく見えます。そこにあなたの「そんなつもりはなかった」は伝わりません。
- 感情を伝えたいのであれば絵文字や顔文字、感嘆符(!)を積極的に使いましょう🎉
- ビジネスシーンだしきちっとした文章でないといけない??
- いえいえ、まずは「気持ちが正しく伝わる」のが大事です。
- 句読点のない文章は無表情、もしくはイライラしながら書いているように捉えられやすいことを認識しましょう。xの批判ツイートが無慈悲に見えるのと一緒です。
質問コメントOK!できればラベルを付けてあげたりするとより親切
const state = useState<"isSearching" | "onSubmit">("isSearching");
↓
[Q]
ここのisSearchingって、どういう状態のステートになりますか?
とか
質問です!ここのisSearchingって、どういう状態のステートになりますか?
- もしラベルがなかった場合、レビュイーがどう考えるか?
- あれ、これって直してほしいという含みを持ったコメント?
- ここのisSearchingって、どういう状態のステートになりますか?
- (心の声: isSearching名前はおかしいと思うんで直してほしいんだけど。)
- ここのisSearchingって、どういう状態のステートになりますか?
- それとも単純な質問?どっち?うわ、これ直さなかったらわかってねーなって思われる?
- あれ、これって直してほしいという含みを持ったコメント?
→ レビューの返信が遅れ、レビューが滞る原因に…
- ラベルがあった場合は?
- あ、単純に気になったとこか。もしくはこれがAって回答をしたときに追加で聞きたいこととかこうしてほしいって指摘があったりするのかな?
- とりあえず聞かれたことだけ答えとこう!
→ レビューのやり取りがスムーズになる👌
(補足)レビューコミュニケーションをより楽にするために。
ラベルを活用してみよう
[Q]、[質問] → 単純に質問したい
[IMO] → 自分はこう思うんだけどどうでしょう?
[FYI] → 確認したらこういうことだったので、(とか、こんな記事とかあったから)参考にしてください👍
[NITS] → 直しても直さなくてもいい。気になったのでコメントしたよ。
という形で、初めてレビューに参加するというメンバー、これまでふわっとレビューしてたなーという方は
参考になればと思います☺️
Discussion