🔖

コードレビューでコメントタグを使い、心理的安全性を担保しよう

2023/06/23に公開

こんにちは。リンクウェル対面診療システムチーム、テックリードの山本です。
今回はコードレビュー時に開発部で実施しているコメントタグのご紹介です。
多分イケてる開発チームではすでに取り組んでいる試みだとは思いつつも、今回はなぜ必要なのかを改めて考えてみたいと思います。

GitHubのプルリクレビューについて

弊社のコードレビューではまず第一に「要求を満たすよう動くこと」が重視されます。その上で次のような点に注視しながら指摘を行います。

  • 外部サービスの特殊な挙動やセキュリティ機構などが考慮されているか。
  • 不具合が発生した時に検知できるようになっているか。
  • 将来的に修正しづらくなる構造になっていないか。
  • N+1問題などパフォーマンスに問題がないか。

その上でコメントを書く際に次のようにタグを付けて分類しています。

  • must: 絶対に直して欲しいとき。強い指摘になるので言葉遣いに気をつけるべき
  • imo:「自分ならこうする」「自分はこう思う」と伝えるとき
  • nits: 細かい指摘や、軽い修正をして欲しいとき
  • q: 質問。不明瞭な点やそもそも自分の知らないことを聞くとき

では、このタグ付けがレビューにどのように作用するかの説明の前に、「心理的安全性」について考えてみましょう。

心理的安全性

ここ数年、開発の現場で「心理的安全性」という言葉をよく聞くようになってきました。
「チームの心理的安全性」という概念を最初に提唱したのは、ハーバード大学で組織行動学を研究するエイミー エドモンソン氏と言われています。

https://www.youtube.com/watch?v=LhoLuui9gX8
▲同氏のTEDでの公演

同氏は公演の中で職場や軍において相手の高圧的な態度の元、押し黙り自分を納得させてしまう心理について説明しています。人間である限りこのような心理は仕方がないことだとは思われますが、優秀なチームはどんなアプローチでこの問題を克服しているのでしょうか。
公演の中にこんなエピソードがあります。病院でのミスの発生率を調査したところ、優秀なチームほどミスの報告が多かったそうです。優秀なチームに調査員を派遣したところ、チームメンバーは自分のミスを認め、ミスを改善するために積極的に発言していることが分かりました。同氏はこれを心理的安全性と名付けました。心理的安全性を担保するためには次の3つが必要と解いています。

  1. 発言できる環境を作る
  2. 自分がミスをしている可能性を認める
  3. 好奇心を持つ

Googleの組織としての働き方の事例を集めたre:Workでも同氏のエピソードは紹介されており「心理的安全性」はチームの効果性に影響する因子の最重要項目として捉えられています。
https://rework.withgoogle.com/jp/guides/understanding-team-effectiveness/#identify-dynamics-of-effective-teams

コメントタグで心理的安全性を担保する

さて、心理的安全性を担保する重要項目について、コメントのタグがどのように作用するのか詳細に解説します。

  1. 発言できる環境を作る
    コメントタグをつけることで、「自分はこのような気持ちで指摘している」という意志を表明できます。たとえば[nits]タグを付けることでコーディング規約に沿ったコード(適切なメソッド名・インデント・コメントの追加)を指摘するハードルを下げ、建設的な意見交換ができます。
  2. 自分がミスをしている可能性を認める
    たとえば[must]タグは他のタグと比較し非常に強い意志表明となります。当然反論が返ってくることもありますが、そこから議論が進みレビュアー自身の認識のズレに気づくこともあります。自らのミスを恐れるあまり、本来指摘するべき箇所を取り逃がしてしまう自体を防ぐことができます。
  3. 好奇心を持つ
    反論を恐れ自分を守るあまり、他人に対して無関心になってしまう事はよくあります。[imo]や[q]を使い、自分なりのコーディングや、コードに潜むバックグラウンドを聞くことで、仕様について理解を深めることができます。

まとめ

コメントタグを付けることがコードの品質を上げるだけではなく、実装しようとしている仕様の理解に役立つことが分かりました。また、心理的安全性を高め、誰もが建設的な意見交換ができる場を作ることができます。
もし、あなたのプロジェクトでコメントタグがまだ導入されていないのであれば、なぜタグが必要なのかメンバーで話し合った上で導入を検討してみましょう。

Linc'well, inc.

Discussion