Don't Let Perfectionism Hold You Back


I've been thinking a bit recently about getting things done and what holds up back. I've noticed some people seeming to take a long time to commit code to a repository or be hesitant about diving into something. I've been contemplating that and what might be causing the hesitancy. I've been there before. I've been worried about breaking things or worried I might not do well if I accept a certain item at work. As I've thought about it and my own personal journey to overcome it, I think I have one piece of advice for my former self and those in similar situations: don't let perfectionism hold you back.

The Problem with Perfectionism

There's a certain part in everyone that wants to make sure they don't look like a fool. This is a natural, defensive response to protect you form pain. It's there for good reason! But sometimes it goes to an extreme. Sometimes this part of you tells you that you can only do something if you're perfect at it (or at least very, very close). The unfortunate thing for us mortals is that we're no where near perfect. As much as we try, we still fall short. We're still not as good as we could be. Our mortal nature continually falls short of the expectation to be perfect.

So, what do we do when we know we can't be perfect? All too often we hold back. We delay. We don't accept a work item. We check and double-check and triple-check our code before we commit it just in case there's something wrong with it. We spin our wheels and, ultimately, make no progress at all. The problem with perfectionism is that it gets in the way of real progress. If you accept nothing less than perfection, then you'll never get anything done.

Being in a position where you don't get anything done isn't a desirable place to be. In the real world, we have deadlines, customers to please, stakeholders to update, tasks to do, code to write, and jobs to perform. These deadlines and tasks wait for no one. If they're not done today, they'll need to be done tomorrow along with a new set of tasks. Only accepting perfection exacerbates this problem. But there's a better way. There's a way to get things done and still do it an acceptably high level of quality.

A Lesson From Lean Agile

In Lean Agile, you are encouraged to define acceptance criteria on any work item before work is started on it. These acceptance criteria let anyone that works on it know when it's "good enough." This gives everyone a clear idea of when the item is done. Having a clear goal or finish line helps combat perfectionism. It gives you a measure to go by. Without this measure, we tend to want to "gold plate" the item we're working on by trying to make it perfect. Having a clear finish line enables us to move on once we reach it.

Overcoming Fear - The Kaizen Way

Even with well-defined acceptance criteria, we may still be hesitant to do something. We may still have an aversion to doing something we might not know how to do. When that happens, take a moment to break the problem or item down into very small chunks. Laughably small chunks. Chunks so small that you cannot possibly fail at them. For example, if you need to write the code for a user story, you could start off by finding where the existing repository is. If there is an existing repo, your next step could be to clone it. If there's no repo, you could simply create it.

Breaking down the problem into small chunks is one way to apply Kaizen to your life. Kaizen is a continuous improvement methodology that advocates very small changes. These small changes often build into very large movements in your life or in your organization. One reason why Kaizen is so effective is that there's very little risk of failure. It suggests that if you're averse to starting a new habit (eg. flossing daily), that you should break the problem down into manageable steps and proceed from there (eg. floss one tooth a day until you're consistent. Then two. Then three. etc.) While sometimes these steps are trivially small, they build up your confidence and move you towards the ultimate goal (eg. flossing daily).

... I Still Failed

Fantastic! Don't worry about it. Pick yourself up and move on. Sure you may be a little embarrassed, but no one else has really noticed. If they have, they've probably already forgotten about it. Maybe you even cost the company a little money by you're mistake. It's not the end of the world. You'll recover and you'll be even smarter and stronger in the future. Don't let your mistakes paralyze you. Learn from them and move on. Failing is a great learning experience. If you don't fail every now and then, you might not be performing as highly as you could be.

Just Do It

So, the next time you're faced with a large code review, an unknown feature, or a seemingly insurmountable task, take a moment to define the task a little better. Decide what "good enough" looks like. Make sure you have a clear picture of it so that you know when you're done. Then take another moment and break the task down into small pieces. You'll be amazed at how much easier things are to do if you take them a step at a time and how much more eager you'll be in the future to jump into new things and get things done.

Comments

Popular posts from this blog

A Common Technical Lead Pitfall

Maze Generation in JavaScript

Leadership Experiment Update 2