In and Out Burger, Bose, and Ultimate Ears. What do these three companies have in common? They are specialists. In and Out Burger is a fast food restaurant chain that serves what are arguably the best hamburgers and cheeseburgers in the southwestern United States. They also serve fries, shakes, and sodas. Heck, the last change to the menu at In and Out was decades ago when Dr Pepper was added to the menu.
In a completely different market, Bose Corporation specializes in making some of the best audio systems on the market. And Ultimate Ears specializes in making high quality headphones. Bands like Van Halen, Linkin Park, and Metallica all use Ultimate Ears head phones during their shows.
Now consider some other companies: Sony, Disney, and Microsoft. Each of these companies do a lot of different things well but are not considered specialty or niche companies. Sony makes movies, music, stereo equipment, computer equipment, game consoles, and Walkman CD players. Disney is in a set of similar businesses: movies, music, theme parks, toy manufacturing, sports (they own ESPN), television (ABC) and others. Microsoft has a number of businesses as well: game consoles, computer hardware, and of course software.
Now imagine the different jobs the leaders of all these respective companies have. The CEOs of In and Out Burger, Bose, and Ultimate Ears can keep their focus narrowed on the markets they serve with laser-like intensity. The CEOs of Sony, Disney, and Microsoft don't have the luxury of such a narrow focus. Diverse companies require leaders that have a good general understanding of the diverse entities in their organizations. These CEOs generally rely on the presidents of their divisions to provide focus for their companies.
I chose these companies for their dedication to quality products. All six of these companies have a reputation for building great products. Microsoft has XBOX 360, Disney has Pixar, Bose makes killer speakers, Sony has Spiderman, Ultimate Ears makes some rocking headphones, and In and Out makes a mighty tasty burger. Whether they are a generalist company or a specialist company, they create great products.
Software developers typically fall into one of these stereotypes. Some software developers have a broad understanding of the myriad of technologies available today. A lot of times these people are the designers and architects of software systems. Other developers have a very deep understanding of a certain technology. Typically both types of developers are necessary on software projects of any size. Development generally begins in the camp of the generalist. At some point the generalist will make a determination that a specialist is required. The specialist with his/her skill set comes in and performs a set of specialized tasks. For instance, you may need to call in a SQL Server specialist to validate your database design, server architectures, and database administration. The medical system works a lot like this. Your GP (general practitioner) may recommend you to a specialist if you have a health issue she cannot resolve.
There are downsides to choosing one path or another. Generalists may have difficulties keeping up with the rate of technological change. An important aspect of a generalist's job is determining whether a technology is or will become viable. For instance, many moons ago we ran an extensive article discussing .NET My Services. The week that issue of CODE Magazine hit the streets, Microsoft announced its termination. Doh! Generalists must also develop the skills required to evaluate a technology quickly. Many times we learn about a new technology as we are implementing it in one of our applications.
Specialists have a different set of issues. They need to be concerned with their technology becoming obsolete. This is a two-sided sword. While a specialist may be able to charge a specialist rate, they might not be enlisted to work on the newest and “sexiest” projects. In addition, a lot of “specialist” technologies are becoming more general development platforms. Last week I worked with the SQL Server DBAs at a client and showed them how to implement CLR features in their database. Where the DBAs could once get away with only knowing T-SQL, they are now faced with learning a new set of technologies.
So is it better to be a generalist or a specialist? It's all a matter of what you like to do. If you like to understand a technology from the 1s and 0s then being a specialist might be your bag. If you like to play with a lot of different technologies, being a generalist might be a good direction for you. In either case, generalists and specialists are essential members of the same software development ecosystem.