A naive take is that good enough gets the job done. I’d agree. But what job? What’s the goal? What should it entail?
Picture this: you’re writing a program to solve the problem of printing invoices. It’s good enough when you can collect invoice data and output a printed page with the correct information. And this solution may be hand-coded to perfection for this specific task.
Now a customer wants you to generate digital invoices that may be sent by email.
The initial architecture, optimized and perfected as it was for printing on paper, now require great effort to alter. Shortcuts were taken and designs were simple. Was the initial solution good enough?
One argument states that it was. For the problem at hand it was the optimal solution. You only needed prints. Anything else could be a different product, or something that was impossible during the first implementation.
Another argument is that the solution wasn’t good enough. Why not? While it solved the business case, it failed to prepare for the future. Extraneous effort to compartmentalize and redesign costs a lot.
My example is rudimentary to illustrate the idea.
Framework or language choice is another topic of what’s good enough. In my day-to-day, a JavaScript framework could never be good enough while C++ is, even when Rust is right there. C++ started as good enough but now it is deemed dangerous. We keep at it, because fixing what’s there is good enough. A rewrite may not be.
Now, I’m not telling you to gain foresight. That’s currently impossible. But think a step ahead and ideate possible futures because that helps your design. You won’t know the exact knob to turn but you may figure out what modules to make tweakable.
When it comes down to it, all work can be loaded with disclaimers. You limit your work in one way or another because you cannot address everything. What matters is the precision with which you solve one specific detail and all you need for that is judgement.
This post is good enough today but as I learn and practice it won’t be tomorrow. Yet, it’s good enough for me to publish. Sometimes good enough is good enough. Carry good judgement.
Leave a Reply