> 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.)
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).
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.
"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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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?
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.
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!
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
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.?
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.
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. "
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.
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.
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.
I don’t agree that you need to pick one and identify with it forever. Look, we are paid to solve problems by communicating with people and then building things on the computer. There are a lot of ways that can look, no need to limit your options like this.
There are so many posts on here pontificating on what exactly a senior developer is, or whether you should call yourself a programmer, and on and on. I don’t see the point of painstakingly choosing the exact right label for yourself. It’s always possible to learn and adapt and do something new.
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.
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.
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'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):
>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, ...
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.
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.
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.
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.
139 comments
[ 3.1 ms ] story [ 189 ms ] threadHaving 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.
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.
Edit: clarity
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.
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.
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.
The first stage of the question might be very competition-like, though.
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.
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.
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?
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.
https://careers.google.com/jobs/results/89970700451750598-te...
https://careers.google.com/jobs/results/141084669270467270-p...
https://careers.google.com/jobs/results/75981898595082950-pr...
(Obviously I don’t know how old you actually are, but one can be young in a career sense at any point)
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."
https://www.theodysseyonline.com/7-phrases-youve-been-misquo...
- 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.
Doesn't look like it.
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.
Then again, sometimes that guru is also needed.
See the research in this thread: https://english.stackexchange.com/questions/408782/is-jack-o...
No evidence for that etymology.
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 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.
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.
Edit: phrasing
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. "
The opaqueness makes it difficult to discuss the topic further.
The use of one word or another indeed seems to depend on the optics.
“Jack of all trades, master of many” and “specialization is for insects”
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.
There are so many posts on here pontificating on what exactly a senior developer is, or whether you should call yourself a programmer, and on and on. I don’t see the point of painstakingly choosing the exact right label for yourself. It’s always possible to learn and adapt and do something new.
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.
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.
https://news.ycombinator.com/item?id=22337342
>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.
https://news.ycombinator.com/item?id=22335697
>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).
https://news.ycombinator.com/item?id=4317080
>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):
https://news.ycombinator.com/item?id=10045688
>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].
http://www.subgenius.com/bigfist/goods/shordurpersavs/X0012_...
>From: Purple Kitty <pkitty@netcom.com>
>-= 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, ...
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.
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.
I'd say generalists split their time across software development, composing music, and competitive sailing. Or at least something along these lines of diversity.
In short: in sparse graphs, mobility dominates.
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.