All writing

Closing the ticket is not the finish line

A feature shipped, a board turned green, and a warehouse where nothing had changed. Why done should mean the problem is gone.

The ticket said: "Let the warehouse print shipping labels straight from the order page."

The team built it in a week. Clean code, tests passing, deployed on a Thursday. The ticket moved to Done. The board turned green. Someone posted a party emoji in the team chat.

Two weeks later, I walked through the warehouse. The staff were still copying addresses by hand into the old label tool.

Nobody had told them the button existed. The one person who found it couldn't make it work with their printer. They gave up after the second try and went back to what they knew.

On our board, the work was finished. In the warehouse, nothing had changed.

The false finish line

Most teams measure output. Tickets closed, features shipped, tasks ticked off. It feels like progress, and it's easy to count.

But output is only the halfway point. The real finish line is the outcome: the moment someone's work actually gets easier.

Between those two points there is a quiet, dangerous place. The ticket is closed, but the problem is still alive. I call it limbo. Work goes there to look finished while nothing improves.

You see it everywhere:

  • A feature that works perfectly in testing, and that nobody uses.
  • A task marked complete, while the bugs it caused pile up behind it.
  • A project handed over, where each team had a different idea of what "done" meant.

Finish all the way

I like to call the alternative radical completion. You're not done when the code ships. You're done when the problem is gone.

In practice, that means a few simple habits:

  • Agree on success before you start. Write it in the user's words. "Labels print from the order page" is a task. "Nobody copies addresses by hand anymore" is an outcome.
  • Go and look. After you ship, watch someone use it. A ten-minute visit beats a hundred green checkmarks.
  • Keep it open until it works for real. If people aren't using it, you're not finished. You've just found the next piece of work.

It's less exciting than a party emoji. It's also the only kind of done that matters.

Cross the real line

Closing a ticket is satisfying. I get it. But the people we build for never see our board. They only see whether their day got better.

So ship it, then follow it out the door. Stay with it until the problem is truly gone.

That's when you celebrate.

Keep reading

More from the notebook.

Building3 min read

Praying to the servers

An index that froze the orders table, a shrine for praying while we waited, and why the best server prayer is the one nobody has to say.

Reflections3 min read

The age of personal software

In school, I built a tiny exam schedule app that almost every student on campus used for a couple of days. Then life got busy. Now AI is giving builders their weekends back.