Good enough software
Andy Hunt and Dave Thomas talk about ‘Good Enough Software’’ in The Pragmatic Programmer: From Journeyman to Master. Specifically, they stress the importance of having a definition of ‘Good Enough’ for any given piece of work that is embarked upon. For instance, this definition will vary wildly when developing an automatic pilot system vs coding a throw away script to screen-scrape a fraternity website’s member listing.
Thinking many months later around the subject, I thought it might be useful at work to have a sliding scale drawn up that defines pre-packaged “good enough” standards. These would contribute or guide the definition of done and might look something like:
- NASA:
- The product is fully tested, including unit, integration, system, random and load testing + 3 rounds of customer QA
- The front-end meets usability standards x, y and z
- The front-end meets accessibility standards x, y and z
- All code meets our code formatting guidelines
- A performance SLA is written up and the product surpasses it by x neurons
- Technical, client and sales documentation are present and meet our doc standards…
- etc.
- ONE OFF SCRIPT
- It should work with the right input
- It should not fail gracefully (we don’t have time)
- It should not check for bad input (we don’t have time)
- etc.
Clearly, there would be items between these two extremes.
Has anyone done this or something similar? I’m not sure there is a huge benefit to this, but having a definition of ‘Good enough’ per programming task or project is definitely a win. Thoughts?