Working on Technology at Startups
Richard Tibbetts has called me out for conflating Web 2.0 startups with all startups in my recent blog posting, “Google has a problem retaining great engineers? Bullcrap”. His complaint was that I was over generalizing from Web 2.0 startups to all startups.
He’s right, of course. The traditional “technology startup” by definition does have a large amount technology work that needs to be done, in addition to the business development work. However, things have changed a lot even for technology startups. Consider a company like Sequent Computer Systems, which started in 1983. At the time the founders had a key idea, which was to use multiple commodity intel CPU’s to create first SMP, and then later, NUMA minicomputers. But in order to do that, they had to design, build and manufacture a huge mount of hardware, as well as develop a whole new Unix-derived operating system, just to bring that core idea to market.
These days, the founder or founders will have a core idea, which they will hopefully patent, to prevent competitors from replicating their work, just as before. However, these days there is a huge selection of open source software so there is much less technology that needs to be re-developed / re-invented in order to bring that idea to market. From Linux and BSD at the operating system level, to databases like MySQL, Apache web servers, etc., there is an awful lot for the startup to chose from. This is all goodness, of course. But it means that most of the technology developed in a typical startup will tend to be focused on supporting the core idea that was developed by the founder. If a company is focused on databases, they probably won’t be interested in supporting me to do my file system work. Why should they? There’s lots of open source file systems they can use; one of them will probably meet their needs.
So while it’s obvious that you can do technology at large variety of companies, of different sizes, I don’t think it’s arrogance to say that there are certain types of technology that can only be done at Google, or maybe at a very small subset of other companies. I’m pretty confident, for example, that Google has the world’s largest number of computers in its various data centers around the world. That means there are certain things that don’t make sense at other companies, but which absolutely makes sense at our scale. In addition, Google’s business model means allows us to pursue open source projects such as Chrome and Android that wouldn’t make sense at other companies. With Android in particular, it means that multiple firmware updates for any given handset model, if it causes people to use the web more and drive more advertising revenue, makes sense and so it’s something we can pursue — in comparison to Nokia, which gets its revenue from hardware sales, so a firmware update that extends the life of a handset is actually a bad thing for them; better to force you to upgrade an handset every year or two.
So I think Richard misunderstood me if he thought I was trying to make the argument that Google is the only place where you can do interesting technical work. That’s obviously not true, of course. But I do think there are many examples of technical work which don’t make business sense to do at smaller companies, and startups in particular have to be very much focused on bringing the founder’s idea to market, and all else has to be subordinated to that goal. And one of the most interesting developments is how the combination of commoditized and standardized hardware, and comoditized software in the form of open source, has changed the game for startups.
For most startups, though, open source software is something that they will use, but not necessarily develop except in fairly small ways. Many of the economic arguments in favor of releasing code as open source, and dedicating a significant fraction of an engineer’s time to serve as a OSS project maintainer or kernel subsystem maintainer, are ones that make much more sense at a very large company like Google or IBM. That’s not because startups are evil, or deficient in any way; just the economic realities that at a successful startup, everything has to be subordinated to the central goal of proving that they have a sustainable, scalable business model and that they have a good product/market fit. Everything else, and that includes participating in an open source community, is very likely a distraction from that central goal.