The Milliways Defect

The Milliways Defect

Defects in programs are insidious. They don't have a definitive beginning or end. By the time they are found the mechanism by which they were created has been long lost. As such, we as humans have a tendency to want to pinpoint one specific thing that went wrong in the process (often with name calling and pointed fingers) rather then accept that the process itself, and the mentality around it, is just as likely to be the problem.

Thus I present, in the silliest of fashions, the Milliways Defect:

  1. The design was misunderstood in implementation. This is of course impossible as the design documents were perfectly clear with no room for interpretation.

  2. The integrated system passed in bad data. This is of course impossible as the data contract makes it impossible for the system to send bad data.

  3. The bad data was accepted into the system and created an error. This is of course impossible as our system is designed to reject bad data and those safeguards are never turned off.

  4. No error log was generated to bring attention to this defect. This is of course impossible as every block of code is properly surrounded with try/catch and incorporates robust error handling at every step of the workflow.

  5. The defect was caught by someone but was mistaken for a feature. This is of course impossible as everyone attends code reviews and we have extensive documentation.

  6. The defect slipped past QA and made it into production code. This is of course impossible as QA thoroughly tests every inch of the system and is always well resourced.

If you've done six impossible things this morning, why not round it off with breakfast at Milliways, the Restaurant at the End of the Universe?

Manual vs Automated Testing

Manual vs Automated Testing