10 comments

[ 4.1 ms ] story [ 29.4 ms ] thread
If the answer isn't "whichever you enjoy", it's probably wrong. There's demand for both.
In my opinion you can't be a successful specialist without first being a decent generalist in at least the fields adjacent to yours.
I guess it also depends on the profession/field.

When you're a doctor, it's vital to learn the fundamentals of different areas of medicine.

Whereas as a developer, you can also just focus on one thing(let's say frontend development) and pick up other areas (backend, databases) on the go, based on your needs.

Most likely a single specialization won’t span your whole career, so have a solid general base and then delve deeper into something you enjoy.

A broad base will allow you to re-train much easier, plus draw parallelisms from your areas of expertise into new areas.

Conversely, being good at a single thing will give you the necessary mental tools to get good at other things too. One of the biggest hurdles beginners face is not knowing how to push through "the gap" and reach a level of competence where they can actually produce work that aligns with their vision. Being able to draw on the memory of already having done that in the past can be very powerful, and can help you acquire new skills more quickly and with more tenacity than others.
It's a bit cliched, but I agree with a T shaped approach. One of my mentors told me that I was wearing too many hats, and I should focus on a single topic and develop deep expertise to advance my career. On the other hand, in a world where technologies get obsolete faster than you can master them, I wouldn't feel safe without a broad base of knowledge.
To be honest, this is exactly what my manager told me. It's also when I was introduced to the T-shaped approach. As a dev, I want to learn multiple subjects, but I've found that mainly focusing on one thing while also educating myself in others is a good approach.
I feel that having a specialism is more a more marketable headline early on in your career (e.g. I am a React Developer). As you become more senior the expectation is for you to take on additional roles such as hiring, coaching and mentoring. This is very hard if you have focused to much on one area and not taken a more general view.

But this is all about what you want from your career. Some people strive for leadership roles (CTO/Tech Lead) and some people prefer to write code (Senior Developer). Both careers are valid options.

For new grads you are probably best off being a generalist in some broad area you’re most interested in (web, data, mobile, low-latency/systems, games) as 1) most places you’ll interview will just ask you the standard DS/algo questions, and 2) you don’t know exactly what you want to do yet. Don’t fret about the litany of skills in job listings, as they are usually overly specific.

With some experience, you may choose to specialize but if you want to go the management route, you’ll have a very interdisciplinary and generalist job.

Source: FAANG engineer from Tier 1 school

(comment deleted)