I'm convinced that most people think about software companies in an upside-down way. The common belief is that when you're building a software company, the goal is to find a neat idea that solves some problem which hasn't been solved before, implement it, and make a fortune. We'll call this the build-a-better-mousetrap belief. But the real goal for software companies should be converting capital into software that works. If you understand this, it's easier to make the right strategic decisions.
The trouble with build-a-better-mousetrap is that there's not a lot of evidence that it works. First of all, many of the most successful software companies (Microsoft and Oracle, for example) don't really "innovate" in the sense that they are not really solving problems that haven't been solved before. In any market, it is exceedingly rare that you get to keep your invention to yourself. Everybody has competition. Wall Street Weenies and lawyers starting high tech companies tend to think they can protect themselves from this with patent protection. Ha! I can hardly think of a single case of a company successfully protecting themselves from competitors because of a patent. (Stac is the only case I can think of, and where the heck are they?)
The next problem with build-a-better-mousetrap is that we've reached a state with Internet software where there is too much money around chasing the same lame ideas. Call it the idrive-xdrive-swapdrive-freedrive phenomenon: suddenly thirty-seven companies pop up offering exactly the same service for free. There are a zillion examples of this. Petshops-on-the-net. Urban-video-rental-delivery. Cosmetics websites. When this happens, the business challenge switches from being a technical challenge that needs good programmers to being a marketing challenge that requires, somehow, the ability to break through the pack and establish a brand name, something that is vanishingly improbable. Not only that, but VC money is impatient. That means that investments which take a really long time to develop won't get funded, which is why anything really interesting or hard to copy won't even get funded. One reason that there are over thirty companies whose entire goal is providing free hard drive space on the Internet is that writing the code for such a service is so easy.
There's a different way to think of software development. Imagine that the goal of your software company is not to solve some specific problem, but to be able to convert money to code through programmers. That's a little bit strange, but bear with me. A software company has to think of recruiting the right people as its number one problem. If you are successful, this can solve any other problem. Hire smart people, and they will produce good stuff that you can sell and make money off. Then everything else follows. Microsoft has the ability to crush its competitors because it has the ability to deploy so many programmers. When Microsoft released Internet Explorer 3.0, fast on the heels of IE 2.0, it was shocking just how good a job they had done. Not only did they replicate every feature in Netscape's browser, but they added some more features too, and did it all with an architecture that was robust and strategic. While it is true that Microsoft used its operating system to help push its browser, it is also true that they just wouldn't have gotten away with this if their browser wasn't great. (Case in point: even though Windows out of the box can play MP3 files, everyone I know uses WinAmp, not the Windows Media Player, to listen to them. Even though MSN is on the desktop, everybody uses AOL. Back when the browser integrated with Windows was crap, Netscape had 80% market share. So please stop fretting about the power of bundling.)
Microsoft has a great recruiting strategy. They hire inexperienced, smart people right out of college... people that haven't learned from dysfunctional corporate cultures elsewhere. These kids get to Seattle, not really knowing anybody, work their asses off, and absorb the Microsoft way of doing things like a sponge. By the time they are ready to get disgruntled, their stock options start to kick in and their effective salary for staying around goes up into the stratosphere, where it is unlikely that anybody else will be able to lure them away. A five year Microsoft veteran could be making $500K a year including stock options -- care to match that?
The bottom line is that Microsoft is a better engine for converting cash into programmer productivity than anyone else. This is far from a peripheral factor. Most startups seem to think that hiring good programmers is about as important as, say, getting the right PR firm. They "know" it's important, but not how important. They're not really going to do what it takes to get and keep the best programmers. Which is why they are likely to get creamed. As soon as Netscape stopped producing code (their 5.0 browser is now something like 2 years behind schedule), their market share went away. WordPerfect's programmers believed that the best way to do things was Assembler and refused to code in C. Wrong idea, guys, it takes about 10 times as many programmers to do that, and now WordPerfect is a footnote. It's amazing how many companies - Lotus, Netscape, WordPerfect - have bitten the dust because they lost the ability to convert capital into code.
If you want to be the number one restaurant in town, you have to worry about how to get the best chefs and the best ingredients. You are a factory that converts raw ingredients and chefs to a dining experience. If you are a movie studio, you have to worry about getting the best actors, directors, and writers. You are a factory that converts talent into entertainment. So if you are a software company, you have to get the best chefs and directors: you are company that converts talent into code. The right talent knows how to make the right code which will make you successful.
OK, so let's assume-for-the-purpose-of-discussion that you agree with me, here. What implications does this have? In coming articles, I'll talk about putting this philosophy into practice: how to interview and choose the best people, how to create the right work environment that attracts people once you've picked them, and how you should basically subordinate all other problems to focusing on keeping the factory humming.
You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.
I’m Joel Spolsky, co-founder of Fog Creek Software, a New York company that proves that you can treat programmers well and still be highly profitable. Programmers get private offices, free lunch, and work 40 hours a week. Customers only pay for software if they’re delighted. We make Trello, easy web-based collaboration software, FogBugz, an enlightened bug tracking and software development tool, and Kiln, a distributed source control system that will blow your socks off. I’m also the co-founder and CEO of Stack Exchange. More about me.