Let’s use a hypothetical scenario to explore TDD vs. Non-TDD development and how it may affect the outcome of a software project.
You are the lead of a small team of engineers working on an established product. One of the feature requirements for this release cycle involves a fairly significant amount of infrastructure work, which is already underway and about 40% complete. The project is currently on-time and on-budget with a release date scheduled for 3 months out. Under normal circumstances, pre-release certification consists of approximately 4 days regression and ad-hoc testing by QA staff.
Thursday, 4PM: Dave, your Business Analyst comes into your office accompanied by Patti, the project manager. Both have an ashen look about them, looking as if they’d seen a ghost. Dave pipes up: “So, we just had a stakeholder meeting that resulted in a release schedule change. They want us to stop work on the new feature, revert the infrastructure changes, and at the same time pull in the release schedule by 3 months. They’re pressuring us for an estimated release date, so we’re coming to you to find out when you can have the code ready to ship.” Dave then collapses into a chair, out of breath.