Being a perfectionist can kill your productivity, even in the long run. Have you ever been bogged down so deep trying to perfect everything that you never finish anything? There is a solution! As a perfectionist, this post is going to apply as much to me as it will for some of you.
The Perfectionist Mindset
I’m a perfectionist. I like to get things right the first time. In some cases, this is a really good quality. In other cases, it’s terrible.
When you are a perfectionist, your finished task or product is generally very high quality. In my experience, unfortunately, it also means a lot of things never get done. Rather than focusing on just finishing, you try to get the minutiae perfect. After the thousandth perfection, you finally get tired and give up.
Let’s think about this differently. Perfection doesn’t have to come at a high up-front cost. It can come in bite-sized chunks.
Introducing the idea of a process.
Why Do I Need Process?
I have worked in several places that have no process for developing, testing, and releasing software. Although at first this might work, over time this wrecks havoc.
Poor quality releases, lots of rework, buggy code, and no standard way for doing things really slows down the company.
So the solution is to come up with a plan to fix it! The team gets together and starts working on a process, only to find out it will take forever to implement. “There’s no way we will ever have time for this!” Oh, the dreaded ‘not enough time’ problem. If I’ve heard it once, I’ve heard it a thousand times.
The conclusion is to not do anything differently.
Well that sucks! How are you ever going to get better?
Rather than focusing on the perfect process, work on simply having one.
When you need to release code, make that a process. If there are five different ways of doing it, choose one.
But… But… It’s Not Perfect!
That’s correct! It’s not! Instead, it is repeatable. And that is the first step towards working towards perfection.
Once the process is repeatable, that means it is the same every time. This is EXTREMELY important!
If it is repeatable, that means it is something that can reliably be improved upon.
For example, suppose you release code through a series of 5 manual steps. Before the process, you had no steps. It was chaos every time.
Having 5 manual steps means it is not as much chaos. It also means you could potentially automate one of those steps. Bravo! You are closer to perfection!
Perhaps one of those steps can be replaced with a better step. Great! Change the process and let everyone know about it.
Over time, even with a very bad process, you can improve upon it and replace different steps to make it a great process.
I probably don’t have to say this for the perfectionists – but don’t accept a bad process without trying to improve more on it.
If something is annoying, time-consuming, or very mundane/repeatable, try to make it better! Perhaps you can eliminate or automate some steps.
Work on making the process better. Over time, it will become something you are proud of.
It all starts with defining that first process. You can only improve on something that you can repeatably reproduce. Once you can reliably do it over and over, you can reliably improve it.
Applying This to Software Automation
In order to automate something, you must have a process. Or, rather, you will be defining a process as you automate it.
Once you have that initial automation, you can once again change different pieces of it to make it more efficient.
You just can’t let perfection stand in the way of getting nothing done. Those who attempt to be perfect at the very beginning may have the solution months too late. By that time, the business may go under due to not delivering in time.
This is one reason I have to remind myself so often at code I look at that I deem to have poor quality. The initial implementation earns the business revenue. If it’s done perfectly up front and still earns revenue, that is the best-case scenario. But a lot of times the software is rushed.
You just have to make sure that time gets invested into bettering that process and the code infrastructure. Because that bread-winner will soon become the black-hole time sink if not maintained properly.
It’s Your Turn!
It doesn’t have to be software. It can be something completely different.
Don’t let perfection be the enemy of finishing.
What process are you going to start doing that you can improve over time?