勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

残念なレビュー、あるいはレビュアー心得

ソフトウェア開発におけるドキュメントレビューについて最近考えていること。漫然としたレビュー、残念なレビューにより生産性が大きく損なわれていることが多い。とはいえ、自部門組織でもうまく改善できているわけではなく、どうしたらよいか悩んでいるのだけれども。
blackboard

(良い)レビューの想い出

ソフトウェア開発におけるレビューはいろいろと経験しているが、折に触れて思い出す出来事がふたつある。こんなことを書くと老害認定されるかもしれないけど書く。老いててすいません。

ひとつは社会人になったばかりの駆け出し時代(一部脚色しています)。社会インフラ的な基幹系システム(ホスト)の開発に参加したのだけれど、ドキュメントもコードもとても丁寧に厳密にレビューしてもらっていた。もちろん学生時代にレポート類のレビューを受ける経験はあったけれども、段違いの精度でのレビューに衝撃を受け、ソフトウェア開発を仕事にするというのはこういうものなんだと理解していた。具体的にはこのような感じ

  • インプットに対して、アウトプットが完全であることをセルフチェックした上で、有識者が時間をかけてレビューしていた
  • セルフチェックも、有識者レビューも文章、コードともに1行ごとに行い、インプットとクロスチェックをしてブロック単位で余白に印鑑押してた(結果として、印刷物の右側に自分のハンコとレビュアーのハンコがずらっと並んでいた)
  • 指摘事項はしっかりとコメントされ、加えて対面で理由も含めてフィードバック

今思うと、紙とか印鑑が非常に懐かしい感じ。ただ、ここで学んだ「レビューへの姿勢」は今も大切にしている。今でも自分がやるレビューではときどき、句読点やコード行すべてにマーキーで色を塗ってしまうのはこの時の癖である。


もうひとつは割と最近の話。大きな企業さんでの大規模な開発での経験(一部脚色しています)。いわゆるウォーターフォール型開発なのだけれども、上流工程を終了するためには形式的にはお客様の部長承認が必要だった。規模が大きかったので、ドキュメントは分厚いキングジム2冊のボリューム。期限ギリギリ夜遅くに提出物を提出して、翌日のレビューに望んだ時に目を疑った。部長さんが持ってきている文書ほぼ全てのページに付箋や書き込みがされている [ウワーッ、なんてこった!] 。こ、これはもしかして伝説のBillGレビューか・・・

私たちが仕様書を彼に送ったのがほんの24時間前だったことを考えると、彼は昨夜読んだのに違いなかった。彼が質問をし、私がそれに答えた。簡単な質問だったが、それがどんな質問だったかどうしても思い出せない。彼が仕様書をパラパラとめくる手元に目をひきつけられていたからだ。
彼が私の仕様書をパラパラとめくっていて [落ち着けよ! 小娘みたいじゃないか!] …そして仕様書のすべてのページの欄外に書き込みがあるのを見たのだ。彼はあの分厚い仕様書をすべて読んで、欄外に書き込みをしたのだ。 全部読んだんだ! [ウワーッ、なんてこった!]
http://local.joelonsoftware.com/wiki/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AEBillG%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AE%E3%81%93%E3%81%A8

レビューは無事に通ったのだけど、後で確認したらこんな感じ

  • 部長レビューはそもそも形式的ではなかった。ガチだった
  • 提出時間が遅かったが、徹夜で読んでいただいていた、というか全部読むポリシーとのこと
  • 判断(承認)を行うためには、内容をきちんと理解して、納得できるかを確認する

もちろんその方のスケジュールは超多忙。であっても、きちんとレビューする姿勢に恐れ入りました。

上記のような事を書くとSIer的だとかWFだという批判も受けそうだけど、今回書きたいのは「ちゃんと真剣にレビューすることは重要だ」ということ。

More Joel on Software

More Joel on Software

  • 作者:Joel Spolsky
  • 発売日: 2009/04/09
  • メディア: 単行本(ソフトカバー)

ソフトウェア開発の文書レビューによくある問題点

多くの現場において散見されるのはだいたい以下のような状況である。

  • レビューそのものが「技術の必要なプロセス」と認知されていない
  • 適当なレビュー方法が雑にOJTなどで、なんとなーく継承されている
  • 簡易な「読み合わせ」をレビューと勘違いしている

結果として、残念なレビューが後を絶たない。

必要なのは、レビューのやり方を見直すことです。ITエンジニアの方はたいてい、上司や先輩のやり方にならってレビューを実施しています。そのレビューのやり方には、改善の余地が多分にあるのです。
間違いだらけの設計レビュー

「レビューのスキルは、ITエンジニアとして知識を得て開発経験を積み、レビューを担当していくうちに身についていく」――。この誤った考え方がはびこっているため、レビューの改善が妨げられているように思います。
間違いだらけの設計レビュー

特に簡単な「読み合わせ」をレビューと称するのは大きな問題で、たとえば以下のようなレビューはただちに運用を見直したほうが良いだろう。

  • なんとなく、関係者が会議室に集まって始まる
  • 成果物(アウトプット)だけを時間内にざっくりと読み合わせる
  • 参加者がその場でたまたま気がついた問題点についてディスカッションする
  • 時間が来たらレビューは終わり
  • 指摘された事項を修正したらレビュー終わり

最低限のレビュアー心得

細かいレベルではいろいろあるけれども、最低限抑えるべき事項は以下の通りである。

  • レビューの目的を確認し、目的を達成するためにレビューを行う。なんとなくレビューしない
  • 原則としては事前にレビュー対象物を通読し、目的に即した重要度に基づき指摘を行う
  • 作業結果レビューであれば、インプットとなる情報とアウトプットを付き合わせ、感覚、勘と経験でレビューしない

もちろん忙しいとか、兼務で複数プロジェクト見ているとか、見切れないなどといった状況もあると思うけれど、BillGだってちゃんとレビューしているのだから、やるべきだろうと自分を戒めている。

ちなみに細々としたレビュー技法についての詳細も書こうかと思っていたのだけれども、以下の記事が良かったのでリンク紹介してお茶を濁す・・・