GTDとテスト駆動開発(TDD)の関連性

だいぶ遅れてしまったが、GTDとTDD(テスト駆動開発)の関連性についてお話していきたい
GTDおよびTDDの双方に造詣が深い、id:t-wada 氏は、この前のオブジェクト倶楽部の夏のイベントで、GTDとTDDの関連についてこう話していた。

心に着目している
開ループが生産性に与えるダメージ
一度に一つのことのみを相手とする
次の一手は?」


このように私の言いたかったことは、大事なところは、id:t-wada 氏にすでに述べられてしまっているのだが、他の関連性や細かいところで思っていることを、書きたいと思う。
1.ケントベック著「テスト駆動開発」から
実はケントベックは、著書「テスト駆動開発」の中で、一般論として重要なことをいくつか示唆している。GTDと関連のある箇所を引用してみたい。


反復可能な行動を規則とみなすことで、規則の適用が機械的な反復作業となること(P 197)
著者が気づいた効果に他の人も気がついてほしい。それは反復可能な行動を規則とみなすことで、規則の運用が機械的な反復作業となることである。その結果、毎回第一原則からすべてを繰り返すよりも速くなる。例外や、どの規則にも当てはまらない問題が起こった場合は創造性を発揮するのに多くの時間とエネルギーを費やす。


行動のリスト化の重要さについて(P124)
蓄積した経験が増加すると、実行すべきだと認識することが増加する。実行すべきことが増加すると現在実行中のことへの注意が減少する。現在実行中のことへの注意が減少すると達成したことが減少する。
次の数時間で達成したいすべてのことを書き出して、コンピュータの横に張り出すことを習慣にした。リストをすべて書き出すと、何かを忘れなくなることに気がついた。新しい項目が浮上すれば迅速かつ意識的にその項目は「今」リストに入るべきなのか、「今後の」リストに入るべきなのか、実際にはまったく行う必要のないことなのかを判断するようにした。


2.その他、私が感じる共通点
そのほかに、私は以下のようなことを感じている。

執着心
テスト依存症なる言葉があるように、TDDではある種の執着心がTDDの学習を醸成すると思う。
GTDでも、きれいな状態、整った状態に対する、執着心を持つことが大切であると思う。

継続的統合
TDDでは、常に「きれい」「動作している」の状態を保ったまま、少しずつ新しい機能を追加していく。忙しいから、プレッシャーがかかっているからといってこの状態を崩すことを良しとしない。この姿勢はGTDにも共通すると思っている。

リズム
GTDにはリズムがある。同じようにTDDでもリズムが大切である
守 破 離 (テキストをきちんと読み込むことの威力)
id:t-wada氏は、TDDのマスターのために、ケントベックの著書「テスト駆動開発」を写経することが大変助けになったとセミナーで語っている。個人的にも一年ほど前、氏に、TDDについての疑問などを話したときに「お前は本当に本を読んだのか」といわれたことは大変、大きい影響を受けた言葉だった。
自分の言葉で話すこと、これはとても大切なことであると個人的には考えている。XXにはこう書いてあった。YYはこういっている。こんなことは、人に対しても、自分に対しても何の理由付けにもなりはしない。
しかしながら、逆に人や書籍からものを学ぶ場合は都合のいいところだけつまんでいたのでは、まったく学ぶことができないと思う。良いと思った人や書籍からは、自分にとって都合が悪く思うことも含めて、しっかりとその考えすべてを受け止めて初めて全体的に大きな理解に達することができるのだと思う。

PDACサイクルをまわすところ
TDDもGTDもPDACサイクルをまわします
ボトムアップアプローチであること
TDDは適切なタイミングで洞察がひらめくことを保障するものではないです。しかし、自信を与えるテストと注意深く構成されたコードによって、洞察への準備と洞察のひらめきを適用するための準備を行うことができます。GTDにも同じようなことがいえます。