Ask HN: Do you regret being a generalist?

236 points by nonasktell ↗ HN
I'm a fairly young SWE in my early twenties, and I've tried a bit of everything.

Fullstack web dev, a bit of cyber security, a bit of AI, mobile apps, all kind of automation/bots/mass scraping, growth hacking, small games, low level C...

And I'm starting to wonder if I should specialize.

I've always been interested by AI, but since it's such a large/complex field, I never really took the time to dedicate myself to it completely because I'm always interested by 10 things at the same time.

I have absolutely zero doubts about my employability, but I'm afraid to regret it long term if I don't specialize in an interesting field.

Do you regret being a generalist? Have you been one in the past and then changed? In that case what do you prefer? Do you regret it?

230 comments

[ 2.7 ms ] story [ 240 ms ] thread
I don’t. And generalist is a flexible term. For my career it means frontend, or backend, team lead, or IC. There have been a few points where I thought “I don’t ever want to write browser code again” and “all I want to do is UI”. I’ve built shopping carts, government tax websites, worked in automotive, and now I build tools to manage robots. I suspect if I had been narrow in my field I wouldn’t have had the opportunities that I’ve enjoyed.

I sometimes think a narrower, deep specialization might have yielded a bigger paycheck, but overall I think I’m happier being able to explore broader fields and concepts.

As a final note I’ll say that you’ve got plenty of time to generalize and then decide to specialize. Bring in your early twenties is far more time than it feels like right now.

Nope.

Mid thirties and being a generalist means that not only am I employable, my breadth of experience allows me to bring together things from places others would be unaware of.

I occasionally wish i was more of a specialist, but usually chalk it up to the sort of all pervading impostor syndrome that goes on in software development circles.

If someone wants to put me in a position based on my current skills where I end up becoming an expert and they pay for that time, then it will happen. Otherwise I'll just keep learning enough to be useful in dozens of smaller ways. From the browser's JS engine event handling at the bottom of Flux/Redux to how Kubernetes works and how to do useful stuff with it, to 3D printer firmware and how my drill press works.

Why do you have no doubts about your employability? When I was in my early twenties I felt pretty much the same way, but then the rest of my twenties proved different
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyse a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
On the flip side, that’s a 50-year old quote and maybe times have changed?
Maybe the specifics have changed but I'd argue the general sentiment remains valid. And at least half of those specifics still apply.
Have humans really changed in the last 2000 years? You can still find books today published back during Roman times complaining about kids these days and how they mispronounce latin.
We have changed in some important ways in the last 20 years, and are yet the same in other ways as our nearest primates today and therefore probably our ancestors 2 million years ago.

When we all have smartphones with access to WolframAlpha, do we need to know how to solve equations ourselves, or is it sufficient to just know how to phrase the problem so the software can answer it? Even excluding vegetarians and vegans, who even has access to hogs to butcher them — and given food delivery options, how many need to bother even if they can?

What do you think of HN's cstross take in his novel _Saturn's Children_ ?

> Please excuse my lack of depth; I'm a generalist, not a specialist.

> Why bother learning all that biochemistry stuff --- or how to design a building, or conn a boat, or balance accounts, or solve equations, or comfort the dying --- when you can get other people to do all that for you in exchange for a blow job?

(to me, it seems to be more a blow job specialist's view than that of an actual generalist, but ...)

You can replace some parts of it, but the core message is timeless.
Fair enough, nowadays you're probably better off writing a non-rhyming poem as opposed to a sonnet (at least if you're trying to be trendy). However I think a lot of the other skills are attainable and even worthwhile.
I don’t know know if anything has changed but sometimes it feels like most people today can’t do a single one of those things. Maybe it was always an unrealistic expectation, though.
I’d add:

  - write an effective contract and be able to tell if one that someone hands you is reasonable
  - be able to explain to people you feel some responsibility towards how to install and operate a VPN
  - have a grip on basic statistics and economics
  - cook a tasty meal from grains, legumes, vegetables and/or fungi
(comment deleted)
Thank you for making me laugh on my more than crappy day :)

> plan an invasion

Why would one need this ? [hahahaha]

> Why would one need this?

You'll see! :) (seriously though, even if you are not planning any invasions in the foreseeable future, you need to think like an attacker to successfully defend against attackers).

Fair enough :)
If you're not invading because you can't, you're not good: you're just useless.

You need to be able to invade and not do it to be good.

