DEV Community

Cess
Cess

Posted on

Discuss: As a developer would you rather be a specialist or a generalist?

Hello Everyone,

So I have been wanting to ask which is better, being a generalist developer or a specialist developer?

As a developer, would you rather be a generalist, someone who knows a lot about different types of software and can use them to get the job done? or a specialist, someone who specializes in a certain kind of software?

What do you guys think?

Also, I would appreciate it if yรกll joined my online developer community on Twitter to share your articles, ask questions and share the different stuff you are learning. Here is the link

Discussion (26)

Collapse
grahamthedev profile image
GrahamTheDev

The money is in specialisationโ€ฆfor a short while that is, until the technology becomes obsolete (generally 5-10 years).

So my vote is generalist for long term success with a specialism that you focus on at any one time. That way when the recession hits and layoffs happen you can step into another role easily while looking for a job that utilises your specialist area.

Collapse
kinqslee profile image
Soibibo Amakiri

Well for me. I will rather specialize in a favorable stack. But as time goes on. I might add more stack.

Collapse
tqbit profile image
tq-bit • Edited on

TL:DR: Both, one after the other. It doesn't matter what you start with as long as you keep learning.

I've recently learned about T-shaped skills in recruitment. It seems to be a solid approach to building your knowledge in dev - topics.

Specialising is good and necessary, but acquiring more general knowledge gets you out of your comfort zone.

I (accidentally) specialised into Web Development very early. After two years, I started looking beyond the horizon. I feel like learning Typescript made me a better Javascript developer. Also, I've learned a lot about JS Garbage Collection, its Event Loop and the Heap by studying Rust as a system language.

Collapse
bradtaniguchi profile image
Brad

I don't think you can be a specialist without some element of being a generalist. Otherwise you'll probably be missing out on too many external aspects of what you're doing, or miss that bigger picture.

A generalist is usually more achievable, and flexible job wise, so I'd go that route. Plus I find it more fun to be a generalist :D

Collapse
jonrandy profile image
Jon Randy

Do what interests you... If that's lots of things, great! If it's one specific area, fantastic!

Don't pigeonhole yourself. Go wherever your curiosity takes you.

Collapse
thomasjunkos profile image
Thomas Junkใƒ„

Yes, this is some solid advice. I second that.

Up until today I went where things were interesting. E.g. I left my last job years ago because I played Java to the end (up to a level where I found it uninteresting) and wanted to learn more Python. So I resigned and started working in a Python shop (which btw. is turning into a Go shop, which makes it interesting to stay for a while longer). So I went down the generalist road. But not necessary.

There are clear pros:

1) You learn what you like and work with what you like
2) which keeps you motivated and with good motivation
3) your output will be better.

Don't go one way or another only because someone on the internet told you it was the right way to go.

Collapse
jonrandy profile image
Jon Randy

Yup, that's a huge mistake

Collapse
nombrekeff profile image
Keff

You can be both, specialize in one thing and then learn other things too.

I consider myself a generalist, but I specialize in Front-End particularly in Mobile UI with Flutter.

I like being a generalist because I can understand the whole development stack, I think a front end developer should know the basics of how DDBB, design process and apis work and viceversa. But then I specialize in what I'm getting paid to do, to do the best job possible, and to be able to get another job in case I get layed out at some point.

Collapse
natescode profile image
Nathan Hedglin • Edited on

BOTH as others have said.

Generalists last longer. I can pick up new languages, libraries because I understand the fundamental concepts that don't change.

That said, you get a job often for your specialist knowledge.

The 'T' shape skillset is a bit off, imho. Your skills are more like a upsidedown triangle. As you go deeper you're focusing on fewer skills.

"Jack of all trades, master of none but still better than a master of one"

That's the full quote. Very true. There is a balance.

Collapse
diballesteros profile image
Diego (Relatable Code)

As many other comments have mentioned i think the best approach is both. You definitely want to be the go-to in a specific area. This will make you more valuable than others.

However, there should be a baseline knowledge of other concepts (maybe not initially). This will help with collaborating with others and being able to quickly adapt and learn on-the-fly.

There are boundaries of course. You don't want to spread yourself too thin in completely unrelated topics. Use your best judgement and do what you enjoy.

Collapse
eljayadobe profile image
Eljay-Adobe

I'm a generalist. In my experience, specialist developers have better job security and better pay.

To me, those upsides don't compensate for the downsides โ€” narrow focus, smaller playground, and the danger of obsolescence (such as if/when that specialized technology becomes superseded).

Collapse
highasthedn profile image
highasthedn

I have always been a generalist, not only in development. Being a generalist can open you doors which you won't find when you are too specialist. I mean when I need real deep specialist knowledge I know which persons I need to ask.
Meanwhile I own a small company with some developers and I'm sure being my kind of generalist helps me a lot there.

Collapse
netch80 profile image
Valentin Nechayev

T-shape (already mentioned here) is a must. It allows having a basic understanding of a wide bunch of domains while keeping deep lore in a few most appropriate ones. I had to switch a few times between similar but substantially different domains. More so, I had got a case when a variant of burn-out led me to emotional detesting of the area I worked for 8 years... and rather easy move to another one saved productivity.

