Over the past couple of weeks, the subject of specialization with reference to consulting has come up among my colleagues. It is a subject of much debate so I figured that now might be a good time to look at specializing and explain my points of view on the matter. I am of the opinion that specialization as a consultant will do more long term damage to your career than not specializing.
Sure, specializing looks like a great road to go down especially on a technology that doesn’t look like it’s going anywhere soon. However, for the sake of this argument lets consider the Microsoft .Net product stack. How many .Net developers do you know? How many really good ones do you know? If I was to venture a guess, I’d say you know a lot of .Net developers. This makes the .Net developer a commodity of sorts. The more people that can do what you do, the worse off you are. Especially if those other folks can do it better than you.
This can be extremely harmful if that single technology or technology stack is all you know. You are so deep in it that it’s crazy. But if you are are asked to look at something else you couldn’t do it with confidence and value. However, specializing can make you easily billable on a technology (stack) that is in high demand but once that technology becomes outdated or something better comes along you are stuck being non-billable until you can learn something else.
Another reason that specialization hurts is that it makes it really easy to fall into the “one solution for all problems” trap. You start to think about ways to make your current specialization fix a problem it has no business fixing. You end up trying to fit the square peg into the round hole. It just doesn’t work and it really doesn’t actually solve the problem.
So how do we avoid specialization? Well, it can be hard to and I’m not saying that you should never specialize in anything. I actually thing specializing on a programming language is a sound idea. Especially if it’s object oriented based and compiles in some way. Doing so makes it easy to learn other languages when you need to in a pinch making it easy for you to jump around. But I think that getting your hands on whatever technology you can is only going to benefit you long term. If you can play around and get to understand different technologies at least at a surface level, it helps you to understand different ways to solve problems and gives you a better understanding of what tools work best for what kinds of jobs.
Surface knowledge helps a lot. It can help you to understand how different technologies can connect together to create a solution. It can help you understand a lot more technologies overall because you understand so many, at least a little bit. So keep this in mind as you sit down to learn new things. Think about something you don’t understand and attempt to understand it. The more technologies that you have a surface understanding of, the easier it will be for you to dive deeper if you need to, because you’ll already have the ground work laid.