Why progress matters more than perfection

  • 002_Tim.width-800
    Tim Pitcaithly
plant

If you’re working on a custom software project – or indeed any creative project – and you’re struggling to get to the point where you feel willing to put something out there, this is for you.

Almost all of us can relate to chasing perfection in some area of our lives. That drive to keep improving isn't a bad thing, but it can hold us back from releasing our creations to the world. For example, at Smudge, we often have to fight our urge to keep iterating, to build just one more feature before we launch. That impulse is driven by the fear that if we release software before it’s 100% ready, people aren’t going to use it. But that isn’t true. If a software tool solves a problem, it's okay for it not to be perfect in that first release.

Today, my goal is to convince you that putting your creation out there before it’s perfect is better than holding back and waiting until you're done. Because if you chase your standards of perfection, there’s a good chance you're never going to be done.

Perfectionism feels personal

From a young age, I became fixated on the idea I had to be better. I was bullied at school, so became obsessed with improving my grades in the hope top marks would make me cool.

My perfectionism might be related to pushing myself to mature too young. The night before the first Canterbury earthquake, I went to my first school dance. Five hours later the quakes started. And I remember waking up and thinking, that was fun last night, but that’s done now. I was 15. Me and my friends talk about how we felt the responsibility to grow up overnight because we didn’t want to add more stress to our parents' plates.

Perfectionism never lets up

In my reading at university, I came across the story of Sisyphus – a king who cheated death and was condemned by the gods to roll a boulder uphill as punishment for eternity. Every time he got to the top of the hill, the boulder rolled back down, and he had to start again.

The philosopher and author Camus invited us to imagine Sisyphus happy. That annoyed me. How could a person condemned to do that endless, repetitive task accept his lot? Why didn’t he walk around the mountain to try and see if there was an easier route? Why didn’t he try to figure out a way to get his rock up the hill in half the time? He might be condemned by the gods to do this task, but surely, he could improve the way he did it.

Today, I can imagine Sisyphus finding contentment. But at the time, I was constantly analysing myself, looking for weaknesses and areas to improve. Happiness in imperfection was unimaginable. I thought if I kept looking, I’d find the puzzle piece I was missing, and I’d be complete. It wasn't until I got older that I realised I kept moving the goal posts.

We don’t need just one more tower to be good enough

I see my own experience mirrored in the projects we work on at Smudge. At some point or another, almost every project has felt like Gaudí’s Sagrada Familia. If we delivered just one more feature or added a bit more functionality, then it would be complete.

I first heard of the Sagrada Familia when I was about 14, and ever since then, every time I read about it, it’s always about two years away from being done. But it’s already phenomenal. No one’s walking around going, “Yeah, that Sagrada Familia – it’s alright now, but finish that third spire and it’ll be chef's kiss. I'm going to wait until that third tower is done before I go visit, because they haven’t really put in enough effort over the last 120 years.”

The urge for perfection is a natural part of software development – and personal growth. When we start a project, possibilities can feel endless. We might have a good idea of the problem we want to solve, but how we do that isn’t always clear. It often requires trial and error. I’ve worked on numerous projects where we weren’t sure if what we were seeking to do was technically feasible. Then we’d hit a breakthrough and instead of taking a moment to celebrate progress, we’d immediately leap into the next challenge.

The importance of trusting in ready enough

We want to build thoughtful software solutions. But continual refinement becomes dangerous when we forget why we’re building, or who we’re building for. When we lose sight of those foundations it’s easy to fall into the trap of thinking one last feature will get customers over the line, without knowing if that’s true. We’re no longer solving problems – we’re making assumptions. And if we don’t test those assumptions, we delay making a difference.

The hardest part of any creative project is taking the risk of putting something out there when it’s ready enough. It might not meet your standard of perfection, but if it achieves the goal you set out to achieve it’s ready to be released.

We end up blocking value from being realised if we wait for perfection instead of trusting in good enough. When we hold back on releasing a tool that’s perfectly adequate, we hold back the people we’re trying to help. And there’s a real cost in that. Because somewhere out there is someone who could benefit from what’s already working in that tool.

Perfectionism comes with good intentions

But I’ve come to learn – personally and professionally – that knowing when not to change is as important than knowing when to improve.

Perfection became a constantly moving goal and I became trapped in a cycle of not feeling good enough. One challenge for us, as we design and develop custom software, is separating the solution from ourselves. It’s easy to take criticism personally. Fear of our work being found wanting can stop us from letting go. We can get stuck in a cycle of continually iterating and improving, where a project never feels complete enough to release.

Life has taught me to be comfortable with being incomplete because sometimes done is what creates impact. Sometimes the most generous thing we can do is let go of our ego, stop holding value hostage to our own idea of perfection, and let the work stand.