To Specialize or Generalize, That is My Question

Comments 0

Share to social media

One of the big bits of advice that people like to give in the technology community is career advice. Do this kind of work, don’t do this, etc. Truth be told, a lot of this will happen when you start out. I didn’t pick working the help desk, nor did I choose to start doing LAN admin, and even databases were just pure luck when a coworker left.

But as time passes and you do a job or two, a pattern forms in your work, and you start to belong to one of two groups.

  • Generalists: People who try to know all the essential technologies to create and maintain software. These are the handypersons of the technology world. They can do almost anything, it seems. Yet when you reach a certain point, they may not know everything necessary. Most developers will fall into this category.
  • Specialists: People who feel that it is best if you take the time to learn one thing tremendously well. When there are issues with a service, having the specialist will be far more likely to solve a major problem, but typically, many specialists are not equipped to create a complete application. Administrators are more likely to fit into this group, as are some consultants who you hire short-term to do a specific task.

(There is another group that longs to be managers, but I will ignore them for this article.)

Realistically, specialists in one topic will have other general areas that they may work on, but they will look for true depth in their specialty. I spent years learning about the internals of relational servers, how to write and performance-tune complex queries, etc. But even this is more general than some people who become experts strictly in performance tuning.

Conversely, a generalist will be able to work with lots of different technologies but will also form areas (if not specific technologies) that become their specialty as they use specific technologies. While a specialist may choose to be great in one specific language or product, a generalist’s specialty may be many or all procedural languages or perhaps UI design, Java, C#, Visual Basic, PowerShell performance tuning, or reporting.

So, which is better?

It turns out that this is a personal choice you must make as your career progresses. If you are just starting out, I would suggest you think hard and long about what tasks you enjoy. Do you like writing code in a certain language, doing administrative tasks like backups/restores, or just solving general problems as they occur? The beauty of working in technology is that there are a massive number of ways you can contribute.

The only real advice I would give you is not to get tied down with a specialty that you don’t want to. No way did I start working with relational databases at night in my dorm for fun in college. It was only after I was exposed to it professionally that I realized the joy I got from the power that comes from working with and deeply understanding data processing. Look at what you find yourself attracted to and what you have an aptitude for.

For the veterans that have read this far, what path did you choose? Would you do it all again? Any other advice for the newbies? Drop your story in the comments!