この記事は、TDD Advent Calenderの22日目のエントリです。
前日は Tugu Katagiriさんの素晴らしいエントリ「私、MVCでTDDやってます。」です。
私は先月TDDBC横浜に初めて参加したばかりのTDD超初心者です。
しかもソフトウェアエンジニアをやっているのに、コーディングが大の苦手です。
エディタに向かって、さあこれからコードを書こう、という時点で、大勢の見知らぬ人々の前でいきなりスピーチを迫られたはにかみ屋さんの気持ちになってしまうのです。#現実の私は全然はにかみ屋さんじゃないのに(苦笑)
そんなコンプレックスが邪魔をしてか、一人でレガシーコードに立ち向かうだけの勇気が出ないので、ならばチーム内で仲間を作ろう、いや本音を言えば私を引っ張ってくれる人を育てるべく、TDDの良さを伝えるにはどうすれば良いか、現在画策中です。
そこで、周囲の人にTDDとは何かを説明するときに、なにか良い喩えができないかと考えてみました。
小さな、でも確実に動作を保障してくれるタスクを積み上げて困難に立ち向かう・・・とすると冬山登山や外科手術?
いっいけません!だってTDDは最初にわざと失敗することを確認して、それを成功させるんですもの。命がいくつあっても足りやしない。
では、習ったことのない楽器を演奏するようなもの?
・・・これはなかなか良い喩えのようです。最初は音の出しかたすら分からない(どこもかしこもRED状態)から始めて課題曲をマスターするために練習曲でスキルを身につけながら課題曲のフレーズを少しずつ弾けるようになり(GREEN状態)、徐々に課題曲以外の曲も練習で演奏できるようになる。うん悪くない喩えだ。
でも、現実問題としてプロの演奏家以外は失敗しちゃったって”あっやべっ!今度はちゃんとやろう”で済みますが、私達が作って提供するソフトウェアはそれではいけないんです。目標としては、止まったり落ちたりせずに動き続けなければいけないのです(但し、データが壊れたまま動き続けたりするのはNGで、そういうときはしかるべきエラーメッセージを吐いてちゃんと止まってくれないと困りますが)。
では、こういうのはどうでしょうか?(ここでタイトルに戻る)
我が子の成長記録をアルバムに収めるように、テストコードを記す。
ただ泣くしかできなかった赤ちゃんが歩けるようになったり、学校に行くようになったり・・という人生の節目に記念写真を撮ってお祝いをするように、GREENになったテストコードを残し、自分が育てたソフトウェアと共に歩む、というのはいかがでしょうか?
—
明日(12/23)は、irassallyさんのエントリです。