Hacker News new | past | comments | ask | show | jobs | submit login
On Being a Generalist (flaviocopes.com)
209 points by flaviocopes 22 days ago | hide | past | web | favorite | 132 comments

> Some companies only hire specialists. If you’re Google, it makes little sense to hire a generalist, I think.

Having been through a Google interview and offer process, this seems exactly backwards: Google selects heavily for generalists, so that they have people who can adapt to and integrate different technologies. (I'm sure they do hire specialists in various areas, but their interview process optimizes for generalists.)

I second. Most data and anecdata says you need to be a solid generalist software engineer to be hired at Google. You may have some specialty (the vast majority don't), but a single area of expertise won't take you there.

Vide the famous tweet (https://twitter.com/mxcl/status/608682016205344768):

"Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off."

To be clear, I think that Google has a reason for that:

- They use standardized hiring procedure (they need to work at a scale).

- A startup/software/machine learning whizz kind won't be useful (or would be dangerous) if they contributed code that does not meet other software enginering criteria.

"They use standardized hiring procedure (they need to work at a scale)."

That's funny. In some HN threads that discussed exposes on awful interviewing practices at Google, time and time again Googlers would point out that Google is a big company and every team does it differently.

So which is it? Do they have a standardized procedure or does each team do things differently?

Update: Ok, maybe it wasn't per team, but the impression I got was that different parts of the company interviewed differently. Whether people you wound up working with wre the ones you interviewed with is a separate issue.

You must have misunderstood something, Google doesn't let teams interview their own candidates. At Google you are always interviewed by random engineers from random teams who you will never meet again. And the people who decides if you get hired or not will not ever meet you.

You are probably thinking of Amazon or Microsoft or some company like that, but I have never seen a Googler say that interviewing varies from team to team at Google.

Of the people who interviewed me on-site at Google, none were in any of the same teams as the roles for which I was being considered.

Only after my packet had passed the hiring committee did I speak with potential hiring managers about team fit.

When I was interviewed at Amazon, all but one of the interviewers was a future colleague. And the one who wasn't led an adjacent team.

Amazon has started doing general hire and then placement for senior engineers in some areas, international hires in consumer goods for instance. I like this better as it gives you a lot more options. In the other model if you didn't have good fit you might end up with another partial loop.

I also like this better than the Facebook model where you don't find out your real team for several months after the hire.

For these broad loops they pull people from across the company to do the interview but will have people from your role if they can. Which isn't hard, the roles for most hiring at sdm, sde, fee, TPM.

Amazon always puts one "unbiased" bar raiser on the loop to ensure hiring isn't made for local only optima like "I need someone for 3-6 month shortfall so I'll lower my standards." These people have veto power on the hire and also play the consistency in level role.

Edit: clarity

That's great.

My experience interviewing for a role at Amazon was a while ago (2012) and in a place where they don't have massive teams of people (Beijing). So I'm sure it's different in present-day Seattle.

No, they hire Competitive Programmers - this is a separate specialty, but Google assumes such programmers should be able jump into real world software engineering. They recognize the flaw but so far can't come up with a different way.

> No, they hire Competitive Programmers

More specifically, programmers who spend a lot of time learning how to solve algorithm puzzles. This heavily favors single people who have lots of time to devote to studying such things and disadvantages time-constrained people such as developers with a family life at home.

Yes, ageism is one of the consequences (or reason) of such interview practice.

Is there any evidence that older engineers are worse at these interviews than younger ones?

It's not that older engineers are worse at them (from an intelligence standpoint), it's that younger engineers have more time to study for them.

Take a standardized test like the LSAT. Young single people can spend 4-5 hours a day taking practice LSAT exams. Older married people with small children barely have 2 spare hours after work let alone 4 (without neglecting their spouse/kids).

Assuming both the older and younger devs in this scenario have identical IQs, who is likely to do better come LSAT test day? It's a war of time attrition.

Having gone through some of their algorithmic questions, about the only thing consistent between competition programming and their questions was that N was large, often larger than resources of single machine. A very practical issue, compared to many competition problems.

The first stage of the question might be very competition-like, though.

Front end, back end, games, data science, embedded etc are all very similar if you ignore the frameworks existing in each domain. So you can become a decent generalist in all of them if you do it bottom-up and become fluent at relevant algorithms first, while if you go top-down and learn each framework then you will never become good at all of them at once since there is just too much complexity in each domains frameworks.

For example, a person who only knows react, angular, vue and node is a specialist and will unlikely be successfully to transfer to a different kind of team. A person who built their own javascript frameworks on the other hand had to build and learn a lot of fundamental concepts which are transferable to any domain, I could use such a person. So personally I strongly favor algorithmic interviews over more specialized ones. I don't care if you learned how to use library X to solve narrow problem Y, no matter how many times you did it.

There are exceptions, but the vast majority of tech positions at Google are for generalists. Hiring managers, interviewers and hiring committees look for strong signal that a candidate is a good generalist and only incidentally that they have any specific skills (more as a proof that they are able to acquire a skill to a high level of mastery than out of need for that specific skill).

Big-tech interviewer here. That is case for us. One of the principles of interviews is 'use whatever language you want', and we test for skills such as 'data structures' or 'clean code'. Sometimes candidates are hired into a common pool and then matched to teams afterwards, so it would be impractical to hire specialists.

I was about to post exactly this. The author is the exact opposite of right here.

How does Google "select heavily for generalists" when the interview is almost entirely comp sci? Perhaps you mean "computer science generalist".

Afaik, the only way for me to get a software offer from Google is to spend dozens or hundreds of hours studying computer science, and nothing else.

If I interview for software at Google, they don't ask about my skills in product design, economics, or strategy. If I interview for a non-software role at Google, they don't ask about my experience writing software.

Show me a Google interview that's half software and half product. That's a role to which I'd like to apply :).

I think TFA argues that Google's org structure is not optimized to benefit from or hire cross-disciplinary generalists.

Do any of these roles involve writing software?

Generalists? They hire puzzle experts

Most of Silicon Valley ignores specialization on the level of particular languages and tools (to the point that I'm mildly suspicious of "resume driven development" claims - they genuinely don't care, as long as you can do the algorithms interview).

But I do generally see at least a backend/frontend/mobile split, with backend sometimes further subdivided into product vs. infrastructure. Does Google not even go that far?

I wonder if folks are silo'd shortly after the generalist interview?

I’m a generalist and I would 100% recommend it over being a specialist because you get to see the whole picture. You start to notice patterns across different programming paradigms that make you a better developer. You learn techniques to quickly teach yourself and learn about the problem domain which translate into other parts of your life besides computers. I’ve taught myself how to work on cars using deductive logic when I get stuck and software engineering principles to make decisions when I’m afraid I might break something and I’ve improved my personal finances with data science.

Technology specialists often find their niche evaporate under them. And they rarely venture out of their safe bubble. I think learning a nee one becomes more difficult for them than someone who tries many thinks but has a solid foundation in fundamentals and other domains.

There are some specialist trades that never go away: electrician, plumber, mechatronics engineer, HVAC engineer, and HVAC technician. Those fields and many more, customers want efficient masters of their trade.

What I understood is this author's definition of a generalist is someone who expands his scope beyond just programming. To things like design, business development, hr management, recruiting, raising funds etc.

Generally, it may not be so common to find an individual who's almost equally as passionate about all of these things. In the end we got limited time on this planet and can't learn everything.

If you ever want to rise in the ranks as an engineer, design and business are practically required.

Building the thing right is useless unless you're building the right thing.

Perfectionism is never allowed in a business environment.

In fact most of those folks turn toxic because they don't get their way

he said 'right' thing not 'perfect' thing - certainly those that building the 'right' thing do better in a business environment than those that build the 'wrong' thing, no?

You don't have to be equally good at everything, but if your business or field deals with a number of different specialties regularly, it makes your life easier if you know the basics in these other areas at least. You will make better contributions and better see how your piece fits into the bigger picture.

That's not how I read the article. Seems to me he tries to do everything that has to do with (Web) software development, but not wider than that.

Well in that case the definition of a generalist is much more narrow. Would we call a mathematician who is comfortable with all topics within algebra a generalist?

It is not because you are comfortable doing something that it is a good idea for anyone to be like that, we are all different.

And we need specialists, how will you build a new microprocessor without having any specialist in microprocessors ?

It depends what you mean by "specialist in microprocessors". There is enough publicly / academically available information about CPU architecture / microarchitecture to become highly knowledgable on the subject without ever having worked on a CPU before. But once you get to the level of implementation, physical design, and manufacturing, you need real specialists, since all of the relevant knowledge only exists in industry.

I think that the whole point of parent comment was that you need specialists to create that "publicly / academically available information" im the first place.

I've been currently looking for employment and job descriptions nowadays are ridiculous. In one paragraph or section of a job description, they'll specifically state that they want a generalist, and in the very next section, they'll state explicitly that they want a specialist; just crazy.

Also, throughout my job history I've been more of a generalist; sort of like a modern day devops (but much broader in scope/responsibilities), and at least a decade before it was even an accepted term. And, almost for all of my jobs the hiring manager wants a specialist but "agrees to hire me EVEN THOUGH I seem to be more of a generalist" - as if they're doing me a favor...But in almost every job I've ever had, all of my bosses, stakeholders and peers/partners explicitly state that they're so glad that I'm on board (for a project, program, etc.) specifically because of my generalist nature...and they can't possibly have achieved their goals with a specialist, etc. No doubt, there are plenty of areas where specialists are absolutely essential, and really the only ones that could effectively complete what needs to be done. But, in my experience, soooo many, many people (of any seniority level, of any age, background, etc.) in positions of power (or at least positions of decision-making) suck royally at deciding when a good generalist is needed. There is some crazy cognitive dissonance out there.

>...job descriptions nowadays are ridiculous. In one paragraph or section of a job description, they'll specifically state that they want a generalist, and in the very next section, they'll state explicitly that they want a specialist; just crazy.

I wouldn't put much weight in the specific wording of job descriptions, they're often an amalgamation of previous similar roles at the company and other companies.

>There is some crazy cognitive dissonance out there.

I agree, the hiring decision process within a company seems so susceptible to one simple narrative like "are they a specialist?" taking way too much importance. I think it has something to do with the fact that most of the decision makers are spending most of their time on other things, don't have time to think deeply about who to hire.

> ...I wouldn't put much weight in the specific wording of job descriptions...

Agreed, and normally I wouldn't care as much. But I'm actively look for work right now...so to invest time and effort only to be met with rejection and disappointment(because of such mismatches), it gets frustrating really fast.

Oh and 100% agreed on your other notes!

Some of this might be because specialists are perceived to need less on-boarding, and it's very easy to overestimate the cost of on-boarding.

Once fully on board, I think many would agree the generalist is desirable.

Another factor is, as someone else pointed out, that there's a huge difference between "learned, skilled generalist" and "inexperienced who hasn't yet learned much" and both characters may go by the generalist name.

All good points!

Just remember the adage:

A specialist will tend to underestimate a generalist's ability to specialize, when they choose to focus on one thing; A generalist will tend to underestimate how deep any given specialty actually extends.

I don't think that's really an adage. It's also flawed. A broader experience gives you a much better idea of how much you don't know.

An an adage specialist, I can tell you it is an adage, and you have no idea how deep the adage world goes.

Google hires tons of generalists. The reasoning here is very flawed.

Hiring specialists is higher variance. They could be amazing for your company or it could be that you need to do something slightly different and they are mostly useless. Generalists are safer but with less upside.

Of course this dichotomy is false anyway. Everyone exists on a spectrum. No one has only a single skill at “max level” and no one has every skill. It’s more a question of where on the spectrum you want to be.

This whole article isn't very insightful but people upvoted it because they like what the title says.

Google needs to hire generalists because they need to hire any good developer as there's a talent shortage (or at least a talent identification shortage).

And most generalists are generalists because that's what their jobs have required, and can become specialists shortly.

Finally, as a side node, a benefit of being a generalist that the article doesn't mention: you can cross apply good ideas from different domains. You can say "X language does Y -- maybe we could apply that idea to our existing code base. "

I don't think that's flawed, that just says they wants coders, not talents. They're known for good pays and cream of the crop employees, that doesn't mean their business requires or relies on those irregular capacities. They very well could be "daily driving a 911" so to speak, while nerds around assume they track it.

Most them are SA-/SW-SREs, SRMs or other technical leads or managers.

I was also thinking if it's like generalist in tech. Or does Google seriously expect their software engineering recruits to generalists who are proficient in design, copy writing, B2B sales, digital marketing, management etc.?

Edit: phrasing

I think the authors scope is way too narrow. If you’re a react developer who also knows vue, and perhaps enough ops to get side projects to run in Azure/AWS then you’re still a specialist. It’s easy to forget, because development is what we do, but it’s actually a rather specialist skill in itself. I say this as someone who has been part of several attempts at implementing things like RPA or even Sharepoint to non-developers, with a full expectation of genuinely smart people being capable of doing very simple drag and drop programming, and see them fail time and time again. Exactly because software development is a specialist field.

A generalist is someone who does software development, but also does project management and implementation (teaching users how to use software). Three distinct specialist fields, and this is where being a generalist can be valuable for your organisation. Because you get things done. But less beneficial to you, because no one wants generalists, and you’re likely doing 1.5 people’s job for 1 persons pay.

> But less beneficial to you, because no one wants generalists, and you’re likely doing 1.5 people’s job for 1 persons pay.

People want generalists, they just don't want to hire them. Or rather it's hard to find a company who has a job description that emphasizes a generalist skill set.

But my experience has been once you are in a small to medium size company, they are happy to have someone who is flexible and adaptable and game to do different tasks.

I think you're focusing too much on the strict semantics of "generalist" - whether the word is accurate or not will largely depend on context and how much you "zoom out".

I could argue with you that someone who does development, project management and implementation is still a software specialist, and that a real generalist is someone who can sell, or someone who can play piano, as well as do the aforementioned.

I am a freelance tech consultant or run what you could call a microagency... Sometimes I design or code my own projects, whereas others I outsource them and act as a project manager. I deal with my own marketing and sales, successfully so, as I've gotten projects at really big companies by pitching against agencies orders of magnitude my size.

In my case, being a generalist pays well, and it's actually the only way forward in terms of growth. The scenario where I could see myself being useful to others is as a co-founder or as others have said, in certain small or medium businesses.

But I otherwise generally agree that companies of a certain size only think they want generalists but they don't put their money where their mouth is.

I was interviewing for product manager positions some time ago, and I got the impression that interviewers didn't care about my generalist skills (designing, coding, marketing) - they just wanted someone who had done... exactly product management, with very similar responsibilities to the position at stake. I have "Product Manager" in my CV, but some time in the past and often in somewhat different scopes (the role's definition is quite loose) to the hiring companies, putting me at a severe disadvantage in the hiring game.

I always think that being a generalist is entirely possible, but you have to be ready to carve out your place in a world that is mostly built for specialists.

Non sequitur: can we chat about your consultancy? Looking to potentially do the same myself and would love to pick your brain for some dos and don'ts.

If you're willing, email me, username without the 2 at gmail, and no offense if you can't.

I've mailed you.

Being a generalist is hard, especially when fields are changing so rapidly (like web dev)

Practically speaking, as a developer applying to a startup, I'm going to say I'm a generalist and make a giant list of technologies and projects I've worked with. If applying at Bigco, I'm going to list the relevant specialties they're looking for and not confuse the poor person working in HR who has no idea what any of those technologies are. Specializing in all of the technologies the article listed isn't exactly a herculean feat.

If a position requires an actual specialist, a "We're forking Postgres and building a globally distributed database with acid transactions committed to all AWS regions without having to think about the topology of node deployment." kind of specialist, I'm not going to apply, and we've hit the point where you actually need to think about becoming a specialist.

As I get older, I'm learning that understanding technology is just the tip of the iceberg anyway. It doesn't matter how well engineered a solution is when Google Sheets solves 90% of the same problem for free with real time networking functionality. And that doesn't matter either, when ITAR restrictions keep you from using Google Sheets.

The word "generalist" tends to be used where "unspecialised" would've been more appropriate.

Junior, unspecialised engineers are exactly that: unspecialised. They haven't had the the time to become good at any one thing.

At the mid-weight range, some engineers start to focus on a particular area and become specialists. Others seek knowledge across the spectrum and become generalists. Finally, others remain unspecialised. The trend continues at the senior level.

I am most definitely a generalist, and don't bring as much depth to the table as my more specialised peers. But, when working on one layer of the stack, I can leverage my knowledge of the adjacent layers to produce something much more coherent. I can bridge the gap between two teams of specialists who don't understand each other and help them reach agreement. I'm pretty decent at helping product people figure out how all their moving pieces map to the various teams we have available.

These are just some of the things that generalists give you that specialists can't. To rebut the article's argument directly — I don't know about Google, but Facebook definitely explicitly hires generalists by the truckload.

That's a very keen observation.

As a senior-level professional generalist who is looking for work after being laid off, that makes me look at the language of my resume in a different light.

Often we cherish specialists quoting "Jack of all trades, master of none".

Curiously enough, the full version of the original has a twist:

“A jack of all trades is a master of none, but oftentimes better than a master of one."


There is another aspect that is relevant, and that is that the effort needed to get to the 99th percentile of some ability is way larger than that to get to the 90th, and often, you can do very well with just being in the 85th. So you can become pretty good at many different (often complementary) things, in ways that likely make you way more effective than that guy who's a guru in a very specific topic.

Then again, sometimes that guru is also needed.

This is a good observation and applies to non-professional skills as well. For example, you can learn to repair your clothes at an 85% level using only a $20 sewing kit and some YouTube videos. Taking a well-loved shirt to a tailor is a chore, throwing it away is sad, but mending it is gratifying. Yet somehow, despite the amount of knowledge freely available on the internet, things like this are increasingly neglected or left to specialists.

Yes, I meant it in the general sense, actually, though it probably didn't come through like that.

Also, being somewhat skilled in many things can give you enough knowledge to know which to use and when to learn more.

Scott Adams (creator of the Dilbert comic) offers similar career advice: https://dilbertblog.typepad.com/the_dilbert_blog/2007/07/car...

One of the things I treasure in a good generalist is the ability to be an informed consumer. They can think a little farther down the road about what we need from solutions and why.

instaguru = STFW, IRC #thing, scihub/libgen 'thing'.

Indeed, and given the costs to become the very best, it's often a choice like this. Say you need to hire athletes with in experience swimming, running, and gymnastics to design some classes for your school. Would you rather hire:

- 3 gold medal Olympians, each of whom have medaled in the 3 areas

- 1 bronze medal Olympian who has single-handedly medaled in swimming, running, and gymnastics?

Let's not fool ourselves into thinking being bronze level is what it means to be a generalist. That's still performing at an unbelievably high level.

It’s an analogy.

> - 1 bronze medal Olympian who has single-handedly medaled in swimming, running, and gymnastics?

Has anyone ever achieved this? It sounds like you're saying you would rather hire 1 person that doesn't exist rather than hire 3 people that do.

Not exactly that, but there's the various combination events-- most especially the pentathlon (fencing, shooting, swimming, riding, cross-country running).

But even look at decathletes -- they usually rarely medal in individual event sports these days, and their personal bests are pretty far off the mark. Asthon Eaton got two decathlon golds, but each of his personal bests would be at the back of the standings of the individual athletic events at the Olympics. https://en.wikipedia.org/wiki/Ashton_Eaton#Outdoor

Or triathletes. Basically no one who is a world-class runner is a world-class swimmer, or vice versa. But you can be confident that a world-class triathlete is a pretty damn good runner, swimmer, and cyclist.

But look at the year: most of them seem to be pre 1950's. Does that still apply?

Does _what_ still apply?

I do have a strange fascination with Modern Pentathlon. Basically none of those athletes are truly "world class" in any of the 5 disciplines if I understand correctly, but they're the best at the combination of all of them.

I worked for a D1 track and field team while I was in college and I found the Pent/Hep/Decathlon some of the most fascinating sports with how coaches approached which athletes to submit. Some coaches (like the one at my college) chose to submit true generalists, athletes that wouldn't usually win an individual event but would get points in most of them. But other coaches favored submitting athletes that had distinct specialties, assuming they'd win that event and then get points in a couple of the other events. It's been a while so I don't exactly remember which approach seemed to work better but I found the strategy fascinating!

Actually it's more likely that this longer quote is a recent formulation.

See the research in this thread: https://english.stackexchange.com/questions/408782/is-jack-o...

Definitely, maybe I don't get the joy of a being a "X Developer", yet it allows me to bring tasks to good harbour, an in a fashion driven industry, it makes relatively easy to jump.

In my experience, a master of one is most of the time better described as a jack of one trade, anyway.

My ex liked to point out, “Curiosity killed the cat, but satisfaction brought it back.”

I prefer "jack of all trades, master of learning".

Just because information is conflicting and different doesn’t mean it’s truer than your first exposure.

No evidence for that etymology.

This article is wildly wrong because effort and skill is non-linear.

I can be in the 90th percentile in a handful of areas if I'm a talented generalist. The effort needed after a certain point becomes exponential.

Truly, what is the difference between a React developer and a developer who can use React well? The latter can ALSO use other things? Under this framing, who would want to be the specialist?

And also, as others have mentioned, Google strongly prefers generalists for both practical and philosophical reasons. Internal mobility is high and they're just scooping up talent because they have more work than people. They often hire into a pool that is then matched to a team later. There is a reason their primary job posting is 'Location - Software Engineer'. They can't know what you'll do, so you must be good or learnable at everything. Finally, from a philosophical standpoint, strong generalists are cross-functional within their field and that's generally valued.

Tim Ferris has an interesting podcast on subject: https://tim.blog/2007/09/14/the-top-5-reasons-to-be-a-jack-o...

“Jack of all trades, master of many” and “specialization is for insects”

I have always preferred being a generalist since I tend to get bored quickly. Once you are a generalist you can build any side project you can think of without any external help.

It fascinates me how you can cover almost all of the software development landscape using just a couple of languages ( C# , Javascript and Java). C# runs on servers ( .NET core ), Desktop(WinForms and WPF), mobile platforms ( Xamarin Forms), Java runs well on servers and Android and Javascript can also be used on both servers(node) and clients(Apache Cordova for mobile support and Electron on Desktop). In my career I've worked with web development ( html/js frameworks, express ), databases(dynamodb and mysql), microservices(node, .net core, Sparkjava), Mobile( Android, Xamarin Forms, Windows phone and Blackberry) and even was an Engineering Manager for over 3 years. And all it took was to learn 3 languages.

> Once you are a generalist you can build any side project you can think of without any external help.

I agree wholeheartedly. Maybe it's because my grandfather was a farmer and I learned a lot from him, but from a very young age it's always been "what do I need to learn to be able to do this?" instead of "who can I find who knows how to do this?"

> almost all of the software development landscape

Embedded would like to have a word with you :)

I do agree with you though, at this point that is a pretty good set of 3 languages that cover a lot of breadth for application (web/mobile/desktop) development.

Personally, I'm a generalist in the worst sense in that I've read about a lot and can talk for day about various things, but am only proficient in one or two things.

That’s called being young and it’s how everyone starts. Keep going!

(Obviously I don’t know how old you actually are, but one can be young in a career sense at any point)

lmk when you find a fix for this :(

Actually work on stuff (paid or hobby); then, time.

One thing to watch out for if you want to be a generalist is feelings of inadequacy. Probably because you end up knowing something about a lot of things, you are very aware that people are better than you at each of those things. It can be tough.

However, I would still heartily recommend it. It's fun! You generally are learning how to make new things, rather than new ways to make the same things.

In those cases you have to lean into your strengths. You need to be helping those specialists point in the right direction, providing cover for their weaknesses, so you share credit as a teammate in the success. Generalists are peer leaders.

David Epstein's Range [0] is a great look into this seeming paradox of broad v. deep. The intro chapters of Tiger Woods with golf versus Roger Federer with tennis are the thesis: There are 'kind' learning environments and 'unkind' learning environments.

'Kind' learning environments are golf, chess, SAT prep, etc. Here, you just need to grind out the hours. The feedback is fairly quick and the objective is clear. You should specialize early on to grind out the time, like Tiger Woods.

'Unkind' learning environments are tennis, jazz, business, etc. Here you need a lot of general information to see weak patterns. You need to borrow from other domains and read a lot of unconnected stuff. The feedback is not timely and the objective is not clear. You should 'graze' on a lot of other things to become 'elite' in your chosen field. Roger Federer played a lot of sports before choosing tennis 'late' in life.

The book is very detailed yet readable, a great targeting at a general audience. The section on music is fascinating reading.

Generalist or specialist bents are both good ideas, but it depends on the environment.

[0] https://davidepstein.com/the-range/

"Federer, who started playing tennis at age eight, became Switzerland's junior champion when he was 14."

Is that what's considered late?

Per the book, his dedication was not considered appropriate as he played other sports and had other interests.

The conversation is missing a dimension: How big can the domain be? One can be a specialist in JavaScript, for example. But you could just as well say you specialize in React or Vue, as the article says. A React developer might say person who does all JavaScript is a generalist; the JavaScript developer could point to a full stack engineer and say "that's an actual generalist".

The opaqueness makes it difficult to discuss the topic further.

Yeah. It seems like the author considers himself a generalist, but it sounds to me like he's a front end specialist.

Or a front-end generalist?

The use of one word or another indeed seems to depend on the optics.

Or an all-end specialist. (I like big bugs and I cannot lie!)

There are layers of each problem space that benefit from optimization and good design more than others, however, most solutions still need all the other layers to be useful. I've had extreme success being a data generalist at a mid-sized analytics company because I was able to be the one to fill in all the gaps of a project, e.g if there are 10 steps that need to be completed, the generalist can do 7 of them and the specialists can do a great job on those other 3. This is the magic of human collaboration after all! On the flip side, I've found that working alone I miss having the specialists. While I know I can technically achieve all the steps, what I really want is the context the specialists can add. Those bits of code or math that turn a vanilla engineered solution into a nuanced piece of software. My conclusion is that collaboration between generalists and specialists is important but asymmetric. Generalists need context and information from specialists so they can become semi-specialists, while specialists simply need generalist infrastructure to power their ideas.

Knowing only React, or one programming language doesn't make you a specialist. It just means you have very little knowledge and/or experience. What's next? "if statement developer"?

Software engineering as a whole, is one specialization. Maaaybe backend vs fronted could be made into two meaningful specializations. Or "distributed systems", "game development", "financial systems" etc areas. But not one framework/ PL. Come on. :D

I don't want to bash on people who actually only know one language/framework. It's OK, it can pay your bills, etc. Maybe you also have great skills and interests in non-software areas. But just don't fool yourself thinking "I'm a React specialist".

You are a specialist if that's the only thing you're doing. And such a word becomes meaningful once you're doing it +3 to +5 years, IMO. I've seen a modicum of posts on HN that was something along the lines of "I've been a C++ developer for the past 12 years, how do I become a web developer?" So I guess there's something to it.

At least in some of the cases.

> "I've been a C++ developer for the past 12 years, how do I become a web developer?"

That's just wrong way to put it. This C++ has been used for something (kernel, embedded, system level programming, games). That's the meaningful area of "specialization", with C++ being one of the tools used there.

Be T-shaped: a jack of all trades, but a master of some.

This, IMHO, is the right answer.

The most proficient, well-compensated engineers I've worked with had deep technical knowledge in their respective domains, but were reasonably well-skilled in other areas(some non-technical), and could easily spool up to basic proficiency quickly.

Learning how to learn, and apply it well, seems to be the underlying meta-skill with the most value.

Think of a specialist as putting all your eggs in one basket, high risk high reward ratio. Generalist is like investing in an index, can’t go wrong most times, but you won’t hit any home runs

This is quite simplified, particularly the part that generalists can't hit a home run.

For example, David Epstein in his book (https://davidepstein.com/the-range/) talks about outsider advantage. Sometimes all specialists in the field have similar ideas, but an outsider can think about an interesting analogy to other problems that seem unrelated and come up with many novel solutions to difficult problems that seem highly specialized.

The main assumption of this post is that humans have limited resources to store and compute knowledge. This is shortsighted. Polymaths, though rare, are an example that excellence can be achieved in many domains. Even in the “normal” range of human capability, there are many roles that are designed for a generalist. Healthcare is the prime example. You can’t have specialists handling primary care because they can’t see the human body holistically, but as an instance of what they have specialized into. Product management is also a domain you can’t put specialists in charge. You need people who can translate user / customer needs into technical specifications and even between specialists so they can understand the tasks to be done (think health analytics or other interdisciplinary activities). You also need to be able to understand all faces of a problem to provide an efficient solution. Sometimes you need someone sufficiently unattached to kill features and products that are no longer financially viable. Startup founders, although technical, end up doing everything because of financial constraints. In this case the “regression” towards generalism is a survival skill. IMO, generalists are skilled people who have the ability to learn and adapt faster than the average people and are able to provide reasonable solutions.

There's nothing stopping you from being both broad and deep. Be an expert on a few things, knowledgeable on more, and familiar with many more, and grow all of those sets over time.

I'm a generalist I guess.

How did I get to be a generalist. Because I was a very narrow specialist at one point and people asked me to do other things that were outside the specialty and I learned to do them.

I kept doing that and learning different things as I moved between jobs as a bit of necessity.

My original specialty won't get me hired anymore. there isn't enough requirement for it.

I have several skills under my general skill set that I am better at than most specialists in those skills I work with because despite their being specialized inside that one skill I have been doing it longer and deeper than them. But I am a generalist.

I know I'm a generalist because a top consultant recruiting company asked me a couple weeks ago to cut out most of my skills from their database while they were trying to sell me to a client because those skills had nothing to do with the assignment and they made me look like a generalist.

Basically the company wanted a front end developer with React skills. I don't know what they think I've been doing the last 20 years if that's supposed to be my only skill. Being a specialist I suppose.

I'm a fairly capable generalist. For many years I struggled with pretty real imposter syndrome. It's a lot better recently, and it certainly helps to work with people who can remind you it's a strength - but being a young person without a precise specialism in a room with 'specialists' I found very hard, regardless of my abilities or what I could offer.

I guess it's very daunting to be sat across a table with the head of something (a person with a supposed very deep subject knowledge), when you think at any moment they'll say "what are you doing here?" It took a long time to realise that even if my depth of knowledge was not the same as theirs, having an understanding of things outside of what they knew could often change the direction of the conversation and how they (and the business) would approach things.

I'm sure I'm not the only person who's felt this way. If you're there right now - stick with it, everything gets easier!

Genralist vs. specialist is a false dichotomy imo, because you can specialize in general knowledge that will make you knowledgeable about other areas simply because it has a broader reach. Knowledge works like a cascade, if you're good at a higher level thing it will apply to more lower level categories.

Being a great specialist commands a premium but can be tricky as niches can evaporate and then you are master of nothing.

Being a generalist can be tricky as you do not have a differentiating factor making it harder to get hired into highly paid jobs but easier to adapt.

People and communication skills are often more important than any of this but hiring in our industry is sadly keyword driven. As a very broad generalist I found myself in a fairly turbulent corporate environment. It should have been easy to get the jobs I wanted but it did not work so well - what I got were firefighting jobs leading to more firefighting jobs. I adopted now a portfolio of related technology and skills as my core and am marketing them actively. Works much better in getting work I like. It does not change who I am but it helps to get the tasks I want and also give me the platform to say no to things outside of the portfolio.

Funny thing is, some things are considered general while being rather special.

Sure, being a "software consultant" is more genral than being a "mobile software consultant" but overall, most people on earth are neither.

There's something about granularity this blog does not touch. For an outsider it is extremely specialist to know design, marketing, developing and a bit of server admin.

I'd say generalists split their time across software development, composing music, and competitive sailing. Or at least something along these lines of diversity.

My experience suggests that successful organisations need a good mixture of specialists and generalists to be successful – although "specialists" is maybe the wrong term, and it's more about having a team with a diverse set of skills in different areas.

It's beneficial to have individuals that have a broad understanding of how complex systems work without necessarily being able to develop all of the components in full themselves; there's equally a requirement for developers who are capable of understanding and implementing all the detailed intricacies of particular fields, like front-end or embedded code. The former are usually able to develop working solutions to a given problem, but they often end up being sub-optimal; the latter can often implement those solutions more effectively, but can struggle to effectively work with a broader system.

This idea is related to Cringely's military analogy about the different kinds of personalities and skillsets needed to build companies – the "commandos", the "infantry", and the "police". The "commandos" can move quickly to build creative or disruptive solutions to complex problems, but can leave unfinished tasks in their wake, and get bored easily. The "infantry" build on top of the work of the "commandos" – refining, improving, and professionalising. But they need more infrastructure, process, and understanding to do this, which can slow them down. And the "police" are there to manage the system when the speed of development slows down – the focus is on maintenance, economy of scale, and more-stable-if-less-exciting work.

It's all a bit of a thin metaphor to be sure, but I've definitely seen these and similar personalities in different companies, all offering different kinds of value. Nobody belongs exclusively to one group, in the same way that nobody is exclusively a generalist or specialist. But I've found that understanding how different personalities and "skill shapes" can contribute is important for building an effective and productive team.

In the summer I will finish my MBA and I consider myself a generalist. I never had a real focus during my bachelor and my master studies and now I am a little bit afraid that this could result in problems finding a job.

Unless it's for a highly specialized role, generalists with some stronger attributes always seems like the appropriate way to go. We hired a network engineer to handle our entire global network, spanning hundreds of offices in many countries. He really knows his shit, but his ignorance of most anything else in the world is offering staggering. To the point we're not sure if he's just trying to be an instigator of stupidity. He truly is a one trick pony, but is very good at the trick. The rest of us handle everything else for him, including how to catch a train.

> You’re a generalist if you know and use React, but also know Vue, you can design a page in Figma and translate that design into a React component with CSS. Plus, you also know how to deploy an application to Heroku.

Uhh… A generalist is someone like Toby Fox, who can design a game, code it, make the art, compose the music, and write all the dialogue; not someone who can use several barely-different flavors of webshit.

"If you’re Google, it makes little sense to hire a generalist, I think."

I'm a Googler and a generalist. This is of course just my opinion.

In the two roles I've had, being a generalist is far better than being specialized: as a Product Manager and as a founder on a new project.

A big part of being a PM is being the connective tissue between specialist ICs and silo'd organizational structures. A joke is that we are 'failed engineers' but many of us just got equally interested in UX, entrepreneurship, and business strategy as code. We end up not being the expert in any of these. But we are pretty well qualified to coordinate among them. I.e. our strength is we're generalists. It's a bit like the nervous system that coordinates the heart and lungs and other specialist organs.

I'm now in a part of the company (Area 120) dedicated to funding new projects and businesses. The shape of the talent needs are very much like an external startup. We're headcount limited to 3-5 per project, so we really need people who can design and code, develop sales pipelines and do product management, "full stack" engineers and so forth. These people are super valuable where I am, because they are generalists.

I think anywhere entrepreneurial will need many generalists. I believe think Amazon has this culture too.

This also why I can create a lot more value in a company like this than if I was an individual contractor. I see comments on HN sometimes along the lines of "companies must be underpaying you, because if the value of your labor wasn't greater than your pay, they wouldn't make any profit." This is correct in a very narrow sense but missing the hugely important piece that the value I can produce embedded in a large organization is much, much greater than I can as a singleton (because I'm a generalist). As a rough example, maybe as a contractor I can create $100/hour worth of value and for the sake of argument can capture nearly all of that. Because whatever discrete task I'm hired for I'm Ok but not world class at it. But in a company like Google, I am leveraging huge assets and connecting them. If I identify opportunities and coordinate execution between (for example) specialist orgs like Search and Maps, the value I can create is massive because of the size of the levers. It's nearly unbounded but could easily be worth 1000s of dollars an hour. So if they pay me $200, everyone wins. The pie is grown, by being an embedded generalist, and I'm still doing better off than I would independently (even if my employer captures a bunch of the value I produced – which is fair, since they also provided the levers).

I see it less as "being a generalist" and more as "being a specialist at learning new things".

In October 2019 I delivered a keynote at PyConZA arguing that you should aim to be a generalist that connects specialists: https://www.youtube.com/watch?v=mn06eCDur2o

In short: in sparse graphs, mobility dominates.

I think being a generalist is definitely a value. In a near future, specialists will be substituted by artificial intelligence (AI). Generalists, instead, will stay at their place, since they do what AI (currently) can't: making connections.

I thought I was generalist until I noticed that some skills I claimed to have, I hadn’t actually used in a decade or longer. Do I really still know that stuff? How many problems I had to deal with are resolved?

I think perhaps I am instead a serial specialist.

When I was at the earliest stages of my first startup, I learned how dangerously unproductive a specialist can be as a first hire.

Now, with my second startup, I see how important and impactful specialists are as the complexity and size of our tasks have grown.

Surely all specialists in tech end up as generalists eventually. If you were a jQuery specialist 10 years ago, you've pivoted to something else by now. How many times does that need to happen before you become more general than special?

There's a good recent book about being a generalist https://davidepstein.com/the-range/

Being a generalist is a luxury given mostly to people who can't do anything better than not enough. And more often than not, this means managing specialists ..

As marketing generalist, I can tell you I have been heavily penalized in career searches for not having specific skillsets

I think the most rewarding path is becoming a specialist in something very important and broadly applicable.

I've seen people on hn describe themselves as "serial specialists". (However, nobody admits to being a "parallel generalist".)


>I'm a generalist too, or as someone else put it - a serial specialist. You could just stagnate until you retire. That's basically what I'm doing, but for slightly different reasons.


>Something i learned about myself a little bit farther in was that I wasn’t a generalist so much as I was a serial specialist (once you haven’t touched something you used the be good at for seven years, can you still claim to be good at it? Turns out I can’t).


>Going for knowledge just because it sounds cool isn't going to be a motivator strong enough for success. Find stuff you're interested in and dive into those. The way to become a well-rounded person is to become obsessive in many things (possibly not simultaneously) that are unusual in some way. In fact, learning anything will feel like specialization, and in fact being a serial specialist is probably the most viable way to become a "Renaissance man" today.

>Note that the first thing that came to my mind when I read your post was: "To be a true Renaissance man, you need to have been dead for 400 years". I won't write it here :)

The Church of the Subgenius has a similar concept called the "Short Duration Personal Savior" (or ShorDurPerSav, the proper Tibetian term):


>Wow; just wow. Thank you for filling that gaping hole in my education with Dick Tuck [1] [2]! My new short duration personal savior [2].


>From: Purple Kitty <pkitty@netcom.com>



>Shockingly, some Bobbies are still unclear as to what a Short Duration Personal Savior is. The concept of the Short Duration Personal Savior (or ShorDurPerSav, the proper Tibetian term) is a new one-- traditional religions tend to emphasize "unwavering servitude" over convenience. But is absolute devotion to one savior always best? Buddha is a wonderful role model for certain aspects of life, but when that po'bucker shoves you out of the way as he walks by, don't you wish that you worshipped George Foreman instead, if only for the next few minutes?

>Well, you can! The Church of the SubGenius heartily endorses the concept of disposable saviors, or ShorDurPerSavs. Choose your messiah to fit the situation. If peace and compassion are what you need right now, follow the teachings of Gandhi. Later, when you need to cut a business deal, emulate the wisdom of Sam Walton. When you need a witty remark on the spot, let Samuel Clemens into your heart to inspire you. And when you need Slack in your life, sell your soul to "Bob".

>"Bob" is the most frequently invoked of our infinitely varied Short Duration Personal Saviors, with good reason. He has Slack--he IS Slack. He symbolizes the "easy life", where one follows the Path of Least Resistance and gains Slack effortlessly. But no one is expected to worship "Bob" 24/7! If you're trying to get that PC to work, choosing "Bob" as your ShorDurPerSav will hinder you far more than helping you! "Bob" couldn't use a PC if he wanted to (though he sold more of them last year than IBM and Packard Bell put together)! Read through Stephen Levy's _Hackers_ and let the TMRC be your ShorDurPerSavs! There ARE no limits!


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact