For a long time, I had a bad habit: I wouldn’t start something unless I felt ready to do it perfectly.
A project idea would sit in my head for weeks because I wanted the “best” stack. The cleanest architecture. The perfect design.
Of course, that perfect moment never came.
So nothing shipped.
Perfection is comfortable… and dangerous
Wanting things to be perfect sounds like a good thing. It feels responsible. Professional.
But sometimes it’s just fear in disguise.
If you never start, you never fail. And if you never fail, you never feel uncomfortable. The problem is that you also never grow.
I realized I was spending more time planning than building.
And in software, building is where the real learning happens.
Small progress compounds
Once I started focusing on small steps instead of perfect results, everything changed.
Instead of:
“I need to design the whole system first”
I started thinking:
“Let me just build the first page.”
Instead of:
“This project needs to look amazing”
I thought:
“Let me just make it work.”
Little by little, those small steps add up. A basic feature becomes a working prototype. A prototype becomes a real app. And suddenly you’ve built something you once thought was too big.
Most things can be improved later
One thing experience taught me is that almost nothing is permanent.
Code can be refactored.
Designs can be redesigned.
Features can be rewritten.
But an idea that never leaves your head can’t be improved at all.
Version 1 doesn’t need to be impressive. It just needs to exist.
What I try to remember now
Now, whenever I catch myself overthinking or trying to make everything perfect before starting, I remind myself of something simple:
Done is better than perfect.
Because progress — even messy progress — moves you forward. And forward is all you really need.