Specialization in Software Development
We all want to make more money and have better opportunities, right?
I know I do. Whatever I am doing, I want to be the best at it–or at least near the top.
So, why do so many software developers choose to be generalists instead of specialists?
The fear of being pigeon-holed
Probably the biggest reason, I hear from most software developers, in regards to specialization, is that they are afraid to specialize, because they don't want to be pigeon-holed in a specific technology or area.
At a surface level this seems like a good fear to have. No one wants to do something that is going to limit their opportunities in the job market. But, this fear is actually completely unfounded, because in most cases, specialization actually opens up more opportunities than it closes.
Most of us can only hold down one full time job at a time and if you are a consultant, you can only deal with so many clients in a given week. So, we really don't need to have the whole world of options available to us. If you are looking for a job, for example, you only need to land one job. It does you no good to land 500 jobs. (Although having a few options to choose from is a good thing.) So, you can see right off the bat that it is a bit silly to be worried about closing off opportunities that you can't possibly cash in on.
Now, consider what happens when you specialize. You cut down your potential opportunities, but you become a much stronger fit for the opportunities that are still available for you. If there are 1 million software development jobs you could possibly get, but your specialization cuts that number down to 500, that's still quite a few jobs to choose from, but now you are much more likely to get any one of those jobs, because your specialization makes you a better match for them.
The same goes with clients. By being a specialist, you will have a smaller pool of clients that could use your services, but you will have a much better chance of getting those clients to pay you and to pay you a higher rate than you might make otherwise.
Being afraid of being pigeon-holed into a specific technology is a silly fear. It is like going to a buffet and piling as much food on your plate as possible–more than you could possibly eat in two days. Your stomach is only so big, any extra food past what you can fit in your body is a waste. You can only have one full-time job. Don't worry about the 1000s of other job opportunities you are missing out on. Instead, focus on getting the best one job for you.
The benefits of specialization
Even though specialization may seem like it limits your options, it actually gives you more options, because options that you can't capitalize on are just an illusion. The more specialized you are, the fewer overall options you'll have, but the better your ability will be to capitalize on those options.
As a specialist, you'll find it much easier to find a job or a client, because it is much more likely that people will be seeking you out instead of you seeking them out. If your specialization is specific enough, and there is a high demand for that specialty, you may find that you are actually overwhelmed by potential opportunities.
When people are coming to you, or you are at least offering exactly what they are looking for, you are in a much better position to negotiate. Scarcity drives price up and by becoming a specialist you are able to tap into the scarcity of your particular specialization. Almost all specialists command higher salaries, produce higher bill rates, and are able to find more work.
Being a generalist is only valuable if you have a big name to put behind it. But, in that case, your specialization is being you–you literally are “special.” Not too many people can pull that off, at least not without first building a big reputation by being a specialist of some sort. Think of movie stars and famous actors; Most of them specialized in a specific kind of role, before becoming a big enough of a name to experiment with different roles. Even then, many famous actors still choose to stick with their specialization.
Another major benefit of specialization is a smaller surface area to try and cover. Are you overwhelmed trying to keep up with the latest technologies, new programming languages, and frameworks being introduced at an alarming pace? Perhaps it is because you haven't chosen to specialize.
A specialist may still have to keep up with general trends in technology, but can focus most of their education and skills development in a single area. A generalist has to stay on top of everything, all the time.
As a specialist, you can develop a deep knowledge in a single area, which tends to be more rewarding than the scatter-shot haphazard way of developing software that is so common today. Mastery is much more rewarding than flying by the seat of your pants. (Although the latter can be quite a thrill.)
How deep do you specialize?
The simple answer is it depends on your market. Most of the time, though, the more specific the better.
The deeper you specialize the smaller your potential market will be, but the more valuable to that market you will become. You have to find the right balance between market size and value.
If you are looking for a job in your small town that only has a few software development opportunities and you don't want to move to look elsewhere for a job, you might not be able to specialize as deeply as you might want. In that case, it may be better to be a C# developer than an ASP.NET MVC C# developer specializing in Angular.js. There might not be any companies in your area hiring for your specific specialty.
On the other hand, let's say you are in New York city or you are looking for jobs anywhere in the United States. Now, your specialty of being a Bluetooth-focused Android developer, is probably going to be very valuable.
You'll have to do a bit of research to figure out how deep you can go with your specialty. But, in general, the deeper the better.
Getting more specific about specialization
Ok, so where do you go from here? How do you actually pick a good specialty and build up a reputation in that particular area so that people actually know who you are?
It would be pretty difficult for me to try and cover all that information in a blog post, or even a series of posts, but I have created a full program called
…that goes into full detail about specializing through building a personal brand and covers many more topics that can help you really boost your income.
I'm also currently in the process of writing a book that specifically deals with this topic and a bunch of other career and life topics for software developers, which will be published by Manning Press sometime around the end of this year or early next year.