DEV Community

Cover image for Specialization vs. Generalization: Which Is Better for Programmers?
Ben Halpern Subscriber for CodeNewbie

Posted on

Specialization vs. Generalization: Which Is Better for Programmers?

Are you a programming language specialist or a generalist? Do you prefer to focus on one language and become an expert or learn multiple languages and be a generalist?

As you develop your coding skills, you'll face the decision of whether to specialize in one programming language or learn multiple languages. Which will you choose? A depth of knowledge? Or versatility?

Share your thoughts on this debate in the comments below!


Follow the CodeNewbie Org and #codenewbie for more discussions and online camaraderie!

Top comments (12)

Collapse
 
sylwiavargas profile image
Sylwia Vargas • Edited

Oh! @hola_soy_milk just wrote a really lovely piece about how learning Objective-C has helped him be a better engineer in general:

Collapse
 
ben profile image
Ben Halpern

My answer: You don't have to commit to being a specialist for life to consider applying for a specialist job. If you are willing to commit to specialization, there is nothing stopping you from switching to more generalist, or to another specialty later.

Collapse
 
erinposting profile image
Collapse
 
jmfayard profile image
Jean-Michel ๐Ÿ•ต๐Ÿปโ€โ™‚๏ธ Fayard • Edited

I'm a specialist in one thing: learning new things, which includes teaching others.

Collapse
 
jeromevillamor profile image
Jerome Ryan Villamor

I have tried before to focus only on Java. It turns out that no one cares if you know how memory management works or the best practices in doing unit/integration tests.

What works for my career is that I need to become above average for most languages/tools that my current company is using. We're using docker, Great! Learn that tool. Using Kubernetes? Doesn't matter if I do not have tasks, learn it. Javascript? Time to watch some screencasts. And when I say learn, reading a book or two is more than enough to become average on that certain technology.

After learning all those things and putting them on my resume. I can say that I am a better programmer now and more marketable. Yes, I am not an expert and will never be, but hey I can do so many things :)

Collapse
 
alvaromontoro profile image
Alvaro Montoro • Edited

IMHO it depends on the stage at which the developer is. When starting the career as a developer there's nothing wrong about being generalist. Actually, it would be ideal: learn a little bit of different languages/technologies, find what you like and your passion. Moving forward into mid-level, the developer should have a general idea of what they like, their strengths and weaknesses, and it's time to start specializing (while always keeping up with knowledge and new approaches for other technologies). A senior that is too generalist brings a lot of knowledge to the table, but it may be counterproductive because the performance will likely not be at the senior level for most of the technologies/languages... Which will the person get stuck. There's always time to grow and specialize, and they may be good for leadership/management too (if they are up to it).

Collapse
 
jonrandy profile image
Jon Randy ๐ŸŽ–๏ธ • Edited

Neither, one size does not fit all. ALWAYS do what interests YOU - don't follow the money or the latest trends - you'll enjoy what you do way more that way. You may find that following this path leads you to specialisation, or maybe it won't.

Stay curious.

Collapse
 
leginee profile image
Peter

I would not focus on language, I would focus on the area I want to work on. Roughly I see:
Web development
App development ( including iot)
Data engineering ( Bi, ETL, etc)
Ki development

Start training on language / tools in the area. Think about how I'm your area concepts and ideas repeat. If you feel save expand your knowledge beyond your home turf and look into the next area.

Collapse
 
satriopamungkas profile image
Muhammad Raihan Satrio Putra Pamungkas

I think a generalist would be well-suited to the current unpredictable world. We don't have any guarantees that certain technologies will still exist in the next few years. We've seen in the past how some technologies (such as frameworks) slowly disappear due to market needs leading us to face other technologies.

Therefore, when switching to another focus area, it would be much easier as a generalist because you already know the fundamentals in that focus area. This means you don't have to start from scratch. In terms of career opportunities, you are likely to have a better chance of applying for available jobs more broadly.

Collapse
 
pcabreram1234 profile image
Phillip L. Cabrera M.

The specialization is for the ants. I think we can learn **everything **at different speed. For example I know a little of JavaScript, PHP, HTML, CSS and right now I am learning **Java **as a Job requirement.