High-level description of Test-Driven Development describing the costs and benefits of TDD. Value including reduction of defects, maintenance with confidence, and the ability to rapidly add innovative market-winning features.
Problem: Iterations imply incremental development
Change can result in a negative feedback loop - ENTROPY: The Agilist’s Dilemma
We have to address this. It’s not easy, until it becomes easy. At first, we’d rather not check the oil…
...and I’d add “to products or projects being successful”
Types of debt
They all have a few things in common:
Difficult to quantify
seemingly expensive to fix,
accrued because we don’t want to (or aren’t sure at the time that we need to) pay now,
One Analogy for the Design
The suite of tests preserves all prior behavior while we address design, allowing for Emergent Designs
Teams noted a 15–35% increase in initial development time.
--- Overhead of writing more code (the code we should have been writing).
--- Test-maintenance. Decreases over time as product domain settles in, and as prior objects provide help in writing new tests.
Defect rates decreased between 40% & 90%.
Does TDD Work?
Microsoft and IBM…
ROI:
Quality: defect rate is considerably lower
defects quickly detected
Throughput of value: future enhancements easier in a dynamic market.
Williams TDD found 16% increase in dev time. But only two control teams wrote tests at all.
Weinberg’s “Are Your Lights On?” Golden ______
OTIS2 data conversion
OTIS2 “GUI” conversion
Denali Internationalization
Roadblocks to Adoption
Developers skip refactoring, don’t spend the minute to look for and clean up a new bit of code duplication.
Inexperienced coaches who confuse the developer-style TDD with the team ATDD
Managers waffling over the use of TDD, which limits its effectiveness
POs not willing to accept the initial slow-down.
…and others.