Bryan Cantrill has an interesting and detailed discussion of the economics of software on his weblog, and I've been trying to reconcile Bryan's thoughtful exposition with what I know about the costs -- in the current market -- of traditional sales and distribution of complex enterprise software. I'm using "distribution" to mean the set of activities that occur between making a sale and having a customer. For relatively simple software, that could be sending a CD or DVD in the mail.
Here's a snapshot of my mental scratch paper:
Presuming that you have a team that understands product development as opposed to project development, the production of two units of an enterprise software product costs the same as the production of one unit, and thus has zero variable cost. (If you have a project team as opposed to a product team, the production of n units actually costs n+O(n) times as much as producing one unit.) Selling and distributing that software requires targeted marketing, inside sales, outside sales, sales engineers for proofs of concept, and a bench of implementation staff at the ready. A straightforward analysis will show that the cost of selling and distributing n units is O(n) times the cost of selling and distributing one unit; thus the softwareness (and profitability) of an enterprise software company directly depends on how difficult it is to sell and implement the product.
So, what gives? Enterprise software is software, isn't it? If that cost of sales and distribution is ~0.1n, then it's not software, but it's not so bad. On the other hand, if the cost gets close to ~1.0n, then it's bad unless you're an established player preserving your marketshare. (This is why it is important to be first to market.) In an off-blog email exchange with Bryan, I think he put his finger on the reason, which I'll paraphrase: "That sounds like services, not software."
Building enterprise software products and supporting enterprise software products are both situations where the cost of n units is O(1), so a key element in selecting a business strategy is figuring out both how to make n sufficiently large while keeping the cost of sales and distribution managable.
Widely used open source is one way to do it, since n is large and sales and distribution are essentially free. Loosely:
- The cost of sales is the cost of maintainging a community, which is arguably
O(1). - The cost of distribution, if handled by professional services partners, is a manageable
O(n)(like~0.1n) for the overhead of partner management and training. - The
O(n)revenue produced by the support business dominates theO(1)cost of engineering and manufacturing.
And that sounds like a software business.
There are other ways to do it, too, related to packaging, but I'll leave those for another entry.
Add a comment.









