David Heinemeier Hansson

April 26, 2021

Don't promise, just ship

Despite telling ourselves and the world that software roadmaps are a bad idea for well over a decade, we still made the mistake with HEY and custom domains. I'm sympathetic to why we did that – given just the endless avalanche of requests! – but a mistake it was.

first promise of custom domains.png


The first problem with roadmaps, and other kinds of explicit or implicit promises, is that illusion of agreement I spelled out 14 years ago:

Like functional specs earlier in the development phase, product road maps are fraught with trouble. The due diligence process is usually twice as shallow, which means that you’ll inevitably end up promoting illusions of agreement. When all we have to agree on is a slogan, like “Meetings Tab, 4th Quarter”, it becomes an empty imagination box that’ll fit wildly different expectations. Disappointment, however, is sure to ensue when only one set of expectations can actually be met.

When we let people know that we were working on custom domains for HEY, we hadn't figured out exactly how to do it, and we say as much. But since we weren't specific, it allowed a whole class of customers to imagine what custom domains could or should be like, only for some of them to be disappointed when that personal conception didn't match reality. This. Always. Happens!

Sure, for some people, the solution for custom domains we brought out turned out to be exactly what they were looking for. Neat separation between accounts, yet still integrated with a unified login and inbox. But that just meant we met their expectations! Nothing too exciting, just, you know, finally!

We knew this was going to happen, yet we did it anyway. Which highlights the limitations of knowledge. It's not enough to know something, you have to live it. It's not enough to have learned something, you have to recall it.

So here I am, writing to my 2035 self: Don't promise, just ship.

About David Heinemeier Hansson

Made Basecamp and HEY for the underdogs as co-owner and CTO of 37signals. Created Ruby on Rails. Wrote REWORK, It Doesn't Have to Be Crazy at Work, and REMOTE. Won at Le Mans as a racing driver. Fought the big tech monopolies as an antitrust advocate. Invested in Danish startups.