Why it's okay to avoid perfect in software development
Did you know that the world's most famous painting isn't actually finished? Or at least it wasn't finished in the eyes of its creator, Leonardo da Vinci?
He began painting the Mona Lisa in 1503. In 1517 he was still refining it. In 1519, when Leonardo died, the portrait was still in his studio. It was never shipped to Mr Giocondo, the subject's husband who had commissioned the painting. Leonardo is said to have regretted never completing a single painting in his lifetime.
At this point you may be struggling to see the relevance of this to software development. Well, it's relevant because there's a well-known maxim in the Agile software development world. It holds that perfect is the enemy of done. In other words, if like Leonardo you aim for your software to be perfect, it'll never be finished and it will never get shipped. You'll never be done developing it.
Rather than hold out for perfect, what software developers have to do is ship things that are good enough. However, they do so in the knowledge that they will have the opportunity to improve it continuous enhancement is now part of the process.
They need to accept that perfect is an unachievable goal because code is now so complex it can never be entirely flawless. And they need to accept that that's okay because what perfect is changes over time in any case.
Better is best
We also need to consider the purpose of software. It's generally being developed in a business context. If you accept that business is largely a zero-sum game played in a closed system, you absolutely don't need software to be perfect, or even close. It's sufficient just to be better than your competitors. Better will absolutely be good enough.
So how do we get better? CIO's can help by providing the tools, processes and technologies that will help their people be more competitive. That's actually management's job in any sphere. To provide the guidance, boundaries and tools and then get out of the way and let people get on with it.
Also remember that better is a moving target. It calls for continuous improvement. It's about incremental gains and being better than you were last week, rather than an obsession with achieving perfection next week or next year. Because perfect, like tomorrow, never comes.
Competition is the spur
You also get to better by using the spur of competition. It can be competition from within. People learn from those around them who can challenge and push them. So it's important that people lift their heads up and see what their colleagues are up to.
There's also competition from outside. Businesses need to pay attention to what their competitors are doing. We take that seriously at Adaptavist. We look hard at the competition and measure ourselves against them. We make sure our teams know who they're up against and what they're producing, and that spurs people on.
Also we don't settle for industry best practice. If everyone is doing it, you have no differentiation and no competitive advantage. Competitors show you the benchmark of what it is that you need to do to get beyond the standard and excel. Better comes from measuring yourself against the competition and striving to improve on what you had yesterday. Striving for perfection is the preserve of artistic geniuses. In the context of software development here and now, better is perfectly good.
This article originally appeared on LinkedIn Pulse.