Developers Shouldn’t Specialize

16 commentsWritten on October 31st, 2010 by
Categories: Opinions, work/career

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.

  • http://palelocust.com Nate

    I couldn’t agree with this post more. I’ve seen it from both sides. I’ve talked with people who have claimed that thanks to MS they’ll never be without a job. I usually counter with something along the lines of “I know how to think, so I won’t be without a job.”

  • Pingback: Tweets that mention Developers Shouldn’t Specialize | The Inquisitive Coder – Davy Brion's Blog -- Topsy.com

  • http://www.timvw.be Tim Van Wassenhove

    I don’t agree. Even as a non-specialized developer you’re invested too.

    - Superficial knowledge/understanding is simply not enough to understand the ins and outs of a given technology/architecture/paradigm/approach…
    => You will know very little about a broad range of topcis, which doesn’t buy you anything.

    - On the other hand, in order to compare you need to have tried atleast two different options.

  • http://www.timvw.be Tim Van Wassenhove

    I see a very bright future for Silverlight developers…. (next to VB6 and COM developers…)

  • http://davybrion.com Davy Brion

    @Tim

    my point isn’t that you should get little knowledge of a broad range of topics. Focus on what interests you, and by all means, go in as deep as you want to. The point is that:
    1) you need to make sure that you remain willing to come back out again, and be just as willing to go in as deep as you did before in a different technology.
    2) no matter how deep you’re into a certain technology, keep paying attention to what is going on in other communities or with other technologies

    When i’m working with something, i want to know about the details that most people don’t even care about. I don’t know why, that’s just the kinda guy that i am. That doesn’t mean that i have to completely buy into it, or that i have to follow the rules of the proprietor of the technology, or the community around it. I’ll never focus on one single piece of technology because any piece of technology is a temporal fact, and i’d like to think that my skills and my career aren’t. That’ll never prevent me from trying to do the best job i can with whatever piece of technology i have (or want) to use.

  • http://www.newitup.com/ Dan

    I completely agree with this post. Even if you stay invested in a particular technology because it pays the bills you genuinely enjoy programming in it, it benefits you to see how people are accomplishing similar things in different technologies. It may give you a new perspective on how you code in your primary language to solve a problem in a better way.

    This is the same thing that the Pragmatic Programmer book talks about with choosing the right tool for the job. Often times, specialized developers will pull their hair out trying to figure out how to accomplish something in their technology of choice when there may be a better technology out there to handle that specific task. Never limit yourself.

  • Ian Stirk

    Perhaps the situation is best summed up by eminent Victorian Thomas Henry Huxley, who said \Try to learn something about everything and everything about something.\

    http://en.wikiquote.org/wiki/Thomas_Henry_Huxley

  • http://www.geekswithblogs.com/alternativedotnet Michel Grootjans

    Just ‘stumbled’ across this one on the same subject

    http://gettingreal.37signals.com/ch08_Get_Well_Rounded_Individuals.php

  • dave

    @tim

    Those who specialized in vb5/6/COM had plenty of time, plenty, to transition to vb.net. They also have their own to specialty, that of converting custom vb/vba applications to .net standalone and intranet applications. Many developers have gone this route and are retiring off this very thing.

  • http://gabriel.lozano-moran.name Gabriel Lozano-Moran

    This is true if you are a freelancer working with 3 months contracts and you are unsure what the next 3 months will bring to you but if you are working on a 2-year project IMHO there is nothing wrong in specializing in the technologies you are using at that specific moment as I do. What you are referring to are people staying in their comfort zone and that has got in all honestly nothing to do with specializing.

  • Oziel Jose

    Interesting how much that idea dont cut when translated to open source frameworks like rails or django.

    That logic only works to mainly MS products. I remember one day when i discussed with a .NET enthusiast and he said that silverlight was the future, and that future depends on MS, so you can realize that his “future” depended on a specific company not on the actual technology.

    Very few open source community based projects actually die.

  • Danny

    I think your title is possibly wrong, if not your post. You *have* to specialize. For a curious person this can be almost physically painful but there is not enough time to leave your mind open to every new technology, to read all of the material on each that you would have to, in order to become comfortably productive with it. If you don’t specialise, and if you don’t erect walls against information about areas on which you have chosen not to focus, you’ll get confused, or get nothing done, or probably both.

  • http://www.open-voip.gr/index_en.html George Nikolaropoulos

    I could not agree more with your post. I have been involved in various similar discussions with other developers and I get quite sad when I see that people prefer to refer to themselves as Java/C#/Php/etc developers. It’s all about computer science, if you don’t get the ideas, if you can’t focus on the technology and where it’s going then you just can’t get far enough. Focusing on the tools isn’t the point and programming languages are just that, TOOLS.
    At least that is my point of view and the most successful people I have met around the globe were the ones that fit the profile you describe in your blog.

    I think you summarised it all with the following phrase:
    “I’ll never focus on one single piece of technology because any piece of technology is a temporal fact, and i’d like to think that my skills and my career aren’t.”. There is nothing more to say after that…

  • Pingback: Is it better to be a jack-of-all-trades or a specialist in a language? - Quora

  • Pingback: Learn To Work With The Web, Instead Of Against It | The Inquisitive Coder – Davy Brion's Blog

  • Pingback: Episode 1: What Makes a Good Developer? | DEVELOPOLOGY