Melting Pot of Thoughts

SaaSスタートアップのCTOです。思考の整理のため考えたことをメモ書きレベルでアウトプットしていくブログです。

ラバーダック・デバッグから考えるセルフレビューの方法

プログラミングにおいて、『プルリクエストのセルフコメントを書くのはオススメ!』という話を以前別の記事でしました。

プルリクエストは本来他の人にレビュー・コメントしてもらうために作るものですが、それを人に見せる前に自分自身でレビュー・コメントするという方法です。このセルフコメントの工程を挟むことにより自分の成果物(コード)を客観的に見ることができ、コードのクオリティがグッと上がるため個人的にイチオシしている方法です。

 

(過去に以下記事で紹介しました)

doyaaaaaken.hatenablog.com

 

この話を公開すると「バーダックデバッグと似てますね」というコメントをいただきました。ラバーダックデバッグが何か知らなかったので調べてみたところ、たしかに似ており面白い共通点もあったため、その内容について書いてみます。

 

バーダックデバッグとは?

Wikipediaの説明がわかりやすかったのでそのまま引用します。

バーダックデバッグ(英語: Rubber duck debugging)とは、ソフトウエア工学におけるコードのデバッグ手法である。ラバーダックデバッグは、アンドリュー・ハントとデビッド・トーマスの共著によるThe Pragmatic Programmerという本で紹介された、プログラマーがラバー・ダック(アヒルちゃん)を持ち歩きアヒルちゃんに向かってコードを1行ずつ説明することによりデバッグを行うという話が由来である。この手法には、他にも多くの別名があり、しばしば様々な無生物が用いられている。

プログラマーの多くは誰かに問題を説明した経験があり、その相手はプログラミングの知識が全くないこともあり得るが、問題を説明している過程で解決策を思いつくことがある。目的とするコードと、実際のコードの挙動を観察して、説明することにより、その違いが明白になるのだ。一般化するならば、あることを説明することによって、異なる見方による評価をする必要が生じることとなり、それがより深い理解へとつながる。無生物を用いることにより、プログラマーは、他人を煩わせることなく目的を達成できる。

 

バーダック(アヒルちゃん)は下の画像のようなやつです。

ヒルちゃんの画像(wikipediaより引用)

プルリクエストのセルフレビューにはアヒルちゃんは使わないですが、確かに「自分が書いたコードを1行1行読み、それにコメントをつける」作業は「コードを1行1行読み、アヒルちゃんに説明する」のと似てますね。

 

他の似た方法

他にも似た方法があります。ベア・プログラミング(テディベアメソッドとも言います)はご存知でしょうか?

設計や実装などで困ったことがあるときに、部屋の中にあるテディベア(熊のぬいぐるみ)に困りごとを話すという方法で、これをすると悩みが自己解決すると言われています。自分の考えを独り言として話すことで、自然と考えが整理されるためです。

 

また、ラバーダックデバッグやベア・プログラミングはプログラミングに閉じた話でしたが、他分野でも似た話はあります。

  • 新聞など原稿を書く仕事の人が、その原稿を紙に印刷して読みあげ、読みやすい文章になっているか確認する
  • プレゼン資料を作るとき、読み上げてみることでストーリーとしてキレイにつながっているかどうか確認する
  • 仕事の1on1ミーティングにおいて、1on1を行う人は1on1を受ける人が話すのを邪魔せず傾聴する(1on1を受ける人が自分自身の考えを自分の力で言葉にすることが大事であるため)
  • ブログも投稿する前に、軽く声に出して読んでチェックする(このブログのことです)

 

共通点

結局のところ「アウトプットする過程を通じて考えが整理され、セルフレビューになる」というのが共通点になります。アウトプットの形式は声でも文章でもどちらでもいいのですが、アウトプットをすることで自身の成果物を客観的に見ることができ、クオリティをあげることができます。

 

つまりプログラミングにせよ何にせよ、一人で作成したものの成果物のクオリティを上げたければ、じっと成果物を眺めているよりも声に出すなりしてアウトプットするのが効果的です。自身の分野でこのテクニックが適用できないか考えてみてもいいかもしれません。