When Good is Enough (and when it isn’t)

It’s a constant debate that we fight on a daily basis, is the work we’ve completed good enough, or is important enough to spend an extra half day or day(s) perfecting.

Often times we’re forced to make sacrifices, but when is it the right time to push back or accept defeat?

Obviously what follows here are my own opinions but I’m a firm believer that a well executed plan only 80% complete, is worth leaps and bounds more than a flawed plan 100% complete.

 

A few questions I commonly ask myself:

 

There are plenty more, but in general, I err on the side of trying to get releases out the door.  If we spend 20 calendar days in a release (4 work weeks), up to 6 of those will be spent either performing non-automated regression tests (don’t worry, we have automated tests as well) or fixing post code-complete deficiencies. 

Test cases are a given.  If you’re working Java or any other programming language with tooling like JUnit or TestNG, I really see no excuse not to use it.  If nothing else, it’s a good safety net if you ever need to refactor a particular area of the code base. 

 

If I had to pick a guiding principle, it would be:  Get it in, Make it right, Make it fast. 


**Get it in *because you need the feedback.*

**Make it right *because that’s what we’re paid to do and stakeholders expect it.*

**Make it fast *because it’s no fun staying up until 2:00am trying to debug performance problems on a customers live system.*