← Back to Blog

The roadmap was never the hard part

Posting a public roadmap is one of the easiest things you can do as a maker. You write a few items, put them on a page, and they sit there doing the work of looking transparent while you go back to your actual job. I know this because I build roadmap software and I have done exactly that.

A promise, not a prediction

The moment something lands on a public page, people stop reading it as intent and start reading it as a commitment. You can put "subject to change" across the top in bold. It does not matter. The person who asked for a feature six months ago and found it on your roadmap has been counting on it. That is just how it works.

So before you post: a slipped feature is a private disappointment. Nobody can point at it. After you post, the same slip is a broken promise with a screenshot attached. The roadmap you put up to look trustworthy becomes the exact instrument people use to catch you being neither.

There is a test worth running. If your roadmap vanished overnight, would you build anything differently next week? If the honest answer is no, if you would make the same calls regardless, then the roadmap was never steering the work. It was set dressing.

Why we post them anyway

A roadmap is the cheapest signal of listening there is. It says "we hear you, it is coming" without anyone having to build the thing yet. It buys goodwill on credit. And like most things bought on credit, the bill comes due when the date slips and the goodwill curdles into a receipt someone is holding up.

That is the trap. Posting is low effort and high reward in the short term. Honoring it is the reverse.

The part almost nobody does

Keeping a roadmap promise is unglamorous work. Nobody asks to see the confirmation email that goes out after you ship. Nobody screenshots the Denied column where you wrote your reason for not building something. The visible, shareable part of a roadmap is the list of things you said you would do. Everything that happens after, the follow-through, the honesty about what did not make it, is largely invisible.

So that is where I tried to aim with the tool I built. When a release ships, it emails the people who voted for what is in it, so the kept promise actually reaches the person who asked for it. There is a caveat worth saying plainly: that email goes to registered voters, the ones with an account. Not to anonymous clicks. The machinery for keeping a promise is fussier than the machinery for making one.

There is also a public Denied column you cannot use silently. If you move a request there, you have to write a reason in a text box you cannot skip. You cannot bulk deny a stack of requests at once. And the denial, with its reason, can be published on the public board. None of that feels like a feature you would put in a demo. But it is the kind of thing that separates a roadmap from a decoration.

And nothing is deleted outright. A removed or merged request is kept in the database, not erased, so the record of what people asked for survives the cleanup. The history stays intact even when the display is tidy.

The confession

My own public changelog currently has a single entry on it. One. I built the whole apparatus for honoring a roadmap: the shipped notifications, the forced denial reasons, the soft deletes that preserve the record. And I have published fewer announcements than I would like to say out loud.

I am not going to pretend that is fine. It is the point of the post. The roadmap was never the hard part. The keeping is. And the keeping is invisible, which is exactly why so many public roadmaps quietly rot while everyone keeps clapping for the poster.

Post the roadmap if you are going to honor it. If you are not, the most honest thing on your site is the page you never put up.

Success

Your changes are saved successfully

Error

Something went wrong. Please try again

Warning

Your session will expire in 5 minutes

Info

New update available for download