Last night of the iteration, we are trying to cut a good build. This morning’s scrum featured a flustered QA engineer who was having trouble completing her tests due to “corrupted data”. Developers look at each other and think, “rebuild the VM”, but it really turned out to be faulty (and inconsistent) assumptions, on all of our parts.
The root cause of all our problems tonight, though, dates back to the removal of a database constraint that supported an assumption that was not removed, about three iterations ago. (A questionable design decision, IMHO.) This iteration, we tried to add a new constraint that enforced our (now refined) assumption in a different way. We failed. The assumption had been broken in several places, including our test data. Now, as we are trying to go gold, we have found that we need to revert the constraints and deal with the messy data, just so that our test suite will continue to work.
Now, in theory, in the field, nobody should be breaking things. But we are still allowing them to, so somebody will, and it will look bad for us. We are stuck between a rock and a hard place now. Thirty minutes spent coming up with a better design three iterations ago would have had us at home with our wives and a beer three or four hours ago.