BAsixs(ベーシックス)

「あたりまえ」をアップデートしつづける

問題の解決策が瞬時に見つかる「ラバーダック・デバッグ」はいかが?

読了目安 : 5

  • 投稿日 :
  • 最終更新日 :

この記事を書いた人

プロフィールアイコン(写真):アカウント/ディレクター 昆野
昆野アカウント/ディレクター(ビジネス・アーキテクツ)

Web業界歴20年以上、マーケティングをベースとしてWebディレクター、プロデューサーとして数々のプロジェクトを経験。Web業界の酸いも甘いも嚙み分けた結果、人材の案件への適正マッチングこそがプロジェクトの成否を決めるという持論にたどり着く。2020年BA入社。色々な人と会って相談を聞く仕事です。

作成した資料や納品物のクオリティが上がらない。納品した後で、直したいところが出てきてしまう……。そんな悩みを抱えている方も多いのではないでしょうか。

いくら注意していても改善しないという方は、その解決のために具体的なメソッドを導入すべきかもしれません。今回はプログラマーが問題解決に利用している「ラバーダック・デバッグ」を紹介したいと思います。

ラバーダックを通じて自分の心と対話する

プログラミングの開発手法を紹介する名著として知られる『達人プログラマー 職人から名匠への道』に、こんな一文があります。

完了できない、納期に間に合わない、壊れているといった理由を誰かに報告する前に、いったん立ち止まって自分自身の言い分に耳を傾けてください。ディスプレイの上に置かれているゴム製のアヒルちゃんでも猫でも構わないので、まず話しかけてみてください

出典 : Andrew Hunt, David Thomas(1999). The Pragmatic Programmer. Addison Wesley. (アンドリュー・ハント, デイブ・トーマス 村上雅章(訳)(2016). 達人プログラマー 職人から名匠への道 オーム社)

これは弁明している自分を客観視することで、「自分の弁解に筋が通っているか」、「ばかげたことを主張していないか」、「上司にはどのように聞こえるか」を確認するという行為を示しています。

この自分を客観視するという過程の中で起きるのが、自分の心との対話です。今起きている問題を説明することで、「まだ試していなかった解決法」、「新たなアイディア」、「さらなる問題」などが自然と浮かんでくると言われています。これはプログラムにおけるデバッグ以外でも有効です。

忙しい上司や同僚の代わりに……

この手法は先の著書の記述にちなんで、現在では「ラバーダック・デバッグ」と呼ばれているようです。

デバッグとは簡単に言えばソフトウェアの問題を解決すること。西欧では昔からバグ(虫)を"恐ろしいもの"を表すために使っており、否定を意味する冠詞のdeと組み合わせることで、このような行為を「デバッグ」と呼ぶようになったようです。そしてラバーダックは、文字通り先に登場した「ゴム製のアヒル」を指しています。

「ラバーダック・デバッグ」は先にも紹介したように、問題の原因を探し出すために"誰かに説明する"というテクニックです。職場において、その相手とは一般に上司や同僚かもしれませんが、"説明する"ということは、"その相手の時間を占有"することにつながります。効果的であるとはいえ、それを繰り返すことは相手にとって迷惑といえるでしょう。

そこで必要になるのが"肩越しにスクリーンを見ながら、定期的にうなずく相手(相手=対話する自分の心)"というわけです。この相手は別に何も言う必要はないと、『達人プログラマー 職人から名匠への道』では語られています。なぜなら、問題について順を追って説明する行為自体が、その原因を見つけることにつながるからです。

問題を説明する上で意識したい「WISDOM」

rubberduck description

ここまで、「ラバーダック・デバッグ」とは"誰かに説明する"テクニックだと紹介してきました。しかし、問題の要点をきちんと整理して、誰かに説明することはそう簡単ではありません。

『達人プログラマー 職人から名匠への道』では、プログラミングにおけるドキュメント(設計書など)をはじめとする社内文書を書く際などには、「WISDOM」を意識すべきだと語られています。

「WISDOM」とは英語で「知恵」を意味する単語ですが、ここではよく言う"5W1H"のように、6つの単語の頭文字を総称したものとなっています。すなわち……。

WISDOMとは

W:何(What)……聞き手に何を知ってほしいのか
I:興味(Interest)……言いたいことの中にある彼らの興味とは何か
S:洗練(Sophisticate)……それらはどれくらい洗練されているか
D:詳細(Detail)……彼らはどの程度詳細を知りたがっているか
O:誰の情報(Own)……誰にその情報を知ってもらいたいのか
M:動機づけ(Motivate)……話を聞いてもらえるには、どうするのか

これは対人関係においての問題を解決するうえで、かなり有効ですね。自分に足りなかったのは、要点の明確化だったのか、テーマ設定の誤りだったのか、精度不足だったのか……。問題をアヒルちゃんに説明する際、これらを意識することで、内なる自分が原因を導き出してくれそうです。

実際にアヒルに問題を話しかけてみた

rubberduck duck

ここで、今まで書いてきた原稿について、「どうクオリティを上げるか」という問題を、ラバーダックに説明してみました。

「『ラバーダック・デバッグ』の魅力を知ってもらう上で、必要なことは……だから」
「今回の記事の読みどころとして、特に詳しく紹介すべきところは……」
「説得力を出すために……をしたが、……がちょっとマニアックすぎるので」
「Web業界でスキルを磨きたい人が求めている情報は……だから」
「タイトルやリードをもっと引きのあるものにするには……」

意外と見直す点が出てくるものですね。問いかけてすぐに、「あ、ここは直さないと」とすぐに思いつくもの。じっくりと説明していく過程で、「ここは説明の順番が逆だな」と気づくものなど……。いろいろと解決策が見つかりました。これは、ほんの数分取り組むだけでもかなり有効です。

ちなみに、筆者は在宅勤務中のため、自室でこの原稿を書いていますが、「同僚のいる職場でアヒルに話しかけるのは、さすがに……」という人もいることでしょう。

そこで注目したいのが、「ラバーダック・デバッグ」は文字で説明しても効果があるといわれていること。ただ、どれだけ早くタイピングをしても、文字の入力が思考に追いつかないので、はじめは「話しかける」ところから始めた方が良いかもしれません。慣れてきたら、口に出さなくても、心の中で声を出すことでデバッグ処理ができるかもしれませんね。

まとめ

在宅勤務が広まっている今こそ、「ラバーダック・デバッグ」を導入するチャンス。問題を解決し、仕事のクオリティをアップさせるために、ぜひ一度お試しください。

参考

  • Andrew Hunt, David Thomas(1999). The Pragmatic Programmer. Addison Wesley. (アンドリュー・ハント, デイブ・トーマス 村上雅章(訳)(2016). 達人プログラマー 職人から名匠への道 オーム社)