[記事紹介] InfoQ ~ なぜ TDD とペアプログラミングで生産量が増えるのか
この記事は、 TDD などを実施すると品質は上がるだろうけれども生産性は落ちるはずだ、 という誤解についての反論です。
InfoQ: なぜ TDD とペアプログラミングで生産量が増えるのか
2009年6月7日 ( 原文は 2009/2/27 )「テスト駆動開発」 と 「ペアプログラミング」 は、 アジャイルプラクティスで最も広く知られているものの2つであるが、 まだそれほど多くのアジャイルチームによって実践されてはいない。 たいていその理由として、 TDD やペアプログラミングなどのプラクティスを取り入れるには 「忙しすぎる」 点が挙げられるだろう。 要するに、 これは高いコード品質を得ようと努力することが生産性を低下させることを示唆している。
しかしそうではない、 実際には逆に生産量が増える (生産性は上がる) のであると Mike Hill 氏は反駁しています。
開発プロジェクトの途中のある日を見ると、 初日以外は、 昨日までに作ってきたソースコードに対して、 追加したり変更したりしているはずです。 その追加・変更するスピードは、 昨日までに作ってきたコードの品質に影響されるのである、 と言うのです。
Mike 氏は、 どのように 「昨日が今日を決定する」 のか、 つまり、 既存コードの内部品質が現在の生産性にどのような影響を及ぼすかについて、 次のように述べている。
一日中、 何か行動を起こすたびに、 そこにある既存コードに左右されることになります。 コードの行の解析、 他の依存関係のオープン、 不適切な変数名、 (大なり小なり) 欠陥のある設計決定、 などによりペースが落ちることになるでしょう。
できるだけ作業ペースを上げたいのであれば、 簡潔なコードで作業すべきです。 以上。
最後に、 Mike 氏は、 ペアプログラミングと TDD は、 「タイピングの人数が半分でコード生産量も半分」 (本稿著者の言葉) になるため、 スループット (生産性) が低下する、 というよくある誤解を取りあげている。 氏は、 「コーディング」 時に起こる 11 の一般的な行動リストを示し、 次のように述べている。
マシンにコードをタイプするということがこのリストのごくわずかな部分しか占めていないという点に注目してください。 それは、 プログラミングで問題となる要素は考えることであり、 タイピングではないからです。 このリストでそれ以外 (おそらく物を投げることを除いて) は考えることに関しており、 タイプピングではありません。
TDD は思考を支援するものとして機能するため、 生産量が増加します。 これにより、 バックトラッキングと不要な機能を抑制し、 コード解析とデバッグを減らします。
なお、 私はそれらの理由に加えて、 不良品は出荷できないのであるから、 最後にまとめて品質を向上させるよりも、 各 「工程」 ごとに品質を担保したほうがトータルコストは下がる (生産性は上がる)、 という製造業の常識も付け加えておきたいと思います。
| 固定リンク
「記事紹介」カテゴリの記事
- [記事紹介] MSDN マガジンの TDD 関連記事(2011.12.17)
- [記事紹介] CodeZine ~ C#で始めるテスト駆動開発(2011.12.12)
- [記事紹介] CodeZine ~ Visual Studio 単体テスト機能大全 第1回: Visual Studio で作る単体テスト、基本のき(2010.02.19)
- [記事紹介] Visual Studio のインテリセンスって、テストファースト中には邪魔だよね(2011.11.01)
- [記事紹介] CodeZine ~ Visual Studio 単体テスト機能大全 第1回: Visual Studio で作る単体テスト、基本のき (VS2010向け改訂版)(2011.04.05)

コメント