You think that Arnold and Sylvester movie careers were head to head?
Let me tell you the story of what happened before that.
Arnold and Sylvester had a struggling software development business.
Arnold wanted better code design. Because he was after better design, he chose TDD, with all the design goodness it brings. TDD usually works better on new code, rather than on legacy code. On his journey, Arnold got better at TDD and improved both his tests and production code design, although he left the legacy code untested. The new code was a shining example of SOLID code.
Sylvester wanted better quality. He understood that he needed to fix the current code base, and that meant writing tests for his legacy code, as well as the new code. This was hard, as is the way with testing legacy code (although the pain was alleviated by some cool tools). Progress was slower, since the legacy code fought back. But Sylvester persevered, and got some quality in, and kept the bugs out.
Both Arnie and Sly’s journeys were tough. They got better at what they did. Testing is a set of skills, and practice made perfect. Not perfect, really, but improved.
As they made progress, the two journeys have started to overlap.
As Arnold TDDed his new code, he put enough safeguards in, and had enough confidence to start operating on the old legacy code. As design got better, it was easier to put tests around the legacy code, and less bugs reared their ugly heads.
Sylvester was no slouch either. With much less bugs to worry about, he had enough time to improve the design on of the code, making it legacy no more.
In the end, both have arrived at better design and better quality.
As a bonus they also got better development speed, because high quality meant less rework, and good design meant quick modification for new features.
When they retired their successful software business, Arnie and Sly started shooting movies and people for a living.
And the moral is…
Different people expect different things from the process of implementing automated testing. Sometimes, it feels that we’re sacrificing something by concentrating on another. We have that feeling, since that’s how life is, a balance between goals. The cool thing about software development, usually when you achieve one of these goals, you get the others for free. After mastering them for years, true.
Arnie and Sly were had successful movies, because they gave their customers what they wanted, with good design (read: special effects), good quality (read: blockbusters one after another) and high development speed (read: movies year after year).
And they lived happily ever after.