Perfection is Overrated: Why Done is Better than Perfect

You may have heard the phrase “Perfection is the enemy of good”. I believe this to be very true, with obvious exceptions.

Everyone is always striving to make their code perfect. You want to account for all potential scenarios. You want to include every possible feature before you release it to your users. And you fear that if something is missing or not 100 percent efficient, then you’ve failed. I’m here to tell you that, for the most part, this mindset is not helping your end users in the long run.

Obviously, you need to ensure your code is as accurate as possible, especially in life-critical situations. If your code could hurt someone, you should make sure it’s as accurate as possible. But for most tools, if you account for the most common scenarios and have a solid CI/CD pipeline that can iterate quickly and make updates when issues arise, then I believe it’s better to release quickly, rather than spend weeks trying to account for every possible scenario, regardless of how unlikely it is.

Additionally, it’s better to release a few key features to start gathering user feedback on the tool. Why spend months developing every possible feature, only to find that users don’t want them? Or why spend so much time on niche features when users would be happy with a few core features that work well from the start, and then receive new updates every few weeks as more functionality is added?

For instance, my team recently began developing a tool that collects a wealth of data from every SQL server in our environment. We want to capture numerous data points, all in a central location for easy tracking, reporting, and alerting. Instead of building a tool that captures every data element we want, we’re starting with a few at the server level and a few at the database level. Over the next few months, we’ll add more data points, including those from jobs, audits, and Extended Events. This approach gets things rolling and allows us to start collecting the most important data right now, while adding more over time, rather than waiting for months to gather everything.

So, don’t let your need for perfection become the roadblock that prevents you from delivering something good that can improve over time. Have you ever found yourself in this kind of situation and debated how to handle it?

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.