What if you know you /can/ learn how to do that but make a conscious choice not to take on that ability? Then what if you know you can but rank that ability as being too far down the list in terms of its benefit to you, your family, your neighbors and the human race to supplant time spent learning X or doing Y. For whatever you feel are a good values of X & Y?

This more "not invading AND you can't" rather than "because." Seems like a reasonable thing to me.

"I decline to shoot anyone with a gun and I can't." That seems like a position taken by some large number of pretty reasonable people in a many contexts that seem, at the very least, justifiable.

I actually, for real, have a slide deck about starting an empire. I did it as a joke for my friends, it's formatted and phrased as a startup pitch deck, but an invasion is required for one of the milestones. So you never know!
> Take over a small country

Should be on every todo list.

The day you decide to play Crusader Kings 3 or a grand strategy game.

It requires some lateral thinking to figure out how can your dynasty conquer the entire British island, subduing the Scots, the Norwegian, the Saxons while being at war with France and you're just a lowly Irish duke with a crippled heir.

You're quoting someone — you should use quote marks and add an attribution.
Should is a banned word
Why is that? Is it against english grammar or something?
The world is full of ‘should’s but most of them are just constructs.
"A human being should be mediocre at everything"

Great advice there.

"Jack of all trades, master of none, is oftentimes better than master of one."

An average human to have an average life must know how to cook food, do arithmetic, read a book, write a letter, use a computer, learn a trade. Even living a primitive life, a human to survive needs to know and do more than any other animal. This is why we have our own enormous and very energy-intensive brains and not a shared hive mind. Being average is what we excel at as a species.

love that: specialization is for insects.
A popular quote among those who believe they're on its good side, but also specialization is the basis of our entire society and economy. All of software is a specialty. The most successful people are neither 100% specialist nor 100% generalist. "T-shaped" is the common term - at least slightly competent across many skill areas, very deep in a few. A team or larger organization made up of people with complementary skills (and temperaments) will consistently outperform one where everyone came out of the same cookie cutter.

BTW that's not the worst way Heinlein misled half of my nerd generation, but that's a topic for a different day and certainly a better venue.

Become a DevSecOps engineer. Your skills set are in demand because you understand all three important areas
No. The demands for specialized roles shift from epoch to epoch, but being smart on negotiation, strategy, sales, marketing, and communication will never go away.
Not at all! Every time I think I might’ve doubted it I’m blessed to be able to continue generalizing out of whatever specialized corner my career seems to head towards, and to continue to be effective doing meaningful work.
Being a generalist certainly makes cocktail parties more interesting. Being a little good at everything makes you more employable as well, you don't get locked into 1 niche. The T-shaped person is the ideal. You should be great at 1 thing and decent at many other things, but always keep the T-shape. Keep an identity to center your varied experiences around. It will keep the main thing and the auxiliary things interesting in tandem.
Why is T-shaped ideal? I’ve heard this before but it seems arbitrary. What about “W” or “U” or pick your favorite letter?
It takes a long time to get truly skilled in something. What we call an expert is really what a reasonably intelligent person can be expected to learn about a single topic within a lifetime. The gains in one area compound on themself. Given that these gains compound, you can't learn 2 things half as well. So the T-shape represents the constraint that you only have a shot at becoming an expert at 1 thing. Spend 80% of your time on that and 20% on the rest.

The Pareto principle (80/20 rule) also implies that you only need to read a handful of books on a single subject to know more about it than most people. The knowledge gains become marginal unless you focus most of your time on it. So the things that you find interesting that aren't your main thing, just "learn the ropes" and move on back to your area of expertise. That's the most efficient traversal of the Sum of Human Knowledge: Familiarize yourself with the lay of the land, then focus most of your energy on some place that hasn't been mapped yet.

This is a complex topic!

> you only need to read a handful of books on a single subject to know more about it than most people.

It's easier than that! Just reading (in full) the Wikipedia article about something you probably makes you more knowledgeable than 90% of the general population. Reading a whole book about it -- maybe 99%.

Specialists are much more interesting to talk to than generalists because I find that usually "generalist" means "someone who knows everything at a surface level", whereas specialists tend to have deep domain knowledge.
I'm mid thirties, went from full stack dev to DevOps to sre. No real regrets on not specializing in a field, however I do wish I had spent more time contributing to some specific open source project that's heavily used. I think generalist knowledge + in depth knowledge of some widely used codebase would be a bit more lucrative.
I guess there are arguments for both sides, but to me DevOps is specialized. "Full Stack" is more general development.
Yes and no. No, because I think being a generalist has allowed me to offer value and insights that set me apart from others. I like knowing a bit about everything and I think my willingness to learn and explore has worked out really well.

