« [記事紹介] gihyo.jp ~ 連載 [動画で解説]和田卓人の “テスト駆動開発” 講座 | トップページ | [コラム] テストファーストは、 テストを先にやるわけではない »

2009年8月 4日 (火)

[記事紹介] InfoQ ~ なぜ TDD とペアプログラミングで生産量が増えるのか

この記事は、 TDD などを実施すると品質は上がるだろうけれども生産性は落ちるはずだ、 という誤解についての反論です。

InfoQ: なぜ TDD とペアプログラミングで生産量が増えるのか
2009年6月7日 ( 原文は 2009/2/27 )

「テスト駆動開発」 と 「ペアプログラミング」 は、 アジャイルプラクティスで最も広く知られているものの2つであるが、 まだそれほど多くのアジャイルチームによって実践されてはいない。 たいていその理由として、 TDD やペアプログラミングなどのプラクティスを取り入れるには 「忙しすぎる」 点が挙げられるだろう。 要するに、 これは高いコード品質を得ようと努力することが生産性を低下させることを示唆している。

しかしそうではない、 実際には逆に生産量が増える (生産性は上がる) のであると Mike Hill 氏は反駁しています。

開発プロジェクトの途中のある日を見ると、 初日以外は、 昨日までに作ってきたソースコードに対して、 追加したり変更したりしているはずです。 その追加・変更するスピードは、 昨日までに作ってきたコードの品質に影響されるのである、 と言うのです。

Mike 氏は、 どのように 「昨日が今日を決定する」 のか、 つまり、 既存コードの内部品質が現在の生産性にどのような影響を及ぼすかについて、 次のように述べている。

一日中、 何か行動を起こすたびに、 そこにある既存コードに左右されることになります。 コードの行の解析、 他の依存関係のオープン、 不適切な変数名、 (大なり小なり) 欠陥のある設計決定、 などによりペースが落ちることになるでしょう。

できるだけ作業ペースを上げたいのであれば、 簡潔なコードで作業すべきです。 以上。

最後に、 Mike 氏は、 ペアプログラミングと TDD は、 「タイピングの人数が半分でコード生産量も半分」 (本稿著者の言葉) になるため、 スループット (生産性) が低下する、 というよくある誤解を取りあげている。 氏は、 「コーディング」 時に起こる 11 の一般的な行動リストを示し、 次のように述べている。

マシンにコードをタイプするということがこのリストのごくわずかな部分しか占めていないという点に注目してください。 それは、 プログラミングで問題となる要素は考えることであり、 タイピングではないからです。 このリストでそれ以外 (おそらく物を投げることを除いて) は考えることに関しており、 タイプピングではありません。

TDD は思考を支援するものとして機能するため、 生産量が増加します。 これにより、 バックトラッキングと不要な機能を抑制し、 コード解析とデバッグを減らします。

なお、 私はそれらの理由に加えて、 不良品は出荷できないのであるから、 最後にまとめて品質を向上させるよりも、 各 「工程」 ごとに品質を担保したほうがトータルコストは下がる (生産性は上がる)、 という製造業の常識も付け加えておきたいと思います。

|

« [記事紹介] gihyo.jp ~ 連載 [動画で解説]和田卓人の “テスト駆動開発” 講座 | トップページ | [コラム] テストファーストは、 テストを先にやるわけではない »

記事紹介」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: [記事紹介] InfoQ ~ なぜ TDD とペアプログラミングで生産量が増えるのか:

« [記事紹介] gihyo.jp ~ 連載 [動画で解説]和田卓人の “テスト駆動開発” 講座 | トップページ | [コラム] テストファーストは、 テストを先にやるわけではない »