To Everyone Who Sorted Their TODOs by Color Instead of Shipping: We See You

October 06, 2025 • By Vladimir Elchinov

The Monday I Won Gold at Not Shipping

I sat down to “finally ship the MVP.” Two hours later, my README had a legend, gradient labels, and a semantic rainbow of TODOs that would make a design system blush. The deploy button? Untouched. Somewhere, a kanban board applauded; my users did not.

That day felt oddly familiar: auth still half-wired, Pundit policies forever “TBD,” Swagger docs reading like a cryptic poem. I told myself it was “prep work.” What I meant was: I was avoiding the scary part. Like cleaning the kitchen before writing a novel (spotless fridge, zero chapters).

Why We Do This (And Why You’re Not Alone)

There’s a comfort in arranging tasks. It feels like progress without the adrenaline. Shipping means judgment, emails, bug reports, logs lighting up like a Christmas tree. So we make the list perfect, align the checkboxes, and promise “tomorrow.” It’s not laziness; it’s protection. We’ve all been there - copy-pasting the same Devise flow, debating JWT token expiry like it’s a constitutional amendment, polishing CI YAML as if our future selves will grade it.

  • We want momentum (and also naps).
  • We want pride (and also, you know, zero 2 a.m. pager alerts).
  • We want to build the real thing (after just one more label tweak that absolutely no one sees).

Warning: Color-coding your TODOs is 10x faster than shipping, 0x useful to users, and 100x soothing to the developer soul.

A Small Story, A Big Pattern

A friend swore they’d “ship by Friday.” By Wednesday, their README had a “Nice-to-Haves” section with subheadings, footnotes, and emojis that obeyed a strict grammar. The MVP? Close. Then they added “Optional: Write onboarding email copy,” followed by “Optional: Improve the optional section.” We laughed, then quietly recognized ourselves. This is universal among builders who care. When something matters, we fuss over the wrapping.

What starts as “just one last checklist pass” becomes a week of “almost.” The login works, the roles mostly role, the jobs… job-ish. But the moment we could push, we pivot to grooming the grooming. It’s a shared reflex - like Rails devs instinctively reaching for generators or arguing about “service objects vs. just good controllers.” It’s muscle memory and a little fear wearing a productive hat.

Let’s Make It Our Inside Joke

Instead of pretending we’re immune, let’s name it when it happens:

  • “I’m aligning labels.” (We’ll reply, “Ship first, then be a decorator.”)
  • “I’m refining acceptance criteria.” (Approved, after the deploy.)
  • “I’m making a perfect readme.” (Great, frame it after users log in.)
  • “I’m installing a lava lamp in prod.” (Okay, ship - wait, what?)

The best part? Once you’ve shared it, it loses power. The thing you’re avoiding becomes just the next commit. And when you ship, we’ll celebrate, crack a callback joke, and then, yes, probably color-code the release notes. Growth, but make it aesthetic.

Come Sit With Us

If you’ve ever postponed launch by polishing your TODO rainbow, pull up a chair. Tell us the moment you knew you were stalling - was it when you named your labels after gemstones, or when your “MVP” branch hit commit number 427? We’re not here to scold or solutioneering you to death; we’re here to nod, laugh, and say, yep, same.

Drop your story, your funniest “almost shipped,” your gentlest nudge that got you over the line. This is a room full of builders who care enough to fuss - and belong enough to share it out loud. We’ll keep each other honest, celebrate small ships, and turn “almost” into “already.” And if you must color-code, at least let green mean deployed.

Start creating your next app now