You (as an Ahab-like small company) are totally helpless

Many people organize the various types of software into three general buckets: shrinkwrap software (that’s sold in retail stores), enterprise software (that’s sold directly to a business), and web-based software (usually consumer oriented such as eBay or Yahoo).

Some years ago Joel Spolsky expanded on this in a great essay about the “five worlds” of software, in which he describes the how the context for a particular software project defines many aspects about the nature of the project — from how requirements are gathered, to how the project is managed, to the relative importance of getting it right the first time:

I think there are five worlds here, sometimes intersecting, often not. The five are:

  1. Shrinkwrap
  2. Internal
  3. Embedded
  4. Games
  5. Throwaway

When you read the latest book about Extreme Programming, or one of Steve McConnell’s excellent books, or Joel on Software, or Software Development magazine, you see a lot of claims about how to do software development, but you hardly ever see any mention of what kind of development they’re talking about, which is unfortunate, because sometimes you need to do things differently in different worlds.

I think there is another world of software development, one that somehow seems hidden from the mainstream: telecom software development; that is, software developed specifically for carriers such as Sprint, AT&T, Verizon, Deutsch Telecom, etc. Here beats the true heart of geekdom; here are the systems that make up the fantastically complex networks at the heart of the Internet and of cellular telephony systems.

I’ve been thinking about the best way to describe how and why software development for carriers is different, when Marc Andreessen wrote a blog post that did the job much more eloquently than I ever could. Marc was writing about the challenges of working (as a start up) with large companies, but his insights are perfectly applicable to small companies that aspire to sell to carriers:

There are times in the life of a startup when you have to deal with big companies.

Maybe you’re looking for a partnership or distribution deal. Perhaps you want an investment. Sometimes you want a marketing or sales alliance. From time to time you need a big company’s permission to do something. Or maybe a big company has approached you and says it wants to buy your startup.

The most important thing you need to know going into any discussion or interaction with a big company is that you’re Captain Ahab, and the big company is Moby Dick.

The gist is that large companies do what they want, and you (as an Ahab-like small company) are totally helpless to control them, predict what they will do, or even make sense of what they have done.

A small company attempting to sell software to carriers (and there are many), this problem is magnified many times over. Not only are your customers akin to Moby Dick, but you are often working with (or attempting to work with) the other huge whales that keep Moby Dick happily swimming along.

For example, imagine you are trying to sell British Telecom (or whomever) some content, or services, or mediation, or analytics, or OSS/BSS system, or whatever. Of course you have to contend with the mind bending bureaucracy of huge carriers, their unique software requirements (NEBS compliance, 5-9 availability, scalability to 100s of millions, n+1 failover and geographic redundancy) , and their endless sales cycles. But you also have to manage relationships with the huge equipment providers that are often your best channel into carriers (Ericsson, Nortel, Nokia, Siemens, etc.).

Unusually difficult, onerous requirements. Huge, fickle customers. Huge, fickle partners. Grinding, painful, glacially slow sales cycles. Not for the faint of heart, and worthy of a special category all its own.