読者です 読者をやめる 読者になる 読者になる

プログラマのコードレビューと学生マジシャンの手順見せの関連について

ソニックガーデンさんの「コードレビュー7つの秘訣」と自分の大学時代のマジックサークルにおける「手順見せ」のポイントについて、私が感じた関連について書いていきます。

はじめに

8/11(月)に受けたSonicGarden Studyを聞いて思ったことを書いてあります。

「いつまでクソコードを書き続けるの? 〜出来るプログラマだけが知っているコードレビュー7つの秘訣〜 - SonicGarden Study #11」
http://sonicgarden.doorkeeper.jp/events/13229?utm_campaign=event_13229_10033&utm_medium=email&utm_source=registered_message

以下、上記受講後に書いた記事です。
「2014/8/11(月) 「SonicGarden Study #11いつまでクソコードを書き続けるの? 〜出来るプログラマだけが知っているコードレビュー7つの秘訣〜」に参加しました。」
http://toshimana.hatenablog.com/entry/2014/08/11/234145

最初は「へぇーそうなんだ」と思ってみていましたが、話が進んでいくと、何か昔似たことをやったことがあるな…と既視感がありました。
そう、自分が大学で所属していたマジックサークルの「手順見せ」におけるポイントと「コードレビュー7つの秘訣」がそっくりだったんだよ!!*1

というわけで、あまり関係がなさそうな、プログラマのコードレビューと学生マジシャンの手順見せについて、ソニックガーデンさんの「コードレビュー7つの秘訣」をベースに関連性をまとめてみました。

手順見せとは?

ここでは、自分が所属していたマジックサークルの手順見せについて簡単に説明します。
ここでの手順見せとは、「年に1度の発表会のために、発表会演者が他の部員に自分の手順を披露して、意見をもらうこと」を指します。
発表会は12月ですが、そのために1年かけて準備を行います。演者は初期は2週に一度手順見せを行いますが、8月以降は1週に一度手順見せを行います。

「コードレビュー7つの秘訣」

ソニックガーデンさんの「コードレビュー7つの秘訣」は、以下になります。

  1. レビューの観点を明確にすること
  2. 我が身に返ることを恐れずに指摘すること
  3. 何故悪いコードなのかを論理的に説明すること
  4. 良いコードについて共通認識を持つこと
  5. 小さい単位でレビューを繰り返すこと
  6. 指摘は素直な気持ちで受け入れること
  7. 指摘は人格否定でないことを理解すること

「コードレビュー7つの秘訣」とマジシャンの手順見せの関係

1.レビューの観点を明確にすること

手順見せの時期によって観点が変わります。序盤は演技の方向性について、中盤は演技構成について、終盤は細かい技術や表現についてなどについて指摘します。
おそらく、納品がない開発をしているソニックガーデンさんはあまり細かい指摘はしないと思いますが、手順見せは納品相当である発表会の時点で最高の演技を届けるように指導することから、細かい指摘を行うという差はあるかと思います。

2.我が身に返ることを恐れずに指摘すること

マジックの舞台は"理想を表現するところ"なので、指摘する側も自分ができないような指摘をする場合があります。その場合は、指摘して終わりではなく、どうすればその理想に近づけるかをしっかり議論します。

3.何故悪いコードなのかを論理的に説明すること

マジックの舞台としてやってはいけないことは共通認識として部員みんなが持っています。なので、「やってはいけない事に抵触している」という指摘は、受ける側も素直に受け止めます。

4.良いコードについて共通認識を持つこと

みんな過去に発表会に出た人の演技を見ているので、憧れるような演技について共通認識ができています。指摘をする際にも、「xxがやった演技を参考にするといい」という指摘はよく出てきます。

5.小さい単位でレビューを繰り返すこと

1週間に一度、部員全体に手順見せを行います。しかし、それとは別に、より小さい手順見せを別途行います。同じ種類のマジックをする人たちで師弟関係があり、発表会に出る予定の弟子は、部員全体の手順見せの前に師匠に手順見せを行います。そうすることで、弟子たちはフィードバックを多く行い、短い期間でマジシャンらしい技術、考え方を身に着けることができます。

6.指摘は素直な気持ちで受け入れること

技術的な指摘については、素直に指摘を受け入れて練習する人の方が伸びる傾向がありました。ただし、感性的な指摘は受けた側が納得できないことも多いです。ここは「コードレビュー7つの秘訣」とは異なり、学生マジックは"変わったことが好まれる"ことから、感性的な部分は我を通すことが望ましいと考えられています。マジシャンにおける"感性的な指摘"は、プログラマにおける"宗教戦争"に相当するかと思います。

7.指摘は人格否定でないことを理解すること

そもそも、指摘として人格否定をすることがほぼなかったように思います。指摘も技術的に具体的なことが多いので、指摘を受けた側が指摘を人格の否定に捉えることもあまりないと思います。手順を良くすることが目的であることを全員で共有できていれば、「人格を否定しても良いものはできない」ことが分かるかと思います。

おわりに

コードレビューのような文化はプログラマ以外の業界でも多く行われているはずです。
8/7(木)にソニックガーデン倉貫さんが仙台で「納品のない受諾開発」について話してくれました。その中で、「絵描きが成長する際も、書いた絵を師匠に見てもらい、良い絵の描き方を学んでいる」という内容の話をしていました。
プログラマに限らず、良いレビューというのは、あらゆるクリエイティブな業界で必要になるものと感じました。
また、ソースレビューがより良い方向に発展するためには、他業種のレビューから発見できそうだと感じています。
いろんなレビュー文化を調べてみると面白いかもしれませんね。

*1:な、なんだってー!!