Collapse
jeremyf profile image
Jeremy Friesen

I'm a generalist developer with some moments of specialization. My strong preference is pursing problems I like solving; and to do that requires a generalist mindset.

I never realized until this year that my two favorite "technologies" were "born" in the same decade as me: SQL and Emacs (though Lisp was from the late 50s).

I was fortunate to have training and early career experience with SQL. This has helped me fundamentally think about data. Even now, with heavy usage of Object Relationship Mapping (ORM) systems like ActiveRecord, I can use that for convenience but go quite deep in SQL to leverage its algebraic power.

And with Emacs, I'm able to keep enhancing my primary text editor and knowledge management tool to help me retrieve things quicker, record mental connections faster, type in my code.

In other words, as a generalist, I've found some solid tools that I keep sharp and on task so that when I need to solve a "new to me" problem, I'm ready to dig in.

Collapse
andrewharpin profile image
Andrew Harpin

To begin with, especially junior, specialist, learn your field.

It's easier to get promoted and once there ask to work on other things, but then specialise in that new area.

That way you become an expert generalist.

The "full stack developer" in web parlance.

Nothing stopping you learning other tech, just don't get distracted by the shiny too much, as your general work will suffer.

Collapse
rollergui profile image
Guilherme

For me, I never wanted to specialize in any tech... I liked learning a lot of different things and it didn't seem worth it to focus on one thing, as it would eventually be outdated, no "new projects" would be started in that specific tech.
6 years working as a programmer, and now I feel a huge gap. It's not hard to find work, but I feel there's nothing outstanding about me. That hurts my ego a bit :P but it also makes me feel that maybe, someday, I won't be a desirable professional anymore ๐Ÿคท

Collapse
rollergui profile image
Guilherme

uhh I forgot to add that, now, I believe it should be both... Specialize in something, but stay flexible and open to learning new things, even if not in a deep level :)

Collapse
chrisgreening profile image
Chris Greening

Depending on the day sometimes it's better to be a generalized specialist and sometimes it's better to be a specialized generalist ๐Ÿ˜œ

I know "generalists" who can get solid jobs anywhere doing anything but I also know specialists that are practically the only person in the world that knows so-and-so DSL or legacy language and they get paid enough to live off of just by going in twice a month and pressing a few buttons (hyperbolizing but you get the point)

I think generalizing is incredibly important (to a degree) for expanding your knowledge within your specialization as it forces you to see other perspectives. For years I was exclusively a Python developer and although I became really, really good at Python I've recently been working a lot in R and this complete shift in perspective has made me an infinitely better Python programmer (and programmer in general). Likewise when I investigated and learned some C I was able to deepen my understanding of Python and again push my specialization inward while at the same time generalizing outward

Kind of a roundabout answer but I prefer a mix of both - too much generalization leads to not enough depth yet too much specialization could lead to stagnation. Seeking out new/deeper generalized experiences can infinitely improve your skills within your specialization

Collapse
dumboprogrammer profile image
Tawhid

Eitherway/Both is fine.It mostly depends on the context.Like in the past I used to be a web dev in general but now I'm mostly a gamedev but that doesn't mean I don't make website or vice versa for someone transitioning.
You can set your foot in the middle.Like a specialist but can do other stuff.
Like: an app developer who can also make websites with modern stack.
As a developer you are bound to learn newer and better technologies to be ahead in general being a guy who can do everything a bit is not good since it means you've mastered nothing.
TL:DR, Master one thing but make sure you have a glimpse of a few other stuff to give yourself a bonus point

Collapse
darkwiiplayer profile image
๐’ŠฉWii ๐Ÿ’–๐Ÿ’›๐Ÿ’š๐Ÿ’™๐Ÿ’œ๐Ÿ’๐Ÿ’Ÿ

"Jack of all trades, master of one" is what I generally aim for. That is, be a generalist, but go more in depth in one (or a few) directions and build some proper expertise in those areas.

Collapse
vulcanwm profile image
Medea

specialist

Collapse
cesscode profile image
Cess Author

Why tho?

Collapse
vulcanwm profile image
Medea

uh because itโ€™s better to know one thing really well than knowing lots of things not that well

Thread Thread
alco profile image
Jakub Stibลฏrek

But you can know multiple things at the same time on the same level. Ofc noone is able to master everything.

What is a generalist in your opinion? E.g. one might think that being a FE dev means that you are a specialist. But there are also people who do only CSS and HTML, compared to them the FE dev is a generalist. I think that one should strive to know the most about a variety of topics and then decide the scope they are comfortable with - we can call that a stack. Meaning that everyone should be as much of a generalist that they can but focus on some subset of the skills.

I agree with @tqbit above. T person that is able to shift the vertical bar from time to time has the upper hand on the market.

Collapse
techmaniacc profile image
Joseph Mania

I would rather go for generalist. But i cant forget to specialize in one area.
GENERALIST: Freelancing, more opportunity
SPECIALISATION:

Collapse
tracygjg profile image
TGJ Gilmore

Standards live longer than technologies so another option is to specialise at the standards level that can last a career.
Some might disagree but it has served me well for 20+ years.