Help and advice, I would like some career help and advice.
(this is a cross-post from the programming thread since I figure it will get a different set of people looking at it)
Background: I'm programmer, been in industry 6 years.
I've been going down a road where my skillset is fairly specialized. This is a blessing and a curse--most of the jobs out there I'm simply not qualified for. I don't use javascript on a professional level, I've never used Spring or Hibernate, and devops seems like an excuse to abuse your developers to me. On the other hand, for the right jobs, there basically is no competition because I can effectively be some company's unicorn due to the combination of skills in CS, EE, analysis, and debugging complicated physical systems I have developed. Difficulty: not too many of those jobs are out there looking for what I do, and it's a pretty small subset of general programming work. Your average HN jobs thread doesn't have much I would even feel comfortable applying for.
I have several opportunities I need to choose between that basically run the gamut from continuing to do exactly what I've been doing, specializing further into the analysis side (still coding, but coding less), continuing to do the same *kinds* of things but in a different context, and moving away from the hardware (generalizing).
Do folks have experience with this sort of tradeoff in specialization versus limiting the number of jobs you are qualified for, and what are the ramifications you have experienced as you have made your decision in your career? For ease of argument, let's pretend they all pay the same.
Posts
To be a good generalist I think you have to start as a specialist. So it sounds like you're doing it in the right order at least?
Generalist + experience = management, which in turn means writing less code, but it also means a wider band of opportunity provided you can learn all the soft skills that must come with managment
Being a specialist can be good, but it's a different kind of hard work to keep the ball rolling. You've got to stay on the razor edge of your particular sub-specialty, and hope that it doesn't get obsoleted
I began my career as a flash developer, and I mastered Actionscript development just in time for it to be destroyed by the iPhone. Nothing I could do about it except pick up an Objective-C book and throw the better part of 3 years of experience in the trash
I think any sane person can only tolerate that 2 or 3 times in their life at best
If you think that you can be a good manager or a leader, then you should do it. If you're not confident about it, then perhaps not... but many people fake it and get away with it. When I wrapped up my career I was managing 4 people and spending about 6 hours of an 8 hour day in meetings. Some people cannot take that.
The only other kinds of generalists are like... enterprise system consultants, solo contractors, sysadmins at small businesses (more or less what I do right now). These things are pretty tricky to aspire to, for a variety of reasons, and not really traditional career arcs (in my opinion)
we also talk about other random shit and clown upon each other
One nice thing I do have is job security though. It's tough to hire a new coder, especially a younger one, and tell them to go learn some ancient system. And they can't really lay us off because they need to have a knowledgeable developer to call when some device takes a shit. Most importantly the company has a good culture and I get along with my boss, and I've done ok with raises so far.
At other jobs in the past I've been laid off, forced to relocate, and had my pay fall behind for years while they made excuses about having no money for raises, and been given 'promotions' that came with more work and no additional money. I would also lose sleep due to just overwhelming frustration at how the company worked. The most important thing for me is that I have a job that doesn't have any of that. If I get a little bit of impostor syndrome or feel like I'm falling behind on tech, I think it's a fair trade off.
This is going to be huge (check out the the ms build keynote for an integrated example) and there's very few with the skillset to be "full stack" in this space.
You will get the flexibility of meaningful cloud exposure with some level of job security as industrial sensors are unlikely to hit commodity code status any time soon.
This is a somewhat-to-highly invalid assumption and is not a good basis for examining this problem.
Deeply specialized knowledge and skills are distinguished from "generalist" jobs. A person who has deep knowledge about multiple things might be a valuable kind of generalist, but is no longer the garden variety generalist. If the job could be done by literally any new college grad with a CS degree regardless of the concentration of their degree and their work/research experience, it is highly unlikely that that job will have equal pay to a job demanding deeply specialized knowledge and much experience.
Now, it is possible it might have MORE pay (e.g. the new college grad got a job at Facebook or Google, compared to the electrical engineer grinding it out for a widget factory in Nowhere,Midwest), but it is unlikely that they will have equal salary negotiation power, network reputation, job qualification, etc.
It's wrong to think that every "generalist" is equally capable. The jobs that require skills you don't have won't hire a generalist without those skills, either. That doesn't mean that the generalist without that skills isn't a generalist. If the job wants a generalist programmer that can develop UI whatevers and backend whatevers and database whatevers, they aren't going to hire somebody who only has a cursory knowledge of each of those things.
So if the question is "should I learn more things", the answer is usually yes. But having those things developed to a level where someone would be willing to pay you significant money for your capacity in those things is a whole nother question. The industry that you are in might be in decline, but it sounds like you have domain skills that are still relevant and can be applied elsewhere, it's just that you might need some work to do in order to build up the specific knowledge of another industry. Sure, you might not be programming in the hottest JS thing, but complex electrical engineering skills coupled with architecture and code development for them remain valuable: the various companies of Elon Musk, the device divisions of Google/Microsoft/etc., consumer electronics divisions of many others would all probably have room for you.