伝わるコードレビュー【書評】
GWの課題として、先日購入した「伝わるコードレビュー」を読み終えましたので、書評を書いてみます。
書籍の概要
本書は、前半でコードレビューの中で発生しがちなコミュニケーショントラブルを具体的なシーンを交えて解説、解決のアプローチを提示、後半は実践的なTipsをまとめ、具体的にレビュワーとして、レビュイーとしてどのように考えて行動すべきかを解説をしています。
前半の事例紹介では実際に現場であるあるなシーンがばかりで、場合によっては「これは実際の人間であったら殺伐としてしまうな…」という事例もありますが、かわいいキャラクターによってそのあたりがオブラートに包まれるため、課題がスッと読めるようになっています。
後半のTipsでは、適切なコミュニケーションを行うためには、自分がレビュアーまたはレビュイーとしてとるべき行動が示されており、実際の仕事現場で違和感を感じたときに使えるコミュニケーションテクニックとなっています。
この本を読んだ目的
私は少し前に職場が変わり、コードレビューのない環境からコードレビューが当たり前の環境に代わりました。言ってしまえば、コードレビュー初心者です。そんな私がコードレビューをするうえで、伝え方に難しさを感じたり、この指摘はするべきなのか?今回のPRの本質とは異なる指摘だけれども今ここでするべきなのか?といった「コメントをすべきかそうではないのか」疑問を日々感じていました。「これは…気になるけど…問題ないからいいか…」のようなこともありましたし、「どうしても気になるから指摘をしたけど…別に今の書き方でも問題はないか…」ということもありました。ほかの人のレビューを見てコメントから「何を指摘しているのか」を自分なりに抽象化して、真似をしているつもりでしたが、自分の中に正解がないこともあり、ちゃんとレビューができているかの不安もずっとある状態でした。コードレビューをする上でコードレビューのまとまった学びをしたいと思って本書を手に取った次第です。
まなび
そもそものコードレビューで書くべきことは?
そもそも論として、自分のコードレビューでのコメントの考え方が少し違ったということが最も大きな学びであったようにおもいます。コードレビューにおける「コメント」は、「指摘」や「修正指示」と自分は考えがちでした。そうではなく、コメントはあくまで「コメント」なため、レビュイーにレビュアーの感じた疑問を書くもので、修正指示などでは決してないということでした。あくまでコミュニケーションの場であって、レビュアーとレビュイーのどちらが上でもどちらが下ということでもないというのはとても私にとっては大きな学びでした。
レビュアーとレビュイーのコミュニケーションの取り方
本書の本題はこのコミュニケーションを円滑に進めるための考え方やテクニックになります。自分が読みながら書いたメモをベースにすると次のような学びがありました。
- コードレビューではレビュアーもレビュイーも行間は読まない。
- コメントの意図がわからない場合、行間を読むのではなく意図を確認する
- ルールがあるなら、常に確認ができる場所に置く
- レビュイーのほうがPRに対して持っている情報量は多い。
- レビュアーが適切にPRをレビューするためには情報を整理する
- 特に確認してもらいたいこと(モヤっている個所、PRのコアな処理)を明確にする
- レビュアーとレビュイーの関係でとどまるのではなく、場合によってはほかの人、ほかの部署との調整が必要になることを忘れてはいけない
- わからないときは、わからないレベルも併せて伝える
行間を読まないというのは大切で、レビュアーからのコメントで「怒られているのでは…」というのはジュニアエンジニアだと比較的考えがちだとは思います。コメントに書かれていない意図を読もうとすると、レビュアーのコメントの意図とのズレが発生して建設的な議論にならなくなってしまいます。意図がわからなければ質問をすべきですし、レビュアーもコメントの背景や回答してもらいたいことを明確にして、誤解をされないようにコメントをする意識が必要になります。「そんなことも知らないの?」と思われてしまうかもしれない…と思うと、レビュアーのコメントの真意を聞くことをしづらくはなりますが、それこそコメントに書いていない行間を読むことなので、読み取れないのであれば自分の読み取りがあっているのかを確認したほうがより良いコミュニケーションとなります。
なお、明確に悪意のあるようなコメントをされた場合はスルー推奨です。
信頼関係の醸成
「行間を読まない」「わからないことはわからないと返す」といったことは、結局のところ信頼関係がなければ成り立たないコミュニケーションではあります。本書のコラムでは、そういった信頼関係を構築するためのエクササイズがいくつか紹介されていました。個人的に面白いなと思ったのが、社内で雑談OK、出入り自由の作業スペースを作るということでした。要はもくもく会のようなものというのが私の理解です。
結局のところ仕事上の信頼関係を構築するためには、各々のパーソナリティを知る必要があり、インフォーマルな関係性の構築がかえってフォーマルな関係も改善するというのはこれまで自分が読んできた書籍でもたびたび出てきていました。そのうえで、社内やチームでのもくもく会というのは、仕事に関する質問もその場でできる上に、プライベートな話もでき、集中して自分の作業をしたい人は退出すればよいだけなので、理にかなっているように思います。実際にそこまで効果が出るかは実践してみないことにはわからないのですが、どこかのタイミングでチームに提案をして実践を試みてもよいのかなとも思っています。
まとめ
「伝わるコードレビュー」は、コードレビューにおけるコミュニケーションの在り方を見直すきっかけを与えてくれる一冊でした。特に、コードレビューのコメントは「指摘」ではなく、あくまで「疑問の提示」であり、レビュアーとレビュイーは対等な立場で建設的な議論を行うべきであるという点は、私にとって大きな学びとなりました。
また、本書で紹介されている「行間を読まない」「意図が不明な場合は確認する」といったコミュニケーションの基本や、信頼関係を築くための具体的なアプローチは、日々の業務ですぐに実践できるものばかりです。
コードレビューに苦手意識を持っている方、チームのコミュニケーションをより円滑にしたいと考えている方にとって、本書は多くの気づきと具体的な行動指針を与えてくれるでしょう。また本書の実践的なTipsはコードレビューの文脈で紹介がされていますが、それらは社内の別部署や社外とのコミュニケーションにも十分通用するものであるとも感じています。コミュニケーションに難しさを感じているのであれば、どんな方でも読んでいて損のない本であるようにも感じました。私自身も、ここで得た学びを活かし、より良いコードレビュー文化をチームに根付かせていきたいと思います。興味を持たれた方は、ぜひ一度手に取ってみてください。
Discussion