Thinking big by thinking small
I had a professor once (actually the finest I’ve ever known) who insisted to his students that “programming is all about the little details”. In my view, what he meant by this is that regardless of the project, methodology, people involved, or what-have-you, if the software doesn’t do what it’s supposed to do, it’s most likely the result of someone, somewhere, failing to account for a few little details. Not that those few details are necessarily easy or hard to identify (or rectify)—the point is that tiny discrepancies in code can have tremendous impact.
Case in point: our ship date is nigh, looming upon us like a brick wall in the middle of an interstate. We’re about ready to let this thing out the door, when we discover oops, that module X that we built two months ago, the one that we’ve had the requirements signed off on three separate times, isn’t quite right. Essentially,
Behavior ‘foo’ should result when incoming_date is > existing_date
should read:
Behavior ‘foo’ should result when incoming_date is >= existing_date
There are some additional details which only add to the headache, but I’ll spare you those.