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.)
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.
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 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.
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.
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.
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.
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.
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.
The first stage of the question might be very competition-like, though.
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.
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?
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.
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.
In fact most of those folks turn toxic because they don't get their way
And we need specialists, how will you build a new microprocessor without having any specialist in microprocessors ?
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.
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.
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!
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.
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.
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.
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. "
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.
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 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.
If you're willing, email me, username without the 2 at gmail, and no offense if you can't.
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.
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.
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.
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."
Then again, sometimes that guru is also needed.
- 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?
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.
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.
Doesn't look like it.
See the research in this thread:
No evidence for that etymology.
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.
“Jack of all trades, master of many” and “specialization is for insects”
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.
(Obviously I don’t know how old you actually are, but one can be young in a career sense at any point)
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.
'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.
Is that what's considered late?
The opaqueness makes it difficult to discuss the topic further.
The use of one word or another indeed seems to depend on the optics.
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".
At least in some of the cases.
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.
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.
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.
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 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!
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.
Sure, being a "software consultant" is more genral than being a "mobile software consultant" but overall, most people on earth are neither.
I'd say generalists split their time across software development, composing music, and competitive sailing. Or at least something along these lines of diversity.
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.
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.
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).
In short: in sparse graphs, mobility dominates.
I think perhaps I am instead a serial specialist.
Now, with my second startup, I see how important and impactful specialists are as the complexity and size of our tasks have grown.
>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  ! My new short duration personal savior .
>From: Purple Kitty <firstname.lastname@example.org>
>-= SHORT DURATION PERSONAL SAVIORS - A LESSON =-
>BEGINNER LEVEL - CLEARED FOR ALL BOBBIES - BEGINNER LEVEL - CLEARED FOR
>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!