Alexey Chernyshov

In search of perfect code

Perfectionism

That’s not the usual developer’s article. It might be more chaotic than expected, but still, I’d like to share.

I’m way more familiar with perfectionism than I’d like to. First and foremost, I’m a struggling perfectionist myself, and only luck and a little bit of desire to perform gets me out of this rut. Second, lately, I hear a lot about perfectionism and see people admiring and respecting it.

So, what is perfectionism on the surface? Wiki suggests it is a ‘personality style characterized by a person’s concern with striving for flawlessness and perfection and is accompanied by critical self-evaluations and concerns regarding others’ evaluations. Perfectionists strain compulsively and unceasingly toward unattainable goals and measure their self-worth by productivity and accomplishment. Pressuring oneself to achieve unrealistic goals inevitably sets the person up for disappointment. Perfectionists tend to be harsh critics of themselves when they fail to meet their expectations.’

Perfectionism is not the same as striving for quality. The latter is all about the product you deliver, whether it is a painting, a computer program, or a speech. In contrast, perfectionism is all about the creator. Perfectionism is designed to protect ourselves from external criticism. Perfectionism is a fear of making mistakes, being imperfect, flawed, open and vulnerable to others’ opinions.

Sometimes being a perfectionist is even romanticized. Some people see it as ‘I’m striving to do so well, so I can’t stand any signs of imperfection’. And you know what? They can’t stand anything. They are struggling to finish even the simplest things, they can’t start a drawing because the first line is most likely bound to be flawed, and the only perfect thing is a clear sheet of paper.

It becomes even more fearful if a perfectionist is a manager not being aware of their traits and pressing their peers to do everything perfectly. It gets even worse if the person is not familiar with soft skills basics like diplomacy or conflict management. In this case, everything people do gets blistered; thus, they are not motivated to do good because either way, the one in charge will criticize them. Therefore, everything goes downhill: the manager wants the job done perfectly and gets mad at their team who are upset and not motivated to do good.

But maybe this approach of creating smaller numbers of perfect things can lead to a better result overall? Perhaps if we learn to create only perfect things, we can learn to make ideal stuff? Doubt it. There’s an anecdote I’d like to share on the matter.

Jerry Uelsmann, a professor at the University of Florida, splits a student group into two. The first group, the ‘quality group,’ is allowed to bring just a single photo during the semester, but it should be as good as possible; their final grade will depend on its quality. The grades of students from the ‘quantity group’, on the other hand, depend on the number of photos they bring.

It’s no surprise the best photos came from the ‘quantity’ group. During the semester, students took many photos, experimented with various settings and environments, made mistakes, fixed them, and developed their skills based on the whole process. Meanwhile, the second group was paralyzed talking about what quality was and ended up with mediocre photos and no experience.

The same approach and ideas could be applied to many things in life. Trial and error is a powerful tool to both learn and execute. I can remember, for example, my fear of starting a job task because I thought I could take the wrong path. So, I procrastinated until the very last moment, ran out of time, pulled all-nighters, and so on. Sure thing, the quality was way worse than if I took any steps towards the goal; even if they were wrong, I could’ve fixed them later.

Then at some point, I decided to try to act instead of thinking. I was not against thinking at all, but I noticed how my strive for a perfect move often paralyzed me. And I can tell the approach helped me a lot, especially with difficult bugs where it wasn’t obvious where to start. When I felt stuck, I tried to look for the lost keys not in the place they could’ve been, but where the light was. And even though it usually sounds like an awful idea, it netted me a lot more information than I could expect and eventually got these bugs solved. And retrospectively, I can say that while searching in a knowingly wrong place wasn’t the right move for the factual investigation, it was the right one for me to start moving forward and gather a lot of knowledge.

I wasn’t the fastest bug solver. I wasn’t a perfect one. But this approach let me solve cases where many other people didn’t even know where to start.

Only practice and repetition make perfect. So, if you are learning or practicing something, I’d advise against ‘striving for perfection.’ Make bad things, write mediocre articles, speak butchered languages—and if you’re interested in getting better, repetition would help a lot more than trying to only do good.

Another idea I can share is to acknowledge there are no perfect things. If you’re struggling to start or finish a project because you know it won’t be perfect, try lowering the bar. It doesn’t sound simple, but the idea behind it is straightforward: done is way better than perfect. So, ask yourself, if it can’t be 100% good, can it be 60%? And if yes, it might be the new bar. This idea of 60% might help both starting and finishing: start, knowing you’re aiming at 60% and finish when it’s 60% good. You can adjust your values for your peace of mind and watch how your 60% becomes better and better with time.

And one more thing. Deadlines and limitations help a lot with finishing. For example, if I commit to publish an article on Monday with the quality I have at the moment, it frees me from this ‘but it isn’t perfect!’ idea simply because it was the rule from the beginning. The same might be applied to making a photo of an object: you commit to taking like five shots, then select the best one and proceed with it rather than spending 1000 shots trying to find the perfect one. This, of course, applies to cases when one wants something to be finished.

Thus, the enemy is beatable. To an extent.

Am I healed from perfectionism? Nope, I’m still terrified of my own mistakes. But I’ve started to value progress over perfection, and that keeps me going.