Overcoming Blockers: The Mental Blocker of Perfectionism

Developers often run into blockers, sometimes they’re purely technical, and sometimes they’re rooted in mindset. Early in my coding journey, while learning from tutorials or working on a solo project, I’d get about 80% finished with a project and then grow dissatisfied. I’d be unhappy with the way it looked or functioned, I would rebuild it, and still dislike it. However, when working for a company with actual deadlines and requirements, I found it easier to deliver completed projects on time. Here’s how I learned to handle the mental blockers that pop up in the learning and development process. and how I learned that overcoming blockers is not just about ignoring or suppressing them, it’s about finding the right way to resolve them.


Recognizing a Mental Blocker

Blockers can come in various shapes: technical issues like a complex bug, or mental obstacles like perfectionism and self-doubt. While technical blockers are typically solved with research, debugging, or a workaround, mental blockers can be more stubborn and elusive. In my case, I’d get discouraged whenever my project didn’t look or function exactly how I imagined. I’d start over, only to find yet another reason to keep refining. It was a cycle of never feeling satisfied, which ultimately hindered progress.

But a curious thing happened in professional settings: I could code with confidence, meet deadlines, and deliver functional products. Why? Maybe because the people in charge never asked for perfection, and I only had to focus on making it functional and practical rather than perfect. I became so familiar with working in teams that I could predict blockers in group projects and already had resolutions handy. I eventually learned to see the pattern in group work and realized that none of those group-based blockers were what held me back in my solo endeavors. That’s when I recognized I wasn’t necessarily lacking technical skills, I was wrestling with unseen mental hurdles like perfectionism that crept in when I was coding for myself. Uncovering these mental blockers and discovering both their source and solution became my next obstacle.


Asking Questions to Find Resolution

I found a set of questions that helped me move beyond the mental roadblock of perfectionism:

  • • “Does it work?” – If the code runs and solves the immediate problem, that’s already a big win.
  • • “Do I know how to explain the code to other engineers?” – Clarity in your own understanding matters more than an overly polished solution, especially if you may collaborate with others in the future.
  • • “Is it something I can update later?” – Version control and a flexible framework allow for iteration and updates. You can always refine a working product.

Once I had answers to these questions, I’d ask one more, a final question to settle it all:

  • • “Does it do the thing?”
If it did, I knew I was finished, or at least finished enough to move on. Breaking down a blocker into small, logical questions and answering each one provided a path to resolution, helped ease my conscience, and pushed the project forward.


The Resolution Beyond Unblocking

After unblocking progress, the next task was addressing whatever had caused the blocker in the first place. I did this by acknowledging the knawing desire for improvement and perfection by creating issues on my personal GitHub repositories whenever I noticed things I wanted to tweak or improve. This way, I could still satisfy my desire for perfection but turn it into a manageable to-do list, rather than an unproductive emotional spiral. The goal isn’t to suppress the urge for a perfect product, it’s to channel it productively into tasks I can tackle later. If a feature works but I want it to be more elegant, I open an issue, label it, and return to it when I have time. This lets me make progress while still fully expressing myself and lets my perfectionism express itself as well.


Mental blocker can be tricky, both your projects and your well-being will benefit when you learn to spot them and work with them. Keep building, keep iterating, and remember: a finished project with room for improvement is often far more valuable than a never-ending pursuit of perfection.

@