Ask HN: In CS, is it better to be highly specialized or generalized?
To rephrase: should a software dev be a jack of all trades, or a master of one?
To rephrase: should a software dev be a jack of all trades, or a master of one?
— Robert Heinlein, Time Enough for Love
In addition, in some sense it can be easier to be the 80th percentile in five fields with hard work. Whereas being the .999th percentile in one can also require God given talent.
I work as a data scientist who can do some development, stats, ML, design, writing, communication, econ. In any one of those I'm not a specialist.
If your goals in life are to manage a team, company, do more high level strategic or visionary things, then you need to acquire all round knowledge and skills.
Both of their pros and cons. So there is no right or wrong answer. It comes down to who you want to be ultimately. It is always about you.
In my opinion, i'd take the 'be a jack of many trades and a master of some' route.
CS fields are very correlated and being a master in at least __something__ will boost your overall mastery of many other subfields.
At the start of your career, exposure to a lot of fields goes a long way while simultaneously going deeper in one field. Doing this opens a lot of doors and CS changes too fast for you to know what the future holds.
Being a master in at least one field will greatly improve your income potential and help you position yourself professionally. Being familiar with other technologies will help you if you ever need to pivot so you're not too clueless. It also opens you up to what tools are out there so you can choose the right tools for a specific problem (at which point you'll dive deeper into it).