Developers have the best job in the world. We get to play around to find solutions for problems we often created by ourselves. Usually, finding a solution is easy. Finding the best is often impossible. Yet I find myself in the situation of doing the latter. And that's happening not only when coding or debugging. Planning whole projects becomes a Herculean task destined to fail. I know that "perfect is the enemy of good," but why can't I stop being a perfectionist?
High Standards and Ambitions
I believe a vast portion of my perfectionism stems from the high standards and ambitions I have set for myself. Before I start a project, I picture it in a finished, polished state. My goal then becomes to achieve this state, and that leaves no room for blemishes.
Aware of that, I can force myself to live more by the "80-20" rule—if the solution is good enough, I move on. However, finding the balance between satisfying my high standards and not getting frustrated when I don't make progress is something I will continue to learn to get better.
Fear of Judgment
The less bright side of having high ambitions is that someone criticising your work, easily shatters them. Honestly, I experience this fear part of my strive for perfectionism, even if it hides behind the curtains of my ambitions. In the end, perfectionism is a way of reducing the risk of judgment, right?
I specifically see this fear creeping out of its shadows when I work on the design and layout of a program. Tweaking colours, or placements of buttons, is an essential part of UI/UX design. However, when you think about it rationally, it is almost impossible to please everyone. Focusing on a (hypothetical) target group helped me finish the work efficiently and move on to other tasks.
Emotional Attachment to My Projects
Lastly, I deeply care for the projects I call my own. Often, I refer to them as my "babies." Feeling emotionally attached to coding projects, art I make, or songs I write just comes naturally to me. After all, it is also the driving thrust which gets me going all in on a project. I wouldn't want to miss that drive.
That is the most granular aspect of perfectionism to dissect. Without the emotional investment, I would not care to make progress. I need that to thrive, which makes it so tricky. Keeping the emotional investment high while trying to be less dependent on it may be the most difficult part.
Overcoming Perfectionism
As funny as it may sound, I started to set boundaries with my projects. That way, I could get a healthy distance between the success of the projects and me, helping to keep the emotional attachment high while being less dependent on a perfect outcome.
Also, being a very chaotic person, this distance helps me set clear goals, e.g., features I want to implement in a day or a week. Having smaller goals in mind is a fantastic tactic when you have a mountain of work in front of you.
Lastly, I found public commitment to work quite well for me. Essentially, that means you tell your family or friends your plans for a project. "Announcing" your goals incentivises you to stick to your original schedule.
Closing Thoughts
Apart from being a software developer, I like to call myself a student, an entrepreneur, or a musician. Though to be fair, only the first one really is true. Eventually, I see myself founding a start-up and getting serious about my music.
However, to achieve that, I need to start working for it, which is harder than one may think. I am a perfectionist, and I hate everything about it. I feel passionate yet overwhelmed, only thinking about a new project. Now, I have many unfinished apps, songs, or business ideas on my hard drive (or cloud). Am I the only one who feels like that?
Anyway, I am here to change that. For some time now, I have been working on an idea, a web app, which I want to get serious about. I've seen many blog posts and vlogs from developers who share stories about projects and even companies they build. So, here I am, trying my fair shot. Now, that's a big public commitment. ;)
The idea is simple: I share my experiences developing this idea from concept to code to product.
I hope you'll like it and hear you soon!