DEV Community

Cover image for #DEVDiscuss: to Specialize or to Generalize?
Erin Bensinger for The DEV Team

Posted on • Edited on

#DEVDiscuss: to Specialize or to Generalize?

image created by Margaux Peltat for the Chilled Cow YouTube channel

Time for #DEVDiscuss — right here on DEV 😎

Inspired by @codewithvoid's Top 7 post, tonight’s topic is...should you specialize or generalize as a developer? 🤔


Questions:

  • Have you chosen to specialize or generalize as a developer?
  • What are the pros and cons of your approach?
  • What are the pros and cons of the other approach?
  • Any triumphs, fails, or other stories you'd like to share on this topic?

Top comments (18)

Collapse
 
bcostaaa01 profile image
Bruno

I would say: depends on the stage of your career.

For someone starting (<2 y), I would say “generalise” until you get more experience to be able to have more opportunities. Then, once you get more experienced and have found something you really enjoy in specific and believe would be a good place to become an “expert”.

Still, being able to learn new things and do whatever comes is the way to go, in my opinion. Depends also on the market.

Collapse
 
ben profile image
Ben Halpern

Speaking as a someone who partakes in the hiring of developers: Some "specialist" roles, which are not that specialized, are really hard to hire for, but if we look for generalists, we get hundreds of applications.

I think you can learn 1+ "specialties" while still being open to more generalist roles and pursuits. Specializing can open opportunities, and you're never "only" a specialist, it's more how you play the game of career opportunism.

If you take that above info and think about doing some research and pursuing a certain amount of specialization — know a couple things:

  • You can dabble in specialization and shift back out of it if it doesn't work.
  • You shouldn't do anything you really don't like. You don't have to love every element of your profession, but it's possible to like most of it.
Collapse
 
kathryngrayson profile image
Kathryn Grayson Nanz

In my opinion, generalizing is the way to go. The tech moves so fast that even if you specialize, there's a fair chance the thing you specialized in will be outdated within a matter of years. Flexibility and picking up new concepts quickly is the name of the game for developers, IMO.

I do think there's some middle ground on this when it comes to specializing in a higher-level way – specializing in Front-end Development, for example, vs React or Angular specifically. Focus on languages or skillsets, not frameworks, tools, or libraries.

Ultimately, though, I think most devs will naturally specialize over the course of their career based on the things they find most interesting and are most adept at. My advice would be: let it happen organically, and don't feel like you have to choose or force a specialization too early in your career!

Collapse
 
syntaxseed profile image
SyntaxSeed (Sherri W)

This is a VERY good point. Imagine being specialized in something like Flash. 😥 Lotsa eggs in one basket.

Collapse
 
kathryngrayson profile image
Kathryn Grayson Nanz

I think it's honestly inevitable that at some point in a developer's career, they will end up "specialized" in a tech that gets depreciated. I've got a lot of hours logged in React, personally – I don't regret that choice, and it's been really beneficial to my career...and yet, at the same time, I'd be pretty surprised if it's what I'm still doing in 10 years.

With that perspective, I don't think of or market myself as a "React developer" (even though that might be most accurate right now); I use "Front-end developer and UI designer". That feels more accurate to where I want my career to go, and it doesn't limit my options in the current moment.

Collapse
 
pengeszikra profile image
Peter Vivo

If I remember my 30+ years development carrier, then I told, time to time I specialize for something, but focus was changed really much, so this give me a general developer knowledge. I started with Basic and goes to direction of Z80 assembly to another path, some time work as graphic designer and later flash developer and lot of other things. Currently my react frontend skill transform to nextjs fullstack. Last month spend of playing with AI - how can I insert into my workflow.

Collapse
 
reinhart1010 profile image
Reinhart Previano K. • Edited

The skill and career journey I've adopted so far is the diamond approach:

Image description

As a beginner, it's okay to specialize on one thing before moving to others. But specialization should have its limits.

I started myself in late-2013 as a (HTML and CSS) web developer, learned more about the DOM, and responsive design, before generalizing myself to use more and more web libraries and frameworks.

Getting yourself in either generalization's or specialization's comfort zone is risky, because:

  • Generalization could mean that you've tried all of these technologies but still have little average experience on these, and
    • Example: I've learned today's great web frameworks (React, Vue, Svelte, CodeIgniter, Laravel, etc.) but I still don't understand how to optimize my apps created by each framework
  • Specialization contains a risk of working with aging pieces of tech
    • Example: I'm doomed as a desktop app/program developer; people are care those smartphones and tablets when I can just make Java-based desktop programs.

This diamond approach is indeed a repeating pattern. After re-specializing yourself from generalization, you'll need to re-generalize again before specializing on another one.

This is great because one day, you'll become a generalist who also specializing on each fields. Or in other words, a multiple-T-shaped developer, or even a comb-shaped one. You can learn new, emerging things very quickly due to your past, specialized experiences. And you'll be different to those who just either want to stick with one or two languages/frameworks or just want to learn as many things as possible.

Collapse
 
oskarkaminski profile image
Oskar

I guess we have to become generalists to become good specialists.
We have to understand the landscape very well to understand how and why its assembled this way, what problems it's causing, understand where the whole thing is going, and what problems will become more pressing.

Collapse
 
fleker profile image
Nick

I've generalized a lot, sometimes due to work needing me to shift tasks. Generalizing allows one to form connections between different technologies and I think has helped me to learn even more by giving me a nudge in the new directions.

Collapse
 
cristuker profile image
Cristian Magalhães

Its a really depends what you want for you carrer or what you like to do in your job. My example I really like to code with JS, I tried java, python, go but any of these make me happy like JS in my work. So i'm focusing in specialize in JS. I think to be a specialize is more easy beacause you have a definied route to follow. When you are a generalize dev you have so many options, this can be confuse in some point.

Collapse
 
tqbit profile image
tq-bit

Why not both? I figure the T-styled person approach is actually viable outside of the HR department.

It's also called 'Generalised Specialist'

en.wikipedia.org/wiki/T-shaped_skills

Collapse
 
syntaxseed profile image
SyntaxSeed (Sherri W) • Edited

I'd say generalize. I know some about a lot of things & I know a ton about very few things. Besides this just being more interesting & fun.... getting over that initial hump of a hello-world case in that technology, finding out the good docs & resources, getting over the intimidation, setting up tooling, etc.... that is 80% of the climb. Knowing what is useful when is so valuable.

Once you know enough to start, it's pretty easy to drill deeper as needed.

Collapse
 
syntaxseed profile image
SyntaxSeed (Sherri W)

But be aware, there is very little prestige in being a jack or jill of all skills. You don't get to be a guru at something, and you rarely get the recognition that the master of X skill will get. Not much bragging rights because you rarely break new ground in that area.

But there is a deep confidence in having extensive experience in learning new things. Throw me at a problem & it WILL get solved no matter what it takes. I'd rather have a toolbox full of basic tools, than only have one very, very fancy hammer.