記事:テスト駆動開発の適用戦略

テスト駆動開発を行なう上での課題と解決策に関するInfoQ記事について。記事の要約とコメントです。

記事について



テスト駆動開発を実行する上での課題とそれに対する解決案:
Making TDD Stick: Problems and Solutions for Adopters


まず、テスト駆動開発を実現する上での課題として、習得の困難さが挙げられます。

Test Driven Development can be very hard to learn. The learning phase (the time during which it becomes a deeply ingrained habit) typically lasts from two to four months, during which productivity is reduced. Eventually the benefits will be obvious and the technique is usually self-sustaining, but the question is: how to get there? Many developers give up after only a few days.


テスト駆動開発の習得は非常に難しいものです。学習期間は2ヶ月〜4ヶ月かかり、その間生産性は低下します。それであっても、結果として享受できるメリットは明らかであり、また、この技術には通常、一度習得すれば自然と続けられるという性質があります。しかし問題は「どうやってそこに至るのか?」多くの技術者は、たったの数日で諦めてしまうのです。

この解決策として従来考えられてきた、"Classroom training"や"Online Training"には「深み」や「共同作業」がないことを指摘した上で、「テスト駆動開発をとりまく会話を増やし、共同作業を増やすこと」を核とした解決策がいくつか提示されますが、その中で「コーディング道場」と「読書会」が具体的に紹介されています。


最終的にテスト駆動開発を有効にするための方策として、以下の4点が整理されます。

  • Patience, Practice, Depth
  • Management Support
  • Multi-pronged approach
  • Developers helping developers
  • 忍耐、訓練、深さ
  • 管理体制の支援
  • 多方面からのアプローチ
  • 開発者同士の助け合い

コメント

テスト駆動開発を「よしやるぞ」と言ってもなかなかできない理由に「メンバーのスキル」があることは、多くの人が認めるところだと思います。ただ、この記事が的確だと思うのは、メンバーのスキル向上のための方策を管理側が支援することの必要性を強調している点ではないでしょうか。そうは言っても、開発者の自主性と管理側の支援体制の両方が必要だとして、これを両方そろえるのは、それはそれで難しそうな気がします。


こういう場合、トップダウンアプローチは往々にしてうまく行かないもので、まずは会社の支援など期待しない「開発者の努力」から始めなければならないというところに結論は落ち着くのでしょうか。