Specializing VS. Generalizing

Written by Dan Sackett on November 14, 2014

For programmers, I feel like this debate comes up quite often and I'm sure it extends beyond them too.

In fact, just a couple weeks back we talked about this at lunch for work one day. It seems no one really knows the true solution, but I was hoping to get some feedback and see where people stand.

When I say specializing vs generalizing, I mean the act of becoming really great at a select few things or becoming decent at a large variety of things. For instance, the world of programming has thousands of languages, millions of frameworks, and all kinds of ways to solve complex problems. Those that specialize look at that large ecosystem of technology and choose a few languages and frameworks to truly accel at. They become masters of say Python and the Django web framework while doing very little with other technologies. Someone else may do some Python, PHP, Go, Lua, Haskell for programming languages and many frameworks in each of those.

Of course, a specialist can experience other technology and have a general knowledge of them, but in the end they stick to their guns.

For me, I think it's smart to be the best at a few things and be passable at a few others. It's very challenging to know a lot of things inside and out and by focusing on a few things, you can really differentiate yourself from your peers. But differentiating yourself in that way means you're a peg that fits in a few holes where a generalist is one that can fill a lot of different holes.

I'm a person who wants to continue learning and who isn't OK with becoming stagnant in my career. I want to evolve and become a person that people can come to when they need to learn something. But learning can either be horizontal (many skills) or vertical (few skills in depth). These two paths conflict in a lot of ways and I was hoping to hear some opinions on the two cases.

How do you approach this problem? Do you prefer to have a set of tools that you know inside and out or would you rather have a large toolbox that you can reach into to solve many different problems?

I look forward to input.


comments powered by Disqus