デバッグ(など問題解決)で時間を浪費するクセを直す方法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
普段、人間が意識せずとも呼吸ができているのは、自律神経のおかげです。
逆に呼吸を意識的にしてやれば、自律神経を操れるというわけですな。
バルーン・ブリージングのやり方は以下の通りです。
- 床やいすに座り、背筋を伸ばします。
- お腹に風船が入っているところをイメージします。
- 胸を少し開きながら、鼻から息を大きく吸い、風船が膨らむところをイメージします。
- 背中を少し丸めつつ、鼻から息を吐き切り、風船がしぼむところをイメージします。
以上のサイクルを繰り返します。5分もやると、リラックス効果が実感できます。 ちなみに前述のポモドーロ・テクニックの休憩時間に組み込むと、捗ります。
2.3 ソクラテス式問答法(ソロver.)
「目的喪失」を防ぐ手段として、ソクラテス式問答法を使ってみることをオススメします。
wikipediaでは、ソクラテス式問答法を以下のように定義しています。簡単に言えば、質問と回答を繰り返して、新しいアイデアや解釈を出す手法です。
問答法(もんどうほう、希: διαλεκτική, dialektike, ディアレクティケー; 英: dialectic)とは、古代ギリシアの哲学者ソクラテスが用いた、対話によって相手の矛盾・無知を自覚させつつ、より高次の認識、真理へと導いていく手法を指す。 出展:wikipedia
ソクラテス式問答法自体は、現代でも多くの記事やブログで紹介されるほど人気の手法です。
(クリティカルシンキングと言われることもあります。)
さて、本来は自分と他人とで問答するソクラテス式問答法ですが、これを以下の手順で行います。
- 自分の中に、質問する自分(A)と、それに答える自分(B)を想像する。
- Aが質問を投げる。
- Bが質問に回答する。
- 2~3を繰り返す。
上記手順を、紙に書いたり、独り言をしながら実践すると、 目的を見失いにくくなり、また詰まったときの打開策を打ち出しやすくなります。
個人的な経験として、1回のデバッグで1~2時間くらい手詰まりで悶々としていた時間が、 この手法を使うことでめっきりなくなったなーと感じています。
まとめ
今回、デバッグの効率化として3つの方法を紹介しました。 できそうなものから試してみてくださいませ。 しんどいデバッグが少しでもラクになれば幸いです。
よいデバッグライフを。