5 ms·
My answer is it depends on what you want to do. If you want to work at a FAANG, specialization is the name of the game. Find a niche like time-series databases
by sebmellen 5y ago
My answer is it depends on what you want to do. If you want to work at a FAANG, specialization is the name of the game. Find a niche like time-series databases or something, and work on that.
If you want to work at a smaller company or found a startup, being a generalist is a great asset. It also puts you closer to the top of the hierarchy if you can make yourself invaluable to the business/yourself by being a “Swiss army knife.” By that, I mean everyone wants you around, because you can probably solve upwards of 90% of the problems that arise.
Of course, you can’t be a full generalist, you will end up having some language or tech stack you’re more adept in. That’s fine. You’ll probably end up being “T” shaped.
But to reiterate: if you want to make good money and you love a niche topic, specialize in it. Then go and work at a company with the scale/needs for that specific niche. Otherwise, if you’re a generalist, you’re better equipped to handle a vast multitude of problems, build initial solutions, and then hand them off to specialists as your company/project grows.
Edit: You might also just be a fox and not a hedgehog — that’s what I would consider myself. An interesting read: https://en.m.wikipedia.org/wiki/The_Hedgehog_and_the_Fox https://en.m.wikipedia.org/wiki/The_Hedgehog_and_the_Fox.
- rtlfe 5y ago> If you want to work at a FAANG, specialization is the name of the game. Strong disagree. Most FAANG dev hiring is through generalist pipelines, and plenty of L5/L6 devs move around between different domains and tech areas.
- sebmellen 5y agoI’ve never worked at a FAANG, so I may be mistaken. What I do know is that all my friends/acquaintances who’ve ended up at FAANGs have branched deeper into various niches than would be possible at smaller companies. For example, at a company with 50 people, it might be unreasonable to develop hyper optimized native apps for each platform that necessitate a specialist in memory management optimization in Swift. (This is a real example.) At a FAANG, jobs like that seem to be relatively common. Scale brings challenges that the vast majority of businesses don’t have to deal with. These challenges require solutions the vast majority of companies can’t afford to build. The only other field I can think of that requires specialists to the degree FAANG-scale companies do is academia, which is ridiculously hyper-specialized (out of necessity). I’m not sure about the hiring process... I do know about the prevalence of “leetcode” challenges, though, which I suppose are rather generalist.
- xyzzy_plugh 5y agoAs an ex-FAANG who knows dozens of folks at FAANG companies: the vast, vast majority of folks there are generalists, whether they know it or not. The number of people doing anything remotely "hyper optimized" is extremely small relative to the number of employees. They may work on more specialized problems, but only because the corps are big enough to have entire teams or orgs around things most companies can't even do in-house, but it doesn't make the ICs specialists themselves. To give you an idea, the last offer I got from Google had me choosing between a team developing a proprietary database, a team working on low-level networking problems, and a team responsible for, essentially, refactoring another teams code to make it portable. Specialist teams, mostly generalist individuals.
- sebmellen 5y agoI suppose it’s a semantic difference. In the startup world, being a generalist might mean “Python, Node, Go, some backend frameworks (Express, Django, etc.), HTML/CSS, some frontend frameworks (React, Vue), maybe some experience with cloud and devops, also maybe experience with GraphQL or gRPC, good knowledge of key/value stores and SQL databases, probably high-level knowledge of ancillary technologies like JWT, auth systems, a good understanding of data structures and algorithms, experience in optimizing queries, oh and also a little React Native and maybe Cordova.... <and so on, and so on>” (This is me.) In a FAANG, one might be a generalist in something like “iOS” or “ML” and then develop a deeper subspecialty in that field. To me, this looks like a specialist. But I understand that to someone who works at those organizations (FAANG+), a specialist is someone who developed a new language or exclusively builds compilers or does systems-level programming or something. I suppose these are different vantage points. If you’re specialized enough, everything probably looks “generalist” to some degree.
- darkhorse22 5y agowut
- sebmellen 5y ago
- flashgordon 5y agoActually not quite. L6+ hires (atleast at G) are strongly based on domain expertise and the generalists are relegated l3-l5.
- OhSoHumble 5y agoDoes this also apply to their SRE teams?
- kfifi 5y agoThis might sound jaded but for FAANG just focus on gaming promo process and delivering “business value” (however your org defines value). In fact, business and soft skills start to out weigh tech skills as you level up because figuring out how to communicate across a monsterous org is have the battle. For most startups I believe generalists are more important since the teams can’t afford to hire specialists in every technical issue they tackler
- Kranar 5y agoI've worked at Microsoft and Google as well as interviewed at Amazon and Facebook. The interviews are very broad and cover a wide range of topics regardless of what you get hired for. When I interviewed at Google I actually didn't even know what specific division I'd be working for until they gave me an offer (I did know at MS but the interviews were still very general). The overwhelming impression I have about FAANG interviews is that they don't really care about specialty in specific technologies. Unless you're going for a research position, they care about a solid understanding of the fundamentals, data structures, algorithms, good system design and architecture etc...
- sebmellen 5y agoI take your point. Hiring aside, though, I don’t know anywhere in the tech world where people specialize as much as they do in large, FAANG-like organizations. I remember a fantastic Medium post by some self-taught/bootcamp coder who made his way into Uber and specialized in time-series databases, making himself the resident expert and developing deep knowledge of these databases. This quickly pulled him up the ranks and got him better compensation and recognition for his work. Now he is a uniquely qualified specialist in a deep niche. FAANGs are full of people with deep knowledge like this, because there are so many niche problems that require strong specialization. Perhaps you could argue they’re all T-shaped generalists, but then the lines between “specialist” and “generalist” become quite blurred.
- fsociety 5y agoMy experience was the exact opposite. Startup couldn’t afford for me to work in anything but a niche space. FAANG had me working on literally everything. There are exceptions, FAANG can have incredibly specialized roles. I just think that generally they are looking for generalists.
- valbaca 5y ago> If you want to work at a FAANG, specialization is the name of the game. From a FAANG company, it's the opposite. Prior to FAANG I was pigeon-holed as a "junior java developer" My manager (who was toxic but that's another story) couldn't believe that I could also know JavaScript or SQL. I wasn't a "front-end" or a "database engineer!" In FAANG, you cannot say "that's not my job." In a given day or week, I easily look at code across 3+ languages, frameworks while hoping between design and devops. Even our Front-End Engineers go oncall occasionally. It is exhausting at times, but helps to make for a more well-rounded developer. Learning new things is helpful if nothing for the confidence to know you can tackle new things. The same could be said for diving deep I suppose. What I'm getting at, is even when you try to "specialize", you're going to come across side-concerns. P.S. I really like the fox/hedgehog parable. Thanks!