たもろぐ

組み込みエンジニアが、エンジニアのキャリアやサイドプロジェクトについて考えるブログです。

デバッグ(など問題解決)で時間を浪費するクセを直す方法3選

こんにちは。たもです。

一般に、ソフトウェアエンジニアはデバッグをする機会が多く、 他人や自分の書いたコードが生み出すバグに日夜苦しんでいるかと思います。納期ギリギリのデバッグだと、もう発狂もの。
デバッグに限らず、あらゆる問題解決についても、同じような悩みはつきものです。

逆に言えば、デバッグにかける時間を節約できると、生産性が向上して自由な時間が増えるわけです。
(定時でさっさと帰って、ゲーム勉強とかしたいじゃん)

というわけで、今回はソフトのデバッグ効率化に使えるテクニックを紹介します。


1. なぜデバッグしてると時間だけが過ぎ去ってしまうのか

まずデバッグしてると時間ばかり過ぎてしまう原因ですが、以下のようなものがあります。

  • 疲れによる集中力の低下
  • 目的喪失

集中力が落ちれば、生産性が下がるのは当たり前ですね。
人間の集中力がどれだけ持つのかは諸説ありますが、30~50分くらいではないでしょうか。
その根拠として、トロント大学が17621人の学生を対象に行った実験で、被験者に記憶力テストをやってもらったところ、テスト開始~30分ではパフォーマンスが上昇し、30分経過後には落ち始めるそうです。さらに、テスト開始から50分経過すると、テスト開始直後のパフォーマンスを下回るといった結果が出ています。1

「目的喪失」は、自分が何やろうとしているかを見失ってる状態です。
たとえば登山において、山頂がどの方角にあるかわかってない状況で、森の中をむやみに歩き回るのが非効率なのは、言うまでもないことです。
「とりあえずデバッガを起動して内部の挙動を見て、対策を決めっかなー」とか思ってると陥りやすいワナですね。


2. 時間浪費グセを直す方法3選


2.1 ポモドーロ・テクニック

集中力低下対策として、ポモドーロ・テクニックをオススメします。 ポモドーロ・テクニックは、イタリア出身のソフトウェア・エンジニア、フランチェスコ・シリロ氏によって編み出された手法で、 「25分作業してから5分休憩する」のサイクルを最大4回実施してタスクをこなす時間術です。2

関連書や活用事例はググるとたくさん出てくるので、一定の効果はあるようです。3,4,5

ちなみに私は、スマホの標準タイマ―機能を使い、PCの横に置いて実践してます。 25+5分だと物足りなく感じるので、50+10分にタイマーセットしてやっています。 1サイクル毎(50分)にやることの目標を立てることで、集中力が保ちやすくなります。


2.2 バルーン・ブリージング

集中力回復にオススメなのが、バルーン・ブリージングです。 これはスタンフォード大学医学部のブログで紹介された深呼吸の方法です。6 集中力を回復するには、ストレスによる疲れを軽減する必要がありますが、 そこで定番のストレス対策である深呼吸を使おうというわけです。
ストレスによる疲れは、自律神経の乱れによるものが多いですが、7 呼吸は人間の自律神経に直接介入でき、その乱れを整えることができる数少ない手段です。8 普段、人間が意識せずとも呼吸ができているのは、自律神経のおかげです。 逆に呼吸を意識的にしてやれば、自律神経を操れるというわけですな。

バルーン・ブリージングのやり方は以下の通りです。

  1. 床やいすに座り、背筋を伸ばします。
  2. お腹に風船が入っているところをイメージします。
  3. 胸を少し開きながら、鼻から息を大きく吸い、風船が膨らむところをイメージします。
  4. 背中を少し丸めつつ、鼻から息を吐き切り、風船がしぼむところをイメージします。

以上のサイクルを繰り返します。5分もやると、リラックス効果が実感できます。 ちなみに前述のポモドーロ・テクニックの休憩時間に組み込むと、捗ります。


2.3 ソクラテス式問答法(ソロver.)

「目的喪失」を防ぐ手段として、ソクラテス式問答法を使ってみることをオススメします。

wikipediaでは、ソクラテス式問答法を以下のように定義しています。簡単に言えば、質問と回答を繰り返して、新しいアイデアや解釈を出す手法です。

問答法(もんどうほう、希: διαλεκτική, dialektike, ディアレクティケー; 英: dialectic)とは、古代ギリシアの哲学者ソクラテスが用いた、対話によって相手の矛盾・無知を自覚させつつ、より高次の認識、真理へと導いていく手法を指す。 出展:wikipedia

ソクラテス式問答法自体は、現代でも多くの記事やブログで紹介されるほど人気の手法です。 (クリティカルシンキングと言われることもあります。)

さて、本来は自分と他人とで問答するソクラテス式問答法ですが、これを以下の手順で行います。

  1. 自分の中に、質問する自分(A)と、それに答える自分(B)を想像する。
  2. Aが質問を投げる。
  3. Bが質問に回答する。
  4. 2~3を繰り返す。

上記手順を、紙に書いたり、独り言をしながら実践すると、 目的を見失いにくくなり、また詰まったときの打開策を打ち出しやすくなります。

個人的な経験として、1回のデバッグで1~2時間くらい手詰まりで悶々としていた時間が、 この手法を使うことでめっきりなくなったなーと感じています。


まとめ

今回、デバッグの効率化として3つの方法を紹介しました。 できそうなものから試してみてくださいませ。 しんどいデバッグが少しでもラクになれば幸いです。

よいデバッグライフを。