Developers Shouldn't Specialize
There are a lot of developers who prefer to specialize in a specific technology. At first glance, that seems like a smart move. As long as there is a lot of market interest in your specialized skills, you can benefit financially in ways that exceed the typical compensation for people who work with the same technology, but aren't as specialized in it as you are. And you can use the internet to your advantage to make a name for yourself when it comes to that particular technology, which could satisfy your desire for recognition and/or further increases your ability to monetize your specialty.
But there are some serious downsides to that particular approach. First of all, in the world of software development, there are always other technologies and approaches on the come-up. Not all of those will make it into mainstream development circles, but some of them will. And when they do, it's always worth checking them out, for a variety of reasons. They might make your job significantly easier. They might reduce the cost of software development of the projects you're going to be working on. They might just be a lot more fun than what you're currently doing. They might just be a fad and it's quite possible that nobody will even speak of them 2 years from now. Who knows? You certainly won't, if you ignore them. You don't need to jump head-first into every new technology or approach that becomes popular, but there's certainly no harm in taking a peek either. You'll at least learn something from it.
There's also another factor to keep in mind, which is more important than you might realize. If you specialize in technology from commercial vendors, you need to keep the market forces in mind that could influence the vendor. Those market forces might be (or seem) irrelevant to you, but the vendor will not let that influence its decisions and strategies if the vendor itself is competing with other companies on a much larger level than your company or your clients are. And when a vendor changes tactics due to market forces, the technology you've chosen to specialize in might be on the way out, or it might no longer be the hot new thing that you can capitalize on.
And that is where one of the biggest dangers in specialization lies. If you're specialized in a specific technology, you're personally invested in it. Your current standard of life, your livelihood, depends largely on that specific technology. Sure, you can move on to something else but you will have to get used to less than you're used to, probably both in money and stature for a while. Realistically speaking, odds are high that you are emotionally attached to this technology because of this. When you are confronted with bad news regarding the technology's future, you're likely to exhibit classic denial symptoms. The recent news about the Silverlight strategy shift and specifically the reactions to it, is a beautiful example of this. Silverlight specialists are writing blog posts to convince people of the merits of the technology and how we shouldn't read too much into the recent statements from Microsoft. It's classic denial and it will happen to you too at some point in the future once you form an emotional attachment to any technology for whatever reason.
The other big danger is that when you focus solely on one specific technology, it tends to cloud your vision. You no longer keep an eye on what seems to be working well for other people. You might have learned to accept certain downsides to your specific technology whereas other developer communities might no longer be confronted with similar downsides altogether. You know what works and you know how to make it work. As such, you might not be looking into ways to continuously improve the way you work any more. It easily leads to a situation where you think you're doing a good job, while in reality you're doing a job in a certain manner because you simply don't know any better.
Instead of specializing in a specific technology, you're much better off in the long run if you make sure that your skills are easily transferable to other technologies. Focus on concepts first, and then on specific implementations. You're going to need specific implementations, but a solid understanding of the actual concepts behind them ensures that you can easily transfer your skills and a subset of your experience to other technologies. You'll have to get used to the new technology, but you certainly will be able to make the jump quicker and easier than someone who's focused solely on specific implementations.
Keep your ears, your eyes and your mind open. If you notice that a group of people gets excited about something new, then figure out why. If you notice that something appears to be working well for others, then figure out why. If you notice an increasing stream of criticism on the technology you're using, then figure out why. You'll need information like this to make well-founded decisions about your future.comments powered by Disqus