Why isn’t every talented developer trying to work there?
Is it just that they don’t want to take the time to study Leet Code? Or are there other reasons.
Thanks
Otherwise, plenty of reasons, many dependent on specific companies. Some examples based on both first-hand knowledge and hearing from others:
Facebook/Meta - tough performance culture, bad work-life balance, terrible public image
Amazon - toxic exploitative culture, bad work-life balance, sliding public image
Apple - secretive culture, bad work-life balance
Netflix - unique performance-oriented culture that won't fit everyone (see the infamous culture deck)... but interviews are team-specific and not necessarily Leetcode-oriented
Google - growth is difficult, sliding public image
Keep in mind that these are aggregate impressions based on many anecdotes. Some teams will not exhibit the same issues. Some people are also not bothered by the same issues you might be (and vice versa).
1) Dealing with climbing the corporate ladder, covering your ass from backstabbers, and all sorts of company politics are bad enough to deal with in fairly small companies where you might have a handful of business relationships to deal with, let alone in mega-corporations where you might be working in one small project department with dozens and dozens of people and several layers of managers.
2) Big companies have essentially become centers for identity politics, not sitting down and writing code and solving creative problems. Somehow good things like being kind to all and treating everybody as you'd want to be treated have morphed into (mostly people who have infiltrated HR departments) preaching anti-whiteness and anti-male hatred. I do some consulting for companies and have been put on a handful of their internal mailing lists so I directly see what kind of racist filth goes out to the actual employees.
Aside from some exceptions, FAANG in general is not that “talented geeks disrupting the world with brilliant ideas” thing anymore.
It’s a big serious business for a while now.
Hence bureaucracy, average but obedient developers, low signal/noise ratio, slow carrier growth, extra layers of management, no freedom.
Not much talented developers I know of who are dreaming of working in these conditions.
The only hiring selling point is money. You don’t need me to tell you that this is the worst motivator for talented people.
To exemplify: https://paygo.ghost.io/why-did-i-leave-google-or-why-did-i-s...
I am the same age as them, make more money, live in a more pleasant place (i.e. not an overpriced West Coast city), and have a lot more free time and freedom.
I did this by working at (or starting) boring lifestyle software companies that sell for $10-100M.
So, yeah. If you like endless, bloodthirsty cutthroat competition under florescent lights and security guards treating you like freaky garbage then how could you not want the modest benefit that comes with working from a huge company instead of a smaller one that is actually in contact with customers and doing meaningful work for them on a regular basis?
It's also hard (possible, just hard work) to get promoted and usually not up to your boss. This isn't a downside exactly but it's different and can be frustrating.
There is a golden handcuff quality many people find where they don't care for the job all that much but the pay is so good it feels crazy to leave.
Politics: present at all companies, big and small. My wife worked at multiple startups and the politics and behavior were vastly worse than she experienced anywhere else outside of academia.
Bureaucracy: this is kind of true, but good management tries to minimize it. Across multiple roles that only real bureaucratic problems I ever had were disclosures, and generally they either happened immediately or I didn’t actually need them. Some bureaucracy that you definitely get at bigger companies is HR related, but oftentimes that’s because small companies don’t have dedicated HR. That can lead to serious problems of it’s own.
Impact: far too team specific, certainly at a smaller company you have the potential to have a greater impact on the business itself, but you also have a lower probably of having impact outside of the businesss.
Work/life balance: outside of crunch periods I never had any work/life balance issues. Those are much bigger issues at small companies and startups. Generally what I see is that when people come into a FAANG straight out of college they still have the college “100% work all the time” mentality. They also don’t have experience in actually releasing software: it takes time to learn to actually realize that not everything is “must ship critical”. It took me a few years to get to “this bug does not actually impact users, so it is ok to punt to a follow on release”
The big thing to note is that politics and similar is a /much/ bigger issue outside of engineering: program management and organizational management tend to have an element of “we have to fight about who gets resources”. But again IME the FAANGs I’ve worked at have many more systems in place to limit that. When it goes wrong is when you have politics at high levels in the organisation: VPs, etc. Geberally though in IC positions you’re insulated from that by distance - but at smaller companies that distance is reduced and becomes sad.
Later, when my manager joined the program too I got to demo the Fire Phone for him. I could see disappointment in his face as he asked me - "Will you use this phone when it comes out?" I told him no. And he said "Maybe if they give it to you for free?" I turned the question back to him and he thought for a moment and said "No." I agreed.
There was a meeting where the business people told us how good we were doing, what the schedule was, how our partners at the carrier loved the phone and how the users they surveyed loved it too. Someone asked
"What build were they using?" And a lot of people laughed like it was a joke. But I detected the hint of earnestness in the asker. He, like me, was just kind of confused at what he was hearing and trying to figure it out.
Every project I worked at Amazon was like this and I worked on quite a few. Crushing, depressing failures that everyone I worked with saw coming. But also, it didn't effect our careers negatively at all.
There's a disconnect between your output and your career. You can deliver features on some program that never sees the light of day or is simply an embarrassing failure for your entire career. And, it doesn't matter because somewhere in the company is an effectively infinite money generator which will keep you and your colleagues well compensated even though, realistically, there would be no difference between you working hard and you doing nothing at all.
By the time I quit Amazon I was so deadened by the feeling of contributing nothing and meaning nothing despite working quite hard I just started to let things go. I refused to read my email as a general principle. I'd sometimes respond on Chime. I'd go out on day trips and just check my phone once or twice all day. My productivity dropped off to zero as I just didn't care any more.
Internally, I felt this conflict between being a brazen parasite - intentionally not working but still getting paid, and feeling like I had always been a parasite - working on stupid projects and getting paid because of the lucrative ones I had no part in. After a couple months it got to be too much and I just told my boss I was quitting. He actually persuaded me to stay on a couple more months to help with the transition and to wrap up some of my tasks. Well, I was more persuaded by the chance to let a little more stock vest, but still...
It's not all bad. I found the experience quite lucrative and I don't need to work for the foreseeable future. I did find it kind of soul deadening though.
Upsides: pay is decent, a number of really smart people there, good places to learn.
Some the more general reasons to not work at one are
- The tech stack is idiosyncratic
- You won't necessarily be exposed to the same breadth of experience
- You won't know most people at the company
- Less agency as an engineer
- More organizational overhead
- You're not good at leetcode or don't want to put in the time
- Your work is often less connected to a tangible problem
- You're a cog
Reasons to work at one
- The pay
- It lends credibility to your resume
- Higher ceiling for star performers
- Stability
- Learn how things work at scale
- Better perks
Oh, one huge one: different people are better at different stages of a product's lifecycle. No time for tests, monitoring, alterting, or code reviews? An early startup might be a better place because they don't have time for those, either.
$ is good, sometimes the team can be good, but there are lot of drawbacks: coworkers are spoiled, learning is stunted because most things are taken care of, more about solving people problems than product problems as you move up, more about performing for specific individuals rather than helping customers, scope is limited, etc.
This article resonated with me: https://www.productlessons.xyz/article/why-harvard-faang-ove...
Focus. One of the FAANG culture diseases is to do a lot of engineering work of dubious to negative value. Doing NIH versions of popular open source projects or migrating and replacing stuff that works fine with stuff that works at best a little worse. When engineering time is more scarce, you’re more likely to be doing something important.
Software has almost limitless potential to improve people's lives and personally I prefer to use whatever talents I may have to that end. It doesn't pay as well as adtech, fintech or social networking (though here in the UK the difference is far less than in parts of the US) but it can be much more useful and/or interesting.
If you like hacking on features, not having to do robust A/B testing or walk through tons of leadership / management hoops, and having a wider role in the development of something, then a smaller company or startup would be better.
TLDR: as with any thing in life, it depends on the person, and what makes you happy at work.
What FAANG these days has going for it is just the compensation. But that attracts the wrong crowd when compensation is the only motivator to work for a company. Talk to hiring managers, they have a ton of issues on the hire and fire front.
You might be surprised, but most high potentials are looking beyond compensation and want to do something they can identify with and are passionate about while having a good work-life balance. One of the things that makes them high potentials to begin with, compared to the leetcode solvers, who are a dime a dozen and are just compliant little worker bees who glady exploits themselves.
For me FAANG was a good time, but as a seasoned professional I never had to jump through any hoops. But it's not the FAANG I once joined and was passionate about. That FAANG is not at home anymore. Sure, YMMV. Just my personal experience and point of view.
Pros: If you join the right team at the beginning, you can be on a rocketship and have 'exciting engaging work' (subjective)
Cons: It's not all 'talented developers solving hard problems'. As you level up, there's a ton of politics and excessive, unnecessary complexity caused by throwing as many eager, highly-paid engineers on problems with incentives optimizing for individual production.
Most successful Google projects are directly tied to 1 or more promotions for the key contributors of the project. Google's internal economy runs on perf - there's a lot of fixation of position and authority, particularly as you get L5+. L3->L5, you can largely ignore politics / crank out working systems and be successful.
If you are an early engineer on a team (even as an L3), it's not too hard to become and expert (especially if you front-load by working excessive hours early in your career).
Flip-side, you can be extremely talented (in one way or another) and be put on a team and projects that emotionally drain you and make you question your purpose in life.
I've talked to a lot of Googlers who are just as frustrated with their almost 'lavish' 6-figure silicon valley jobs and end up quitting. The causes are mixed - mostly politics, unnecessary complex, or the nature of the work (often monotonous or frustrating - mostly due to the nature of google3), commutes (less of an issue now), wanting more e2e ownership, more 'work satisfaction'.
If you want to do the most engaging work of your life where you learn the most - you're generally probably better off with newer teams/projects/systems - e.g. at a startup. A few years on almost any system and you'll be an expert - as long as the system lasts that long.
If you're looking for a comfortable, high-paying tech job - FAANG can be nice, but you need to make sure you enter onto the right team with the right expectations all around.
p.s.: shameless plug: I'm now building (early stage) a 'web3 game server' on Solana: solanagameserver.com. #tardigrades
Always a bad choice