心理的安全性を保つためのコードレビューの取り組み
Photo by Clarissa Watson on Unsplash
はじめに
心理的安全性とは対人関係においてリスクある行動を取ったときの結果に対する個人の認知の仕方のことです。
心理的安全性が保たれていることは、安心して発言・行動できる環境やチーム内での居心地の良さといった働く上で重要な要素に直結します。
昨今、リモートワークによりテキストベースでのコミュニケーションが多くなった影響か「心理的安全性」という言葉を耳にすることが増えたように思います。
私自身、テキストベースで円滑なコミュニケーションを取るにはどのような工夫をすると良いか常に試行錯誤していました。
特に心理的安全性を保つのが難しいと感じていたのがGithubを用いたコードレビューです。
理由としてはテキストベースでのコミュニケーションであり、基本的には相手の考えていることとは違う意見を伝える(相手のコードを指摘する)ことにあります。
そのため指摘する側もされる側も萎縮してしまい、十分なレビューが交わされないままリリースされてしまうということも少なくないのではないかと思います。
本記事ではコードレビューにおいてこのような事態を防ぎ心理的安全性を保つために私が行なった取り組みを簡単に紹介してみたいと思います。
コードレビューにおける心理的安全性
具体的な取り組みに入る前にどのような状態だと心理的安全性が保たれているのか考えてみました。
以下のような状態になっていれば心理的安全性が保たれ十分にレビューが交わせる環境と言えそうです。
- レビュアーが相手と相手のコードを尊重してレビューできていること。
- レビュイーがレビュアーの指摘に対して不健全な感情を抱かないこと。
- 技術レベルに関係なく誰もがレビューに参加できる環境(チーム全員が発言しやすい環境)になっていること。
今回はこれらの環境を実現するための取り組みとなっています。
もし他にも必要な要素があれば教えていただけると嬉しいです。
具体的な取り組み
感嘆符(!)や絵文字を使う
コードレビューだけでなくテキストベースのコミュニケーションにおいて共通して言えることですが、テキストベースでは感情が伝わりにくく、相手の受け取り方によってはネガティブな印象を与えてしまう可能性があります。
感嘆符や絵文字を文章の末尾につけることで相手の心理的安全に配慮しネガティブな印象を与えることを防ぎます。
※感嘆符や絵文字でのコミュニケーションが合わない人もいるため、その場合は相手にネガティブな印象を与えそうな表現がないか確認する必要があります
また、コードレビューでLGTMする際LGTMOONなどの画像を使うのもおすすめです。
相手のコードを尊重したレビューをする
当たり前のことですが相手のコードを頭ごなしに否定せず尊重したレビューをすることが大切です。
レビューするコードにもよりますが、そのコードの悪い点だけでなく良い点も合わせて書いたり、「〜が良いと思うのですがどうでしょうか?」といった感じで相手にも考える余地を残すようにすると心理的安全性を損ねることなくレビューができると思います。
質問や感想を言うだけでもOK
レビュアーはレビュイーに対してコードの指摘だけでなく、コードの中でわからない部分の質問や良いと感じた部分の感想を言うだけでもOKです。
こちらは技術レベルに関係なく誰でもレビューに参加できる環境づくりに寄与します。
例:
これってどういうライブラリなんですか?
この書き方良いですね!参考にさせていただきます。
コメントにラベルをつける
個人的に最も実践しやすく効果が大きいと思っているものが、レビュアーとレビュイーのコメントにラベルをつけるというものです。
ラベルをつけることで自分の意図を正しく相手に伝えることができ、お互いの認識の齟齬を減らすことができます。
またレビュアーにとって修正がマストではない指摘の場合、IMOやNISTなどのラベルを用い最終的な判断をレビュイーに委ねるようにすることで、レビュアーとレビュイーの対等な関係の構築にも寄与します。
使用できるラベルと実際の使用例は以下のようになります。
例:
[MUST]
データがnullの場合の処理がないので追加お願いします!
これだけでも十分効果は得られますが、私は毎回コメントにラベルを記述するのが少し面倒に感じたため、現在はレビューで使えるラベルでバッジを作成しgithubのSaved repliesに保存しておくことでいつでも呼び出せるようにしています。
私が普段使用しているテンプレートがこちらになります。
良さそうだなと思った方はぜひお試しください。
MUST(必須)
![MUST](https://shields.io/badge/review-MUST-red.svg)
IMO(提案)
![IMO](https://shields.io/badge/review-IMO-ff69b4.svg)
NITS(粗探し)
![NITS](https://shields.io/badge/review-NITS-green.svg)
ASK(質問)
![ASK](https://shields.io/badge/review-ASK-blue.svg)
COMMENT(感想やメモなど)
![COMMENT](https://shields.io/badge/review-COMMENT-purple.svg)
まとめ
拙い文章でしたがここまでお読みいただきありがとうございました。
コードレビューで心理的安全性を保つことはより良いチームを構築する上でも避けては通れない部分だと感じています。
今回紹介した取り組みがこの記事を読んでくださった方にとって少しでも参考になれば幸いです。