目的はわかったけどどうしてこの変更で達成できるの?がわからない、文脈が抜け落ちている Diff というのがある。唐突な Diff、と呼ぼう。
唐突な Diff との戦いには二種類ある。
一つは自分が唐突な Diff を作らない、という戦いで、ちょっと込み入ったバグ修正など、変更する箇所は少ないがそのぶん意図がわかりづらくなる場合。自分はバグの原因を解明する過程で関連するコードを読み込んでいるので「流れ」を把握できているが、レビュアーが Diff そのものから全体像を思い描くのは難しい。リグレッションテストを追加してもやはり文脈なしでは説明不足だ。そういうときはコメントを丁寧に書き、場合によっては関連コードのリンクを添えつつステップを順に説明したりする。これにはそれなりに手間と時間がかかる。
もう一つは唐突な Diff に出会ったときちゃんと質問する、という戦いで、「なんだこれは?」と言いたくなるような変更をレビューする場合。そもそも全く意味がわからない、というのはまれで、だいたいは関連するイシューがあるので目的はわかるし、意図もまあそれなりには伝わってくることが多い。困るのは部分的に間違っていたり不完全だったりする場合で、単に「間違いだ」と指摘するだけではこちらの意図が伝わらないし喧嘩を売っているような感じになってしまってよくないので、根拠を示した上でコメントする必要があるし、場合によっては根拠の説明が込み入ったものになったり、なんらかのデータ(ベンチマーク結果とか)を添えることもある。これにもそれなりに手間と時間がかかる。
いずれのコメントも英語で書く必要があるので、意図がちゃんと伝わるように推敲したり、英語力不足で意図が伝わらないのを防ぐために関連コードへのリンクやデータの添付などの付録的な部分をより充実させたりして、さらに手間と時間がかかる。
こういうことをやってその結果、 Pull Request がスルーされてなかなかマージされなかったり(長文だから誰も読まないのか?)、指摘コメントを書いてる間にマージされたり(これは「ガッカリ」という音が聞こえるくらいがっかりする)、唐突な Diff との戦いに負けてるなぁと思うことが最近多い。
自分の感覚では「ひとより多少は読み書きどちらも時間をかけすぎているかもしれないが、このくらいは普通の範疇だし、コミュニケーションを丁寧にやることはよいことで、手抜きは許されない」と思っているのだけど、結果に結びついていないと、自分の仕事の仕方は間違っているのだろうか、と自信を失う。時間をかけて準備しても日の目をみなかったり注目されなければ何もしていないのと変わらないし、石ころ帽子なんてかぶっていないのに存在感が薄くなっていくような不安がある。
空 Description の Pull Request が無言 mention で催促されてはマージされていくのを尻目に自分の Pull Request の N days ago が増えていくのを見るのは悲しい。自分もその軍門に下ってしまおうかとも思うが、自分が良いと思っている価値観を捨てて、そうでないほうに合わせるのもおかしい気がする。
ごちゃごちゃ書いたけどもしかしたら単に仕事が遅くて使えない奴だっていうだけなのかもしれない。新人のうちにメンターに諭されておくべきようなことで今更悩むのは情けない。