Building a Product: Perfection vs. Progress
Startup companies face many challenges: Chief among them is how to get product out the door and into the hands of customers. A great debate in many companies (large and small) is deciding "When is ‘Good’ good enough?" As simple as this may seem, it is actually a very difficult question. When do you decide that what you are working on is good enough to call it done? This is a significant problem, in that getting it wrong can result in increased costs and delayed schedule on one side, and product failure on the other. One phrase that I heard long ago, and I must admit took me a little bit of time to warm up to is this:
“Perfection is the enemy of progress.”
To get to the heart of what this means, we can look at some experiences in my recent projects:
I have software engineers working for me that love their craft. They enjoy the art and science of what they do. This is usually fantastic, but needs to be monitored. There have been times when a schedule has slipped and when a delivery date has been pushed back — things that I would prefer to avoid. On close inspection, one reason for at least a couple instances that I can recall was because of the pursuit of perfection amongst the engineers. When you are writing computer code, or building something with your hands, or producing anything that you care about, it is natural to dig deep into the art of it and strive to express yourself through making it as perfect as possible. There is a balance between this and just getting the work done.
The conversation that I often have with my team usually ends with the following: “Will rewriting that section of code and doing the changes that you propose make the company more money?” Sometimes the answer is that it will keep us from having problems down the road – which can be quantified as the avoidance of future costs. On the other hand, the more frequent answer is a simple “no”. In those cases, I will ask for the code to be made “good enough” and to move on.Continued on the next page