My problem is that I'm a perfectionist -- Everbody

As I finished writing the title for this post I thought about quitting. I didn't think it was good and told myself that this is off to a bad start and it'll only get worse as I write more words. There is always an easy fallback to get out of doing hard work without feeling bad about it: "I'm a perfectionist, and I can't possibly achieve perfection in this project so I'm going to quit altogether".

What was really going on here is that I realized that it's going to be harder than what I imagined it would be, and I just didn't want to do the work. Just being lazy. Laziness is a simplification here and in this post I'll go over all the layers that I've been able to debug in myself.

False dichotomies

I often notice that before I throw my hands in the air and claim perfectionism I present myself with a dichotomy: "It's either that I finish this work and hit all my goals or it's not valuable to anyone". Here are some examples:

The truth is that most things are still valuable even in there imperfect or unfinished form. For example, it's hard to argue with the effectiveness of the popular Minimum Viable Product approach to product development. You're able to deliver value to people and at the same time test and iterate on your ideas.

Back to our examples, going to the gym at any time no matter what the situation is will be a categorically positive thing to do. And writing a blog post doesn't strictly depend on your blog's design (I almost fell for this one the other day).

Decision fatigue

Another thing that I've detected in myself that would make me fallback on the "I'm a perfectionist" excuse is decision fatigue. You can get tired from just making decisions if you had to do so many of them while working on something.

Say for example you want to tidy up your apartment. Since this is such a general goal, you'll be faced with so many questions along the way: "Should I fold my clothes like I always do or is it time reorganize my closet? Should I throw out the books I'm not using? Should I maybe give them away?" and so on. Very soon you'll be tired just from answering these questions without even doing much work. Then you'll see the nice and cozy excuse waiting for you: "I'm such a perfectionist I can't even tidy up my room!".

Embarrassment

Putting yourself and your work in the public requires a great deal of courage. For probably some evolutionary survival reasons we tend to think about all the things that could go wrong. One of the strongest negative emotions that I get when I'm not certain about the quality of my work is the feeling of being embarrassed by it. That people much smarter than me will look at it and laugh about how bad it is. That's almost never the case. I've written some really silly posts and code and it rarely gets ridiculed. Even when it does happen, it's usually by people that I don't necessarily respect or look up to (see my post about on the Stoic of Open Source for an example of this). That is not to say that everything I do is perfect, in fact, I get really awesome constructive feedback every time I release something.

Another tactic for avoiding embarrassment is not to over-promise. I'd go as far as to say you should not talk about your ideas before verifying that they work (see my post about idea generation). Which reminds me of what Tom my manager (who manages projects like React and Flow at Facebook) likes to say: "under-promise, over-deliver".

Confidence

If you aspire to do quality work you need to be able to trust in your abilities. Or at least that you would try really hard. Going back to the meta-example of writing this post. If I were confident of my abilities to overcome any hardship that started with the title, I would keep going while knowing that I will rewrite this as many time as it takes to get it to good enough state.

So I would need to be confident of my ability to get close to the goal, and in my ability to persevere and work hard enough to get there.

Curing perfectionism

Recognizing these patterns in our behavior is a good first step in getting over them. I had a lot of success with -- what I later discovered to be -- cognitive behavioral therapy. This is a good introduction to the subject but we're mainly interested in the following methods:

Forced Activity is when you recognize a vicious cycle in your behavior and force yourself out of it. It's forced because you need to swim against the current in order to break out. For example, if you noticed that you always start projects but quit and claim perfectionism, then try to start the smallest project possible that is actually perfectible and finish it. If you have too many unread books and you stopped reading because you can't possibly finish all the books then go throw them out (or delete everything on your kindle). Even if the action is a bit radical, do it to get you out of the cycle.

Exposure is when you tackle psychological pain by leaning into it. Start small with something you fear and do more and more. If, for example, you're afraid of publishing code then start by publishing a gist of a program that does something useful and share it. Then slowly work your way up to sharing a library and finally to contributing to large open source projects.

Up until last year, I had a crippling fear of public speaking and this method worked really well for me. Although I've spoken a few times before, every time I spoke the fear was worse than the one before. However, after committing to the Exposure method I started small by speaking at a friendly and welcoming meetup in NYC called BrooklynJS. And then worked my way towards a larger conference and spoke at EmpireJS. I then started really leaning into it and even performed at a story telling show. And finally completely improvised a couple of meetup talks. I'm now almost fearless when it comes to public speaking.

In conclusion I think that perfectionism is mostly a thin veil hiding a multitude of insecurities, fears, and logical fallacies. And it's something we need to face in order to reach self-actualization.


Thanks to Haya Odeh for reviewing this post and providing feedback, examples, and refining many of the ideas mentioned here.