The Enemy of Good
By Michael Renken
There’s a common saying that “Perfect is the enemy of good.” In our modern society, we often focus on perfection - the model on Instagram or TikTok or some Hollywood hunk in the latest movie. As such, we’ve conditioned ourselves to only accept - or at least primarily lean toward - the “perfect” solution rather than the “good” solution. In doing so, we almost obsessively spend as much money on whatever the latest product is to bring our lives in line with the lives that we see through our digital windows. But should perfection even be the goal?
There’s always a perfect solution. However, that perfect solution is constantly changing with time. We have no idea when a new feature request will come in that blows our entire system architecture out of the water - or at least a significant portion of it. So, why would we spend an order of magnitude more time on the most performant solution when we could simply settle for the easier one that requires less code and less maintenance and better satisfies our immediate needs?
When Europeans first settled the Americas and started building their dwellings in the as-yet-untapped frontiers, they weren’t thinking about how they were going to keep their houses warm or how to have running water. It just didn’t make sense at the time. This isn’t to say that such technolgies didn’t exist. They just weren’t important. If your primary concern is to escape the rain and the cold, you simply don’t care about lesser needs. This doesn’t mean that you’ll never address those needs. It simply means that you need a now solution.
The basic idea behind evolution is that, through random mutation and events outside of our control, the mutations that make us “fit” better to our environments get propaged, and the ones that don’t fall away. A single-celled organism didn’t just divide and produce a butterfly. The butterfly evolved incrementally over hundreds of millions of years - producing a highly specialized organism with a near-perfect purpose.
A fledgeling software project is like that single-celled organism. It contains unlimited potential, but that potential isn’t yet fully known. It’s only through development and interactions with nature that its purpose becomes known to us. In that way, we aren’t developing software. We’re discovering it - just like Michelangelo and his block of marble.
Generally, software engineers and human beings as a whole don’t like having their agency taken away. We’d like to believe that we primarily shape the world around us. I guess this can be a comfort that we don’t simply exist at the whim of the universe. But the truth, as far as I can tell it, is that we’re agents of the universe - slowly working to bring about a future that we cannot yet comprehend but one that’s far greater than any we could.