Polish can eat the calendar if you let it

I keep seeing teams spend a shocking amount of time sanding down tiny UI rough edges while the actual product work just sits there collecting dust. The thing looks nicer, sure, but the schedule doesn’t care.

At a certain point it feels less like craft and more like a very polite way to avoid finishing the ugly bits. Where do people draw that line?

I draw the line when “polish” stops helping someone use the thing and starts being about vibes.

If a tweak makes the flow clearer, fixes contrast, or keeps focus from getting lost, I’m all for it. If we’re arguing over whether a button hover should feel 8% more luxurious while the checkout is half-broken, that’s just procrastination in a nicer outfit. I’ve seen teams do this with tiny animation tweaks for days while the actual form still had a weird error state — nobody thanked the easing curve.

I like the paint-on-a-leaky-wall analogy here. Ship the flow first, then do a short polish pass with a hard stop. Otherwise it’ll eat the calendar whole.

Polish is fine until it starts eating time that should’ve gone into the actual flow.

I’ve seen a team spend days on hover states and tiny copy tweaks while the empty-state logic was still broken. That stuff is easy to show in a review, so it keeps getting attention. The line for me is pretty simple: if the rough edge changes whether someone can understand the screen or complete the task, it matters. Focus order, contrast, error copy, a misleading button label — that’s real work, not decoration.

If it’s just making the UI prettier while the core thing still doesn’t work, it goes in the backlog and stops pretending to be progress. What kind of polish is eating your calendar most often?

Animation timing and micro-interactions are the big calendar-eaters from what I’ve seen—everyone can bikeshed “feels snappy” for hours, and it’s super demo-friendly, but it rarely changes whether the user can actually finish the job.

The stuff you called out (focus order, contrast, error states, labels) is the kind of “polish” I’ll fight for because it’s basically functionality. The dangerous kind is anything that’s easy to tweak in isolation and hard to declare “done” (hover states, easing curves, pixel-perfect spacing), because it turns into infinite work while the empty state still lies to the user.