Both agile and lean methodologies advocate only doing what is necessary at a specific time to get the job done. I have even heard it quoted as “near enough is good enough” – with an implied “for now”.
I can understand why. There are very few things more debilitating than rampant perfectionism. Most good developers who take pride in their code fall for this disease sometimes or sometimes regularly.
And it sneaks up on you. I had uSDLC where I wanted – working on the Internet under Jetty. I had a development plan than optimised the progress with a first goal of having it ready for general availability. As I planned for uSDLC to have a polyglot nature I took some time to integrate Scala into what is primarily a Groovy code-base. Next thing I know, I am in so deep is has taken me the better part of a month to get the system back to where I was before.
Is it better? Yes. Was it worth the delay? No. Damn.
There is no silver bullet for this disease. We want our code to stand the tests of time. Near enough is not good enough. How do we monitor ourselves when working alone? Use plans, schedule and time-boxing.