I dared initiating the age old debate on twitter — to specialize or generalize?
86 replies later I think I have a better understanding of the best course of action for me.
My goal with this article is to summarize the discussion and present arguments people have for their choice. Hope this will help you in making an informed decision that is ideal for your career stage.
Let’s dive in! 🚀
TL;DR
Poll Results
Here’s a quick summary of the responses.
Looking at the results ~45% of developers believe that specialization is the way to go, while ~29% are inclined towards generalization.
While we have a clear winner, it’s important to examine the reasoning and motivations behind these responses.
Rationale For Specialization
🔸 More job opportunities. Specializing can lead to more opportunities and success as a freelancer or contractor. It’s also clear to your employer what value you bring to the table.
🔸 Building credibility. With specialization you build credibility by developing a deep understanding of the subject matter. It gives you the ability to solve complex problems and create innovative solutions.
🔸 To show expertise. If you are working on a specific area or technology for 3-4 years, you naturally build a reputation as an expert.
Rationale For Generalization
🔸 More flexibility. With your ability to quickly understand and work with multiple technologies as a generalist, you can move into different roles and industries.
🔸 Better adaptability. You will easily adapt to new situations or technologies that you will encounter in your work.
🔸 To find passion. Generalizing at first can help in finding what you love. Something that you can focus on for a long period of time and make it your speciality.
Conclusion
Major takeaway for me from the discussion is - there is no RIGHT answer to this question. Also, your choice can change as you will progress in career.
Having said that, share in comments what do you think — should developers specialize or generalize?
If you liked this discussion, follow me for more of these.
Latest comments (42)
I wrote an article a while ago, about the benefits of being exposed to multiple languages and technologies. One benefit for it that I don't see here, is that it can broaden your mind, and improve your problem solving skills, after you get to see how it can be solved in different ways in different technologies.
But i do still see the value of specialisation. I few projects that I was in could sure use an specialist.
Valid point. Thanks for reading Renato.
Depends on the market: in high competitive, overcrouded, dinamic and fast market there can't be successful alternative to specialization. Where there is lack of supply, for reasons demographics or regulatory, then can exist the need for generalists. For the most part we work in the first environment.
I would say generalize early in your career and specialize later on once you know what you enjoy doing. That said you might specialize in e.g. DevSecOps but generalize in what tech you use to do that.
Or you might work at a small company and specialize in e.g. Python but generalize in doing a bit of everything with that.
Only on the context of Developer: My personal opinion, It is better to start with a Specialization...for ex: I can start with being a good Assembly programmer and i stabilize it...then having it as a foundation to become better at Generalization and take up newer technologies to work on. As we grow the Generalization helps more.Also liked to take a leaf out of Einstein's work...he initially came out with Special Theory of Relativity and then went on after decades of work in to General Theory of Relativity...So it evolves organically once the maturity and the grasp develops.
Nice article. I have always been a generalist but ... in hindsight ... I'm not sure. In that many technologies come and go ... being a generalist has some advantage there ... but I often look up how best to do something in a technology I'm using (or why something isn't working) and I actually envy the folks who have such a deep subject matter understanding. So my answer would have been ... No idea.
For me it's all about context, but in the end will be both.
While you're seeking for your first opportunity you'll end up going with the little you know about everything you've seen, and put some effort for the latest hiring trends, thus generalizing.
Once you've laid your stable career path you'll probably end up seeing a lot about a specific context, thus specializing.
And throughout your mid-senior path you'll use both to become a better professional. Knowing a little bit of it all and a lot about one/a few will complement each other.
I support do generalizing first, especially when you are at the early stage of your career. It's better to try different tools and absorb as much knowledge as possible first and then to find out which tech area you are really interested in. but sometimes I do felt tired continuing to learn new things everyday. It's paradoxical.
Interesting point. Thank you for sharing :)
Asking such a question is generalization in itself.
Those who replied "it depends" are the only ones who were right.
Imagine there are two people. The first one knows he loves kernels and compilers so he specializes in that. The second one doesn't really have a preference and just wants to make good money and go with the flow so he doesn't specialize.
Now if you chose either specialization or generalization you'd be wrong because you'd be denying the existence of one of these people.
So it depends. Next time ask concrete questions that derive more value.
Still, I believe specialization is the right way
Why so?
I'm team specialize. Bruce Lee once said he wasn't scared of an enemy who learnt a thousand techniques but he was scared of the enemy who learnt a single technique a thousand times.
Thanks for sharing Gutopro :)
I default to a "whatever the moment demands" strategy. That is, be ready to do either depending on what you're doing for work at that time. Life will give you plenty of opportunities to do both. Picking one and closing your mind off to the other will lead to a lot of work dissatisfaction.
Be ready to switch between the two depending on current work demands, this will lead to a more fulfilling work experience.
Good point 👍. Thanks for the add.
Spend your first few years generalizing to build a good foundation. Then at some point you'll have the confidence and opportunity to try something a bit more specific / specialized and you can decide to work towards the specialization.
If that specialization doesn't work out, you still have your generalized experience to fall back on and it helps taking on a new specialization later on.
💯 Thanks for the add Tinus.
👍👍
I generalize--there's never something you shouldn't know at a cursory level, at least, enough to know where you'd start to work it and fold it in if you needed to--but every now and then you do come across a topic/technology that seems both particularly interesting and useful. It's worth specializing in a small handful of these to highlight your skills and expertise. But I live in deathly fear of getting pigeon-holed so overspecialization is definitely something that keeps me up at night. "Hey, you know fortran? LISTEN UP EVERYONE WE HAVE A NEW FORTRAN GUY!" (big mistake) "Oh you know more than average about sql? GUESS WHAT YOU'RE OUR NEW DATABASE ADMINISTRATOR!" (drive nails through my eyeballs please it feels better)
Commit strip expresed it very easily in this strip