HomeProjectsAboutCredentialsBlogContact
← Back to blog

Ugly Today Beats Perfect Never

July 21, 2026·4 min read
Ugly Today Beats Perfect Never

Event One: The Tong, Four Years Ago

I was sitting at a tong, a roadside tea stall, the kind of place where half of Chattogram's real conversations happen over a five-taka cup of chá. Across from me was a senior bhai from CUET — someone I respected, someone whose opinion actually mattered to me. I was doing what I always do: rambling about the messy, half-formed chaos of everything I was trying to build.

At some point, he said something simple. "Show me your portfolio sometime. I know someone — I could connect you."

And I said the sentence that would go on to haunt the next five years of my life:

"Bhai, give me a little time. Let me get to the next level first. Then I'll build 'that' properly, and I'll show it to you."

He smiled. Quietly. The kind of smile that, looking back, probably already knew how this story would go.

That "next level" never arrived. It's been almost five years. And God alone knows how much longer "then" is going to take, because "then" isn't a date — it's a moving target I kept redrawing every time I got close to it.

There's a very specific disease we carry, and I don't think it's unique to me. We want everything gathered into perfection before we let anyone see it. Pixel-perfect or nothing. Only step into the main portion of the room once every corner is finished — otherwise, don't take the risk at all. If no one else operates like this, I definitely do.

Event Two: 1:48 AM, Five Browsers, One Realization

Fast forward to now. 1:48 AM. I'd slammed a can of coffee — I don't even remember when it went cold, sitting there sweating condensation onto my desk. Five instances of Claude, running in five different browsers, inside one single session, working through seven phases of one project. I was actually sitting there thinking about which browser I hadn't used yet, so I could install a sixth.

And then, out of nowhere — mid-thought, mid-conversation — it hit me. A rush, sudden and uncomfortable:

Where the hell is my portfolio right now?

Not "why haven't I built one." I have built things. Dozens of them. The question was sharper than that — it was where is it, as in, why does nobody get to see any of it.

I think too much. I wait too much. And that loop — that quiet, reasonable-sounding loop of "just a bit more polish first" — kept me circling the runway for what feels like forever. I kept preventing myself from ever actually being at my prime, because I was always telling myself the same lie: make this a little better, then post it. And that "then" never came. Not once. Not one single time in five years.

The Rule Now

So here's the rule, and it's deliberately simple, because complicated rules are just another form of the same trap:

Start ugly. Fix later.

Let the bug live in production for a day if it absolutely has to. There's no standup tomorrow morning to catch what you missed tonight — nobody's grading the rough edges before you ship. So you might as well stop waiting for permission that was never going to arrive, and push.

Ugly today beats perfect never.

That's it. That's the whole philosophy. Not because ugly is good — but because "perfect" was never actually a destination. It was a way of staying safe inside the waiting room forever, telling a version of myself and a version of that senior bhai that "later" was coming, while quietly making sure it never did.

Five years later, the portfolio still isn't "done." But it's live. It's ugly in places. And it's finally out of the tong, and out of my head, and into the world — which is the only place it was ever going to matter.

Taggedperfectionism in techindie dev mindsetshipping over perfectionsolo developer journeyBangladeshi indie hackerimposter syndrome developersportfolio procrastinationbuild in publicdone is better than perfectdeveloper burnout reflection
Ugly Today Beats Perfect Never | Mahtamun