Robert Važan

Userbase never grows quickly

Avoid optimizing for heavy loads. Actual service usage grows so glacially slowly, you will have plenty of time for optimizations later.

Scalability, for some strange reason, ranks high in typical development priority list. I get handed requirements for servers scalable to 15,000 users or clusters scalable to 1,000,000 connections. Sounds ambitious, doesn't it? It's exactly this kind of optimistic thinking that will ruin the project.

I am definitely able to design and develop such scalable systems. I seriously like the challenge. But putting scalability so high on your priority list tells me that you have no clue what you are dealing with. You are completely unaware of all the other problems you will have to solve before scalability becomes an issue.

You don't want to grow too fast anyway. You are building sustainable business, not some one-time show. You could go viral one day and have nothing left the next day. Flashes of popularity cannot sustain a business. You get a bragging right, but your business won't earn anything and it will likely suffer damage from such random popularity.

When you release your version 1.0, it's bound to suck. You don't want everyone to see the shit. You get only so many chances to speak to prospective customers before they develop immunity and selective blindness to what you are offering. Usually the number of chances you get is somewhere between zero and one.

If you get Slashdotted (Redditted, HNed, whatever) by unknown benefactor, your competitor might be behind it. You see, that rush of popularity will soon result in crush of credibility. And your competitor will then point to his own product arguing it is much better than your mess. Nevertheless, this is just a paranoid worst case scenario for the sake of argument. Most of the time, your competitors cannot care less about you.

You want to test and optimize your product on smaller user base, then grow steadily. That way you get a chance to deal with obstacles that become apparent as your user base grows. You can really grow only as fast as you can fix flaws in your product. And we all know how slow software development is going to be, right? If you overshoot it, you will only get tons of negative reviews, which will hinder real growth.

Going viral is the cool way to grow. The trouble is that viral factors are usually under 25%, often below 5%. You would need viral factor in excess of 100% to sustain purely viral growth. That isn't going to happen in today's crowded markets. Most businesses end up paying for ads. In case of opensource projects and non-profits, links from other websites function as non-commercial ads.

Just think how many impressions you would need to get to 15,000 paying customers, or even that many non-paying but regular users. Click-through rate will be something like 5% and subscription/purchase/adoption rate will be something like 1% even with viral magnification. That means there will be 2,000 impressions per single acquired customer or 30,000,000 impressions total. Everyone on the Internet would have to know about you. You would have to spend $1,500,000 on advertising at $1 CPC.

Even if you happen to be the lucky one who enjoys purely viral growth, it's not going to take effect overnight. People take time to refer your product to other people. There's a temporal component to the viral factor. Even prodigy like Wikipedia experienced growth below 30% per month in its beginning, slowing down to under 5% as soon as it entered mainstream.

Then there's the big launch illusion. Before you release your product, it is easy to delude yourself that launch of something new will attract hordes of excited customers. In reality, nobody will notice. Zero customers. People don't read press releases unless they are pushed to them, which brings us back to advertising. Many bloggers look like harmless reviewers waiting for new stuff to promote for free. They are in fact professional advertisers charging hefty sums for every review. Unless they don't have the traffic yet, but then they won't make any difference.

My recommendation is to forget scalability and focus on higher priority problems. Scalability permeates the product, adding heavy overhead to the development process and consequently preventing you from efficiently and quickly solving those other more important problems.

If you happen to go viral after all, perhaps even with Wikipedia's 30% monthly growth, you still have plenty of time left for optimizations. Just design the next version of your product to handle 3x the peak load generated by the current version. That will also provide some reserve for cases when the next product version introduces some new performance bugs.

One consequence for your marketing is that it is fairly safe to go nuts marketing your stuff everywhere. It is very hard to overshoot marketing unless you invest too much money or do something stupid like sacrificing your reputation for a bit of traffic.