koeだめ 過去アーカイブ[〜2013-12-14]

最新情報は https://www.pixiv.net/fanbox/creator/3780274 にて

ハイプレッシャーを克服するためのテスト駆動開発の重要な「二歩目」#TddAdventJp

TDD Advent Calender 2012, 12/11 のエントリーです。
昨日は @katzchang によるgauche unitを書いた話でした。お疲れ様です。とてもいい話でしたね。

いつもと違うプレッシャー

さて、先日、サポーターズという学生と企業とを「支援」でつなげる就活サービスを行なっている人たちが主催の、エンジニア職に興味がある学生向けライブコーディングイベントに登壇し、学生のみなさんにいつもの開発を披露するという機会がありました。
いつもの開発を披露するということで、いつも通りのテスト駆動開発を披露したのですが、いつもと随分違う環境とプレッシャー下においても、テスト駆動開発はとても良い感じに機能し、これが相当に具合がよろしかったです。

ライブで思考を垂れ流してる様子をオーディエンスたち、しかもプログラマー業を生業としている人ってどんな風に仕事してるんだろうかって期待ムンムン前のめりできてくれてる学生たちを前にしていたわけで、普段通りじゃない緊張に襲われあーうーあーってなってしまうことを危惧していました。
しかし、案の定大いに緊張しつつも、きっかり進めていけたのはテスト駆動開発のおかげ*1でした。

凄い「二歩目」

とくにテスト駆動開発の技法の中でも「Fake It」の凄さを肌身で感じました。

コケるケースを書き、Fakeを通し、更にコケるケースを書き…というシンプルかつ力強い歩みによって着実に作り上げていくのがテスト駆動開発の醍醐味ですが、最初のコケるケースが踏み出した一歩ならば、Fakeで通すのが地面を蹴り上げる二歩目と言えます。この二歩目こそが開発を駆動する力であり、この一歩目から二歩目への過程をいかに小さく素早くする事こそがテスト駆動開発の要点なのだと気が付きました。

日常はプレッシャーのかたまり

このようなテスト駆動開発という技術(ワザ)をトレーニングしていたおかげで、ライブコーディングのようなハイプレッシャーに襲われている状況を凌ぎ、いつもどおりの開発を進めることができました。
改めて見なおしてみると、普段の開発とて有形無形の様々なプレッシャーの中に我々は居ます。
はじめての技術、セクシーな要件、ときめき溢れる期日、変更容易性への意識、読みやすいコードへのこだわり、などなど様々なプレッシャーを抱えています。

それらを小さい問題、つまり小さなコケるケースとFakeにまずは落とし込み、実働するコードとエビデンスによって小さな問題解決を確実に繰り返していく事こそが、自分にとってのテスト駆動開発です。

二歩目に絞る

また、もしテスト駆動開発を試みたいものの、どうテストを書いていった方が分からないとか、まるで単体テスト項目書を作るかのように全て事前に洗い出さないといけないんじゃないかとか、テスト駆動開発をはじめるための大きな問題を抱えている方は、まず重要な二歩目である「Fake It」部分だけに小さく絞ってはじめてみると、きっとテスト駆動開発の勘を掴むことができ、red⇒green⇒ refactoringのサイクルへと進んでいけるのではないでしょうか。

*1:@katzchang というライブコーディング解説者のサポートもいただきました。これもまたテスト駆動開発の縁なのですが、それについてはまた別途。