In the early days of a technology startup, you tend to have a lot of software developers, and you feel like you could never have enough. If you hire sales and marketing staff too early, they don’t really get much traction, and you may start to think that sales and marketing are a waste of time. This led me, in the early years, to believe that a healthy software company should have a lot of real software developers and maybe no sales and marketing.

At one point I entertained the quixotic and, retrospectively, stupid idea of requiring every employee at Fog Creek to be a programmer… even the receptionist would have to have done some BASIC programming in high school to qualify. In the US Marines everyone, even the cooks, is a rifleman. Of course that’s because the cooks are in friggin Afghanistan getting shot at so they better be riflemen, whereas our receptionist almost never has to drop into the source code and bang out a class. Almost never.

Over time, though, as your product gets better and better, the more sales and marketing people you hire, the more you sell.

That’s because programmers multiply salespeople, and vice-versa.

I’m a nerd, so I’ll be real math-y about this. Define the quality of your code on a scale from 0 to 1.

0 means your product solves absolutely no problems for anybody so nobody in their right mind would ever buy it. Microsoft Bob.

1 means that every single person on Earth, if they bought your software, would be net happier, even after paying your fee.

Your software starts at 0 and slowly climbs up the hill.

If everybody in the world knew about your software and was encouraged to evaluate it, the number that would buy it would be (Earth population) x Quality.

Sales and marketing functions exist to encourage earthlings to find out about your software and evaluate it. These functions will have no effect on sales if your quality is extremely low. But as the quality gets higher, the value of sales and marketing goes up, commensurately. Double the quality, and the same sales effort yields double the revenue.

The population of the planet is so large, and the effect of sales and marketing so hard to scale, that by the time your product is really great, the optimal ratio might be very heavily tilted in favor of sales and marketing. Large software companies might have 5 or 10 or 20 people in the sales organization for every developer.

This explains, among other things, why US software companies can’t expect to get sustainable advantage by offshoring software development to cheaper countries. If a developer in Russia, India, or China costs 50% as much as a developer in Seattle, San Francisco, or Boston, but software development is only 10% of your costs, you can only get a 5% advantage from offshoring development. The offshoring that does happen is strongly biased to custom software development which, by design, can only solve one person’s problem, so more developers than marketers are needed.

It is not the case (as commonly believed by nerds) that marketing is a substitute for code quality. The best marketing in the world cannot force people to pay for a useless product.