On the flipside, before I moved to my current company, I did struggle with promotions at times because I wasn’t seen as a specialist in any one area. The overall value that I saw in being a generalist and that others used to their advantage wasn’t rewarded the same way as it was for peers who were focused on just one thing.

So I don’t regret it and I do think there is real value in being a generalist. But be prepared to have to work harder to show that value to others.

This has been my experience as well. I have a lot of context on a lot of different things and projects I have been (or still am) involved in. I've been allocated by managers to partner teams to help, I've jumped on a lot of different projects (all super interesting) and that allowed me to build a very diverse portfolio of skills (and more importantly, improve on my ability to "get up to speed" with completely new codebases and projects, which is something a lot of people don't have).

My manager knows that if there's some new project brewing or some specific thing that needs someone to look at, he'll likely ask me to take a look. I enjoy being that "jolly" player in the team when it comes to this stuff, however there are a lot of downsides to it. I've doubted myself a lot (and still do) with impostor syndrome when I see my coworkers do super amazing very technically detailed stuff that I just simply cannot understand. See them whip out extremely specific nuggets of knowledge and very technical reports on stuff that flies waaaay over my head. They are absolute geniuses whereas I feel like I'm just here to "fill a gap" and not much more (I know that's not REALLY it but... the voice at the back of my head tells me otherwise). I've had times in my career where I asked myself "what did I do the last few months?" and the answer was "I have no idea" because I'd be flipflopping around writing a few line changes here and there, not having a codebase that I'd specifically "own" myself, etc. It can be emotionally tough at times.

Still, I enjoy it.

Heck no I regret nothing.

I can program anything, bring me your dead and I will raise it.

Specializing, that's called a job. Work is work and they have a stack you gotta use, better or worse.

No one can take the hacker out of the hacker though.

My resume in terms of languages basically goes back in time, where I'm "expert" of what I use every day, but what I haven't used for a while I just put "good".

How do you sell yourself as a specialist to a company with a stack? Simple, "I don't know X but I'm keen to learn. I'm sure I can scale up to it". If they pass on you, it wasn't meant to be. As a job, your job is to return higher value than your cost. If you do that within a team, you're a net positive. Whether it's by teaching what you know as an expert, of coming up and scaling up to help wherever you can.

Either way, there are very few stacks that are permanent enough that you could be an expert in the matter for decades. Things simply move too fast.

So get behind any shiny new stack that you fancy and become a subject expert, it might pay the bills in 5 years. If not, you probably learnt transferable skills. At the end of the day, no matter the language, stack, team, we're just all trying to get the computer to do X.

This. This is exactly how I feel. Instead of waiting for work, I can find work and get dangerous quickly anywhere. Try me.
The counterpoint to this is the C developer who promises they can scale up to C++ and then takes a disproportionate amount of review time to be taught not to use malloc/free/new/delete/etc.
This is why I say I can do any language but C/C++. It’s a skill I’m sure I could build, but it’s not going to be pretty at first.
Educate me, pkease: why no new or delete? Does C++ now discourage heap allocation or is the common practice to use smart pointers, etc.?
Constructing into a unique_ptr[1] will mean you don't have to risk forgetting to delete it or risk managing something you don't own. You'll also sometimes get compiler spew that you'll learn is telling you you're trying to do something nonsensical e.g. use its copy ctor. In contrast, if you try to copy a raw pointer that is intended to be unique then you get a copy of a pointer and a Heisenbug.

Also a lot can be done with things that are on the heap but act as local variables.

[1] You probably don't actually need a shared_ptr and if you do then it won't stop you from creating memory leaks.

Yep. In new code you should use smart pointers for allocation as much as you can.
> ... If not, you probably learnt transferable skills.

Actually, I like to think that I focus primarily on the "transferable skills" part, with languages being secondary. Many patterns, algorithms and data structures are quite general from language to language, while they can be quite specific to a problem domain.

Once you know 10-20 languages, learning another is usually tivial, even though learning most libraries, style guides, etc requries some more effort. Properly learning the ideas are harder, but also more rewarding.

Many devs will use structures like HashMaps based on heuristics or cookbook approach. But when you're able to see the similarities and differences between HashMaps within microservices in k8s, hash joins in a RDBMS or broadcast cash joins in Spark, and you understand the strengths, weaknesses and compromizes of each, you have a type of understanding that almost certainly will be useful in whatever langauge is popular 20-30 years from now.

I'm a generalist that also knows business and UX. It does cut me off from some jobs, and I am fine with that, I would probably get bored by those jobs anyway. Follow your interests where they may take you. The IT industry is vast and needs all sorts of people, might as well go with what makes you happy.
Think about the breadth of your experience with perspective of where you want to land. You sound like a person that likes learning and applying SW tech. That is great for a generalist role or a maybe a CTO of a varied SW tech stack. Is that trajectory where you want to land? If you want to be in a role where you need to be responsible for multi-disciplinary stacks, you don't sound like a generalist. For SW, you do. I hope your experiences line you up for the role you want.
A generalist technologist has a lot of uses. I successfuløy employ myself as a generalist technologist and let Subject matter expert or coders take over when we go deeper into these territories.

Follow your passion for technology it almost cannot go wrong if you learn by being passionate and work in tech.

No. Being a generalist is awesome. I get to follow wherever my interests lead and I'm interested in a lot of things. I don't know what I would do with myself if I had to focus on one narrow piece of it for years on end.

What I do regret is not being better at marketing and sales. It has been difficult to find work at times because I don't fit neatly into an employable box.

The more different things anyone does over time, the more you become a generalist.

It reminds me of a quote where an expert is someone who knows more and more about less and less. That seems true for specialists and generalists.

Generalists can connect dots between unrelated that specialists might not.

Generalists can build and connect many layers.

The chasing of shiny objects slows down once you start seeing how little is actually new.

Serving the solving of problems that make a positive impact for users is important to know what generalists can do that’s very unique. This helps inform what you might want to go deep in vs broad.

For me it was the realization that most software tends to answer one question in many ways: Where is everything at? It became the connector to people and what they were after.

Also during the pandemic, it seemed generalists were able to learn how to learn and contribute some very unique solutions.

The subsequent change in society will require not just specialists who focus on one thing or way.

Generalists roll with the change at both as big picture and in details.

You need both and I don’t think the specialist is better than the generalist, or vice versa.

No. The only thing I regret along my career path is being officially diagnosed with a mental illness during a hospitalization, which led me to missing work without notice, which caused me to become abruptly unemployed (and, eventually, unemployable). And despite the fact that my career ended abruptly and without warning, I regret nothing else. There is no downside to learning new things, even if they don't have immediate application to your life. Even if they never do. Learning is worthwhile for its own sake (at least in my opinion).
I am curious about this. Are you a software engineer? Is it your condition that has prevented you from finding employment, or the stigma? Or a gap in your resume?
I used to be a DevOps. My difficulty in finding employment results from a combination of my illness's symptoms and the (now ever increasing) gap in my resume.
No, it makes me more valuable to startups.

I’m a 0 to 10 engineer, 10 to 50 is rough, 50 to 90 is boring and 90 to 100 is like watching paint dry for me. If you want to be valuable for the startups that need 0 to 50, you need to wear some different hats.

You also need to know yourself. Figure out what you love in this and do that, you’ll never be burned out or bored. When I’m in the right place, I can happily code all night, do 2 Months of work in a day. When I hate my job, I struggle to create anything, it all feels like work.

I think this is an important point. Generalists are more valuable at smaller companies where everyone has to perform multiple roles. I'm not sure where that stops being true though. I've been in a few startups now and at the 50-100 person mark, I think specialisation starts to become more important.
> When I’m in the right place, I can happily code all night, do 2 Months of work in a day.

I know what you mean, but I'd be cautious making such statements. The other way to read this is that when you're in the right place you do one day of work in a day, and when you're in the wrong place, you do 1/40 of a day's work in a day...

i am very cautious making statements about "a day's work" because i've seen a lot of devs that seem to be doing two days of work every day, the whole time.

but they did not think enough, so a vast ammount of their "work" was waste anyway and discussing it also wasted other ppls time.

Meh. I think the people who hire at early stage startups understand this statement perfectly, and my work and references speak for themselves.
Isn't being a generalist what you should do on the way to becoming a domain expert?

My generation (definitely older given the replies :~) ) was sold straight onto the specialization dope. I think that smack is what's screwed the planet.

I recognized the (very, top schools) hard sell for bunkum at a very tender age. The flip side is that you don't actually become a expert much before middle age. That's also how it should be, but my second and third decades of my career were very lonely. If I would beg any sympathy for my generation's reprehensible stewardship, this might be it if I could ask without being self serving. As stands, over to you lot. Look back hard at the events in history just now being declassified. For the first time in the information era newly released history is not only relevant but crucial, because the generation born fifty and sixty years ago still living, and able to talk with you, was isolated almost entirely if not hermetically, from the rest of mankind and are, albeit well concealed by superficial wealth, personal or circumstantial to society, shitting ourselves when not freaking out angrily.

Personally I think the freaking out behaviour has been copied by the headless right rather than is actually endemic, but understanding social mimicry in traumatic stress is just another example of how much you have to figure out and filter out, similarly to plotting a course to high professional status just as any independent thinking, and the state of many professions today is that attaining independent thought is a de facto domain expert qualification.

Traumatic mimicry could be easily applied to the reinventing the DBMS from discovery of ACID (early MySQL, 00's; MongoDB, 10's) , the Russian Dolls rewriting of Windows display layers, and potentially almost any project recently enabled by putatively inexpensive compute.

Of course I'm hinting that philosophy and other non technology understanding can make being a generalist both much easier and more pleasurable, but this is a personal journey, find your reasoning where you can but remember that you're a generalist.

Yes and no,I have done frontends, backends, cloud, devops, ux, project/program/product management, sales , product development,I helped one startup to grow from 0 to 100 and another startup from 0 to acquisition and made good money, but from a job perspective the only option to progress in my career is to start something of my own, I can't find a company who needs a person like me, so generalist is a good path if you want to start your own but specialisation is better for job growth
No, from the perspective that it has allowed me to take on interesting projects that were otherwise impossible. In my case, by linking tools from different fields (spectroscopy, computer vision, chemistry, medicine, human systems hacking, ...) and getting something viable together. Once we demonstrate viability and need, we then build a team of specialists to flesh out the details.

Yes, in that that you have to sell yourself carefully. "I solve any problem" is not generally reassuring, because it is always an approximation, and because a specialist might see the pitfalls of a particular approach earlier. Given time you will become a specialist in whatever tool, but that needs to be built into projects or your professional development budget.

I don't regret it at all, but finding high paying roles can be a little more difficult. Its a tradeoff though, because after a few years at a role its often seen how valuable you actually are so in bad economic times you may be the last to get cut.

I also think generalists get pushed into management at a higher frequency. Not something I am personally interested in, but I get asked yearly at least at every role I have been at.

I"m actually in much the same situation (young SWE, generalist, interested in AI), and I find it's really beneficial especially in a startup space. My resume can seem all over the place, but I find that startups tend to prefer someone who has demonstrated the ability to learn quickly and deeply.

I've been looking for others to talk about it with, so I'd be happy to discuss further.

Well, I do think it is more challenging to reach the highest individual contributor pay grades as a generalist. On the other hand, being the one person in the org that understands how all the pieces play together and can debug all up and down the stack brings a lot of value and is eventually recognized. I now work in robotics, and being able to chase bugs through mechanical, sensor behavior, electrical, firmware, drivers, software, across ethernet, CAN bus, config files, calibration extrinsics, closed loop controllers... etc.... being that kind of bug hunter is valued and has worked out well for me. I feel zero age discrimination in my role, despite needing 7 bits to hold my age.
Lucky you! I started having problems after I overflowed 5 bits, the upgrade to 6 bits hasn't been much help.
I'm also in my early 20s. I'm personally aiming for being very good at a few things with a lot of very high level background knowledge. Basically an extreme T-shape.

1) I believe that not having a clear competency will make it harder for people to place you. Your experience is a lot more legible if you're the "React guy", "C guy", "AI guy", etc.

2) Trying a bit of everything is very different from being good at everything. Is "a bit of x" useful? From what I've seen, no. It's not a unique differentiator, it's easily replicable and it doesn't provide much value. Being good at a few different things seems like a different ballgame though.

3) If you are a very broad generalist it will close a lot of doors for particular work. If you are highly specialized it will close a lot of doors for particular work as well. AI/ML for instance, seems like the kind of field that will be closed to you unless you specialize in it. On the other hand, building full products is something that seems more inaccessible to specialists.