hiragramhiragram

「コードレビューは優しい言葉遣いでするとよい」は嘘

2024-11-22


この本を読んだ。

Amazon.co.jp: スーパーエンジニアへの道 技術リーダーシップの人間学 電子書籍: G.M.ワインバーグ, 木村 泉: Kindleストア

ゆるコンピュータ科学ラジオというポッドキャスト番組を普段から聞いていて、そこで紹介されていた本だ。

この本は訳書で、日本語版は1991年に初版が出版された。30年以上が経っていながらその内容は今も色褪せないと評判で楽しみにしていた。

……が、正直私には合わなかった。訳書という性質からなのか、30年前の文章だからなのかはわからないが、とにかく読んで理解する負荷が高かった。多分本来書かれていることの半分も頭に入っていないだろう。

それでも私が従前抱えていた疑問が少し晴れた部分があったので、その点について書く。

悪い体臭を放つエンジニア

第15章「力、不完全性、整合性」にて、次のようなエピソードが記されている。

ある若いプログラマがひどいにおいを発散していて、まわりの連中が彼といっしょに働くのをいやがった

「あなたのグループの人たちの中に、あなたの近くで働いているとあなたの身体から発散するにおいのために気分が悪くなる、といってきた人が何人もいます。私たちはあなたの仕事ぶりを高く評価していますが、もしほかの人たちがあなたといっしょに働けないのだとしたら、明らかにわれわれのグループは生産的ではあり得ません。この問題を解決するために、何ができるでしょうか。」といってやりさえすればよい。

なぜマネージャーはそうしないのだろう?

なぜ仲間のプログラマの方がそうするのではないのだろう?

引用元: G.M.ワインバーグ. スーパーエンジニアへの道 技術リーダーシップの人間学. 共立出版株式会社. Kindle 版. (以降同じ)

このエピソードに登場するラルフというエンジニアは革細工が趣味で、それで使う薬品が身体に染み付いており、周囲にとって悪いニオイを発していたのだった。ラルフ自身はその香りに馴染みがあったために、それに気づかなかった。ラルフのマネージャーは、著者の助言をうけて、ラルフに周囲の状況を率直に伝え改善を求めた。するとラルフはマネージャーに感謝し、医者に薬品による皮膚の悪いニオイを改善する薬を処方してもらい、問題は解決された。

著者はこれを

これほど機械的な解決法はない、というぐらい機械的な解決法であった。

と評している。

この一連のエピソードについて私が思ったことを整理する。

率直に指摘できないのは、その者を未熟とみなしていることと同じ

著者はこの出来事について次のように書いた。

  • マネージャーやチームメイトがラルフが発するニオイについて本人に率直に指摘するのを躊躇う理由は、それによってラルフがカッと怒ったり、深く落ち込んでしまったときに、それに対する責任を負えないと考えるから
  • しかし、結果的に、ラルフは指摘を受け入れ、その解決策を獲得してみせた。ラルフは周囲からの合理的な指摘に対して怒りや落ち込みといった反応を示さずに自分の行動を変えられる成熟した精神と高い自尊心を持ち合わせていた

つまり、自分の技術に自身をもって自尊心高く仕事をしている人は1個の大人として精神的に成熟しており、逆に周囲が「この人はこの指摘をされたら怒ったり悲しんだりするだろう」と仮定することはすなわち「この人は精神的にまだ未熟なのだろう」と暗に考えているのと同じである、ということ。

率直に指摘をするとき、その状況を自分に当てはめて想像してしまう

著者は次のようにも書いた。

  • ラルフに率直な指摘をすることを躊躇うのは、その指摘を受けることを自分自身に当てはめて想像してしまうから
  • でもよく考えて。自分がもし高い自尊心を持って仕事に取り組んでいたら、その指摘に感謝し、自覚がなかったことを申し訳なく思い、なにか改善の手を打てるだろう。自分に当てはめて怒りや悲しみを想起するのは、自分が1個の大人として成熟していないからだ。

つまり、「相手がこういう反応をするかもしれない」という想像がどこから来るかというと、「自分だったらそういう反応をするはずだ」という自己認識から来る、ということ。そして自分の自尊心が高いことは、相手がそれだけ成熟していると信じられることに繋がり、率直なコミュニケーションを円滑に打ち合うことを実現する。

ちなみにこの本の中では、もしラルフが率直な指摘を受けてカッと怒るような未熟なプログラマであったとしたら、それは単にラルフが未熟なことが問題であって、マネージャーやチームメイトの問題ではないとされている(個人的にはマネージャーは部下の成熟にコミットしてほしい気はする)。

「コードレビューは優しい言葉で」に当てはめる

「良いコードレビューとは」、みたいな文脈で敬語がどうだとか言葉遣いがどうだとか語られることがある。果ては「ビックリマークをつけましょう!」とか「絵文字を使いましょう😄」とか言い出す始末(私は正直くだらんと思っている)。

ラルフの例をコードレビューに当てはめて考えてみる。自身の知識不足からコードに明らかな技術的間違いがあることを率直に指摘されたとき、成熟した大人のエンジニアであればそれを新たな知識獲得の機会と捉えてより良いコードを書くことができるが、精神的に未熟なエンジニアであれば指摘してきた人を怖いと感じたり自分の知識すべてについて自信をなくしたりするだろう。他者のコードに明らかな技術的間違いを見つけたとき、成熟した大人のエンジニアであれば相手にも同じく成熟した大人であることを信じて率直な指摘ができるが、精神的に未熟なエンジニアであれば相手が気を悪くすると思って本来伝えたいニュアンスからねじ曲がったコメントを書いてしまうだろう。

もっともっと雑で乱暴な言語化をすると、「 同僚のことを、技術をもって1人のプロとして自尊心高く働いている大人のエンジニアであると信じてあげて」みたいな。

一番まずいのは情報がねじ曲がってしまうこと

単に語尾がどうとかいう話ならまだいいが、相手の未熟さに遭遇しないためにふわふわの優しい言葉で包むみたいなことをやりすぎていると、深刻度や緊急度が誤って伝わることに繋がる。

「パスワードを平文で保存するのはダメです、ハッシュ関数を通してください」であって、「パスワードを平文で保存すると良くない気がするのでハッシュ関数を通したほうが個人的にはいいかもです」であるべきではない。これでは相手を未熟とみなした挙げ句指摘の深刻度も軽いものとして扱われる、悲惨な結果につながる。

自分の意見に自身を持ってときには断定的に物を言えるのもまた、自分への自信と自尊心があることのあらわれでもあるだろう。

次にまずいのは歪んだコミュニケーションが定着して当たり前になること

「Aにしてください」ではなく「Aのほうが良いと思うんですが、どうですか?」のような優しい言葉遣いにしましょう、みたいなコードレビューポリシーが跋扈している環境では、純粋に意見を求めようとして「Bも良さそうなんだけどどうですか?」と聞いたはずが、受け取り側は「Bにしてくださいという指示を受けた」という認知になり逆転現象が起こる。

非難していいわけではない

この本の中で、成熟した人間の行動パターンとしていくつか挙げられている中に、次のようなものがある。

人や状況を扱うときは、それぞれの文脈の中で、それがどうあってほしいかとか、どうあるはずであるかとかではなく、むしろどうあるかに目を留めて扱う。

ラルフの例なら、目を留めるべきは「ラルフから悪いニオイがして、周囲のメンバーが困っていること」であり、それが趣味によるものであることや本人に自覚がなかったことなどを咎める必要はないということ。コードレビューの例なら、そのコードの間違いに目を留めればよく、その背景にある知識不足や確認不足を咎める必要はない(もちろん、それら自体が深刻な問題であるなら咎められるべきだが)。


関連

技術リーダーに必要な、たったひとつの能力。#147 - ゆるコンピュータ科学ラジオ

Post