Blog
Software Engineering: Eventual Perfection
I am a Principal Engineer at Articulate, and I’ve been spending a lot of time refining how I think about software engineering in practice.
One topic that is important to me right now is the concept of “iterative design”. Most folks in the software engineering industry have heard of the concept of eventual consistency. I would like to coin a new phrase that mirrors that idea:
Eventual Perfection - Perfection is a direction, not a destination.
What is Eventual Perfection?
So what is eventual perfection? It is the idea that you should not try to make your product “perfect” before you get it into the hands of your customers. Perfection is not something you define in isolation. It emerges through real use. Your customers are the true bar for what is perfect. What we think is perfect and what our customers think is perfect often differ.
If our vision of perfect is so different, how do we ensure we are giving our customers what they want? You iterate and listen to your customers!
There is no final state where a product becomes perfect. There is only continuous movement in the right direction.
Eventual Perfection and MVP
You have likely also heard of MVP, Minimum Viable Product. The bare minimum needed to ship a product that customers will buy or use. They may not love it yet, but they care enough to use it. At this point, you need feedback from your customers.
Your customers will tell you very clearly, and usually loudly, what to build next! Every time we add, fix, or tweak something based on customer feedback, we move closer to our customers’ view of perfection. Just like an async, eventually consistent system, this workflow moves us closer over time to what our customers actually need, without ever truly finishing.
This also helps us focus on what our customers truly want and deliver the best product to them as efficiently as possible.
What About Market Disruption?
What happens when you’re trying to disrupt a market? Your customers may not truly know what they want. This is still entirely compatible with iterative design. We still need to focus on MVP here. Build the minimum needed to test your theories and disrupt the market. Get the product in the hands of customers early, and iterate.
When Customer Requests Feel Wrong
What if my customers are asking for things that seem wrong?
When this happens, I question myself, not the customers. I ask myself questions like:
- How strong is this signal?
- How many customers are asking?
- How urgent does it sound?
- Is this a must-have or a nice-to-have?
Maybe I need to ask my customers directly how important it is to them. It is also important not to get cornered by a single very vocal customer. Often customers are describing a problem, not a solution. The request itself may be wrong, while the underlying pain is real. My job is to understand the intent behind the request, not to blindly implement the first idea that surfaces.
Rather than assume they do not really need it, I need to get closer to them, understand why they are asking, and question my own assumptions about how customers use the product. This might actually be the most important feature we ever add. Or it might be that we need to simply tweak a workflow to make the feature they are asking for completely redundant. You won’t know without talking to your customers.
Closing Thoughts
Eventual perfection requires humility. It requires accepting that our first ideas are incomplete and that customers, taken together, are better judges of value than we are alone.
Our job is not to ship perfection. It is to build systems, teams, and feedback loops that allow us to keep moving toward it, knowing we will never fully arrive.
Perfection is not something we achieve. It is something we continually pursue.