← All writing

Building for scale before you have users

By Mahabir Prasad, founder of ScalaCode

Most software gets built for the demo. It looks good in the meeting, it does the three things you showed the room, and everyone claps. Then it ships, real people start using it, and the cracks show up. The page that loaded in a blink with ten records crawls with ten thousand. The feature that worked for one user does something strange when two of them touch it at once. Nothing is broken exactly. It just was not built for the day it actually matters.

I have watched this happen for close to 20 years, and I have learned that scale is not a phase you get to later. It is a set of decisions you make at the start, quietly, when nobody is asking for them. Build for the product you will have, not the one in the demo.

The trap of the demo

The demo rewards the wrong things. It rewards speed to something clickable, and it punishes the boring work that makes software hold up. So teams cut the corners nobody sees. They skip the thinking about data as it grows. They hard-code the thing that should have been flexible. They put everything in one place because one place is faster to build. It all works, because in a demo there is one user, a handful of records, and a friendly network.

Then you get users. And the exact corners you cut are the ones that fail, at the exact moment you cannot afford them, when people are finally paying attention.

The few decisions that decide whether you scale

You do not need to over-build. Building for scale is not gold-plating everything on day one. It is getting a small number of decisions right, the ones that are expensive to change later.

How you model your data. The shape of your data is the hardest thing to change once real information is sitting in it. Get this wrong and every later feature fights you. Get it right and the product bends easily as it grows.

Where the work happens. What runs when a user clicks, what runs in the background, and what you never make the user wait for. Teams that build for the demo do everything in the moment because it is simpler. Teams that build for scale decide early what can wait.

What happens when things go wrong. Real systems fail in small ways all the time. A request times out, a service is slow, a file is missing. Software built for the demo assumes the happy path. Software built for scale assumes the unhappy one, and recovers quietly instead of falling over in front of a customer.

None of these are glamorous. All of them are cheap to get right at the start and painful to fix once you have users.

How to tell if your partner is building for scale, or just for sign-off

If you are hiring a team to build for you, you cannot see the code, but you can hear the difference in how they talk.

A team building for sign-off talks only about features and dates. Everything is about what will be visible in the next demo. Ask them what happens when you have a thousand times more data, and you get a shrug or a promise to deal with it later.

A team building for scale asks you questions you did not expect. How many users, realistically, in a year. What is the busiest moment your product has to survive. What matters more, that it is fast or that it never loses data. They are thinking about the version of your product that has real users, because that is the one they are quietly building toward.

The tell is simple. Ask what they are doing now that you will thank them for in a year. If they have a real answer, they are building for scale. If they do not, they are building for the demo, and you will pay for it later.

The honest cost

Building for scale is not free. It asks for a little more time up front, and it asks you to spend it on things you cannot see and nobody is demanding. That is exactly why it gets skipped. It feels like a tax on a product that does not have users yet.

But the alternative is worse. The rewrite. The frantic month when the product finally takes off and immediately buckles, and you are re-building the foundation while the house is full of people. I have been called in to fix that more than once. It always costs many times what it would have cost to build it right the first time, and it costs something you cannot buy back, which is the trust of the users who showed up and had a bad experience.

So build for the product you will have. Spend the boring hours early. When your moment comes, and if you have built anything worth building it will, you want the software to be ready for the crowd, not surprised by it.

This is how my team builds. If you want software that is ready for the day it matters, see how ScalaCode works, or get in touch.