プログラマのCPU占有時間
普段はあまりやらないが、TDD(テスト駆動開発)で大量のテストを行っていると、xUnit等によるテストケースの開発と実行が、テストを進めるにつれて、単なる繰り返し作業になっていくのが実感として判る。最初のうちは全ての条件を通そうとか、この条件をクリアするためのテストはとか、モックを作る際のエクスペクテーションはどうしようとか、いろいろ考えるのだが、条件が揃ってくると、あとはテストのパターンを少しずつ変えたものを、繰り返していくだけになっていくのだ。
その時の人間の頭脳をPCに例えると、CPU時間はせいぜい10〜20%、残りはテストを用意したり、実行したり、レッド/グリーンを確認したりという、いわゆるI/O時間だ。人間の頭脳にもバスマスタのような機構があるので、テストが単純な作業の繰り返しに分解されるほどCPU時間が下がる訳だ。
CPUの占有時間が下がり、単純作業になるということはミスが減るということで、いろいろと言われているTDD(テスト駆動開発)のメリットって、単純にプログラマが考えている時間が減ることなのかな、と納得したりする。することといったら、用意したテストの実行がレッドになるかどうかを見るだけ。レッドになったらコードがおかしいか、テストがおかしいかのどちらかだから、それに対して行動するだけだ。
その頃にはプログラミングの一番楽しい部分は終わり、既に退屈になっているってのが、唯一TDDのデメリットかもしれない。