Have we discussed the requirements for those fancy "Tier 3" jobs? I suspect it's overall a lot harder than most regular dev jobs.
Many developers are medium sized fish in small ponds, where they can get away with moderate effectiveness, bad programming habits and little study, or, if they are good, they easily stand out and enjoy the honor of getting the harder tickets assigned, yet may not ever be really challenged.
These top paying companies all seem to do quite complicated stuff, serve a lot of users reliably and implement major features quickly. FAANG codebases seem large and involve a lot of (custom) tooling that devs need to grok and processes they need to understand. Just the author's passing advice to study up for those interviews means ... many hours of study in that "100%-concentration-mode" that many people are not willing or able to put in even for 1 hour.
No doubt there are some cosy pockets in FAANG but, ultimately, building AWS or Azure from nothing can simply only be done by a certain type of person who is willing to bring a certain amount of effort. And those people the market rightfully grants the appropriate salaries. Right?
I work at such a "tier 3" company. It's not about the complexity of the tooling or the code. Most of that is stuff the typical Enterprise Java Dev can "grok" easily enough with just a bit of a learning curve. The problems of scale and infrastructure are mostly abstracted from engineers at these places already, and that's where the complex tooling comes in. The rest of it is unnecessarily complicated, mainly because these companies have two problems. One: they've made a point of hiring at the high end of the education pool (masters, PhD) to work on what amounts to glorified CRUD--these people are bored, and add complexity where it is unnecessary. Two: the promotion mechanism depends on running a technically complex, "needle moving" project--this also promotes unnecessary complexity.
The real reason the salaries at these companies is higher is also two-fold: 1) "everyone" wants to work there, so they can be selective and use salary as a justification for that selectivity; 2) they want to keep their overqualified staff happy enough to not start competitors.
Another thing I noticed at these top-tier companies is an alarming propensity for hiring people simply so they will not be hired by another company. They end up on these awesome little make-work projects that never see the light of day
I don't think it's just to keep them from other companies, it's that the returns on the projects that do see the light of day are so huge, that it makes sense for tech companies to have 10 of those and discard 9.
I get your perspective, but… I saw tons of guys in “research“, “fellowship“, and “architect“ positions who were achieving nothing useful for years at a time.
This downplays how bad many developers are. I have some web dev friends that know how to use exactly one framework, one language, one source control, and never touch the cli out of a few commands stackoverflow told them to run. Changing from GitHub to bitbucket would be a major undertaking for them and that’s not even abandoning git.
They do well managing the small business apps they do, but they have no interest or motivation to learn anything different.
Now, keeping that bar in mind, there are devs worse than them that they complain about to me. They struggle with basic input validation (understanding what is executed on the client vs server, where strings can be trusted, etc).
Having come from Google, the tooling learning curve is only trivial if you already have a completely different mindset about what it means to be a programmer than 90% of the labor market.
The “webdev” kind of person you’re talking about likely doesn’t have the same education as even a relatively unskilled “enterprise Java dev.” I think you’re overselling the complexity of using the tooling at FAANG type companies. The tech is complex, but a tiny fraction of the company actually works on that stuff.
What are you talking about? They have exactly the same education as an “enterprise Java dev”. It’s someone who ties their professional career to one language and one use-case.
I’m inclined to believe that the enterprise Java dev can get away with knowing much less. Basically being a master of their domain, which incredibly valuable to the company they’re at, and not at all to the market as a whole.
Many developers are medium sized fish in small ponds, where they can get away with moderate effectiveness, bad programming habits and little study, or, if they are good, they easily stand out and enjoy the honor of getting the harder tickets assigned, yet may not ever be really challenged.
These top paying companies all seem to do quite complicated stuff, serve a lot of users reliably and implement major features quickly. FAANG codebases seem large and involve a lot of (custom) tooling that devs need to grok and processes they need to understand. Just the author's passing advice to study up for those interviews means ... many hours of study in that "100%-concentration-mode" that many people are not willing or able to put in even for 1 hour.
No doubt there are some cosy pockets in FAANG but, ultimately, building AWS or Azure from nothing can simply only be done by a certain type of person who is willing to bring a certain amount of effort. And those people the market rightfully grants the appropriate salaries. Right?