レビューする側に必要なのは見た経験である。
いいもの悪いもの。
普通なもの普通ではないもの。
簡単なもの複雑なもの。
具体的なもの抽象的なもの。
そういった区別なく、とにかくたくさん見たことがなければならない。
それらに差があることを認識できなければならない。
その差が何かを言葉にできなけれならない。
今見ているものが今まで見てきたものの中でどのレベルに位置するものなのかを推定できなければならない。
そうでなければレビュワーは務まらないと私は思う。
以下はコードレビューに話を絞る。
レビューでは大抵二つあるいは三つのことを行う。
1.規約やルールに沿っているかの確認。
2.仕様どおりに実装されているかの確認。
3.良いところ、悪いところの分析や品評会。
1.は機械的にできるし、そうだからこそ誰にでもできるレベルの低いレビューだ。
これはレビューイが責任もって対応すべきレベルのものでもある。
2.は私も昔は重視していたが、今はそうでもない。
むしろ前提条件なしにレビューするべきなのでは、と思わないでもない。
なぜなら前提条件なしで読んで意味がわからないものは、実際に碌なものではない。
それに仕様どおりかそうでないかは、どうせ続けて行うテストで判明するからだ。
また仕様を把握・理解するのに時間がかかってしまい、未レビューが溜まっていく。
3.は機械にも一応できるのだが、文脈依存もするし過去からの経緯も混ざってくるのでなかなかに容易ではない。
しかしレビュワー・レビューイ共に成長できるのはこの手のレビューである。
とは言え、実際は1.と2.に埋め尽くされ消耗してしまうのであって、私の経験からすれば、3.のレベルのレビューができているプロジェクトは少ないように感じられる。
それに規約やルール以上の信念や美学、プロ意識のようなものが必要になっても来る。
目の前にある作業を片付けるという意識で取り組んでいては、プロ意識のようなものは永遠に身に着かない。
また、作った後にレビューをするものだと思っている人がほとんどだ。
実際の作業フローでもそうなっていることがほとんどだ。
でも本当は作る前にレビューが必要である。
どう作るのかということのレビューが必要である。
その時点でレビュワーとレビューイの認識が合っていなければならない。
レビューとは、こう出来てくるはずというものと実際にできてきたものの突き合わせをするものだ。
ここで、規約どおりであるとか業務仕様どおりである、というのは当然のことなのでそういったことの認識合わせをすることには意味がない 。
どう作るか、ということを作る前に認識合わせする。
その事前認識合わせができているなら、1.や2.は最小限の時間で済ませられる。
また作っている際中にレビュワーに中間状態を見てもらってもいいのだ。
むしろその方がレビュワーとしては安心できる。
開けてびっくり玉手箱、になるよりはずっといい。
コードを共有する手段などいくらでもある。
あるいはちょっと来てくれ、でもいいのだ。
それで後工程での手間が省けたり、戻りのリスクがなくなったり、一発OKの可能性が高まるのなら喜んで付き合う。
仕事とは学校や試験会場でやるようなテストではない。
生徒や受験生が提出してきたものを先生や採点者が100点からの減点法により採点するものではない。
仕様どおりの動作という意味では100点が当たり前なのであって、100点が取れるまで次に進めないし周囲からも許されない。
問題に対する完全な答えが必ずある保証はどこにもない。
もしかすると問題そのものが間違っているのかもしれない。
皆で試行錯誤しながら、暗中模索しながら、すべてを疑いながら、答えらしきものを探って作っていくプロセスが仕事である。
そのプロセスに生徒や受験生のような意識で関わって来ないでほしい。
何にでも使える万能な解決方法や公式などITにはない。
そんなものを求めても無駄である。
それはITの混沌とした状況、つぎはぎだらけで行き当たりばったりなやり方、車輪の再発明を繰り返している様子、方法論自体が百年近く前から何も変わっていない様子、力技でのごり押しを解決や進歩と呼んでごまかしている様子を見れば明らかだ。
そういうカオスな状態に放り込まれた時に、自分としてはこう考える、という芯のようなものがなければ状況に流されていくだけだ。
基礎から積み上げて導き出した自分の考えこそが必要なのだ。
また自分の考えがなければ他人の成果物への本質的な指摘はできない。
初めて遭遇したものに対していいものなのか悪いものなのかの判断ができない。
自分の今までの考え方ややり方を改めるべきなのかがわからない。
減点法による採点しかできない人間には、答えと合っているか合っていないかの比較がレビューであると勘違いしている人間には、より良いものは考えられないし他人をより良い方向へは導けない。
…などと常々思っているわけだが、だから私は厳しすぎるといわれるのだろう。
まあいいか、別に。

