I landed 18 FAANG+ software engineer offers
medium.comI miss the days where people actually cared if you knew about threading, how the unix file system worked, the finer points of the language you choose to work in. Yeah I get it, most of it is book knowledge, but it still somehow selected for the people that actually built the foundations of the tech companies we see today. The current crop of hires aren't really contributing anything fundamental, just jumping from one high paying gig to the next (and I say this as someone who works at one of those fancy places he get an offer from).
Listen I would love to learn about fundamentals and hyper threading and sys internals. But I’ve never needed to, because the interfaces I interact with every day (programming languages) do a great job of abstracting that complexity away and handling it well enough that there are never problems I’m aware of.
Isn’t that the natural order of generations? Kids today don’t need to install drivers off floppy disks, instead Apple and Google send devices that are already installed and configured. I don’t need to know how my 50 year old plumbing works, just how to work the faucet. Because the likelihood of an underlying system having a problem is slim to none.
Pair this with the direction this industry is going. Each SWE is expected to produce more with an ever increasing cocktail of tools. It’s no longer good enough to make a memory efficient app that runs on Debian Linux x86. You need to be on desktops and laptops and mobile and half a dozen operating systems. If you build web apps then ok it’s not enough to just have it work in the three web browsers (which change every month now) - you need failover and multi region and cached all across the globe.
Our industry doesn’t incentivize deep understanding. The current goal is delivering more capabilities. Until those incentives change I don’t see why interviewing has to remain as rigid as it usually is.
I would love to learn about fundamentals
Good, that's a big part of programming.
hyper threading
That's a term from intel for having multiple logical cores in a single real cpu core, it doesn't have anything to do with threaded programming
sys internals
A file system isn't system internals
Kids today don’t need to install drivers off floppy disks, instead Apple and Google send devices that are already installed and configured.
You are talking about refined products, which has nothing to do with creating software.
I don’t need to know how my 50 year old plumbing works
You should if you're going to fix anything or make any changes to your house. It isn't that complicated and it won't be very different from what would be in new construction.
Because the likelihood of an underlying system having a problem is slim to none.
If you put the wrong things down your drain, it will clog. It would be better to understand your plumbing before breaking it.
It’s no longer good enough to make a memory efficient app
I don't think anyone is doing that any more at all.
Our industry doesn’t incentivize deep understanding.
Anyone who uses your work will appreciate you having deep understanding of what you're doing.
> Anyone who uses your work will appreciate you having deep understanding of what you're doing.
But do they really? Do either consumers or investors really care?
Just because there are never problems that you are aware of, doesn't mean there aren't any problems all. You're just choosing to remain ignorant.
BTW, this is also the reason why history tends to repeat itself: subsequent generations disregarding the knowledge their ancestors came to know. You may end up re-inventing the wheel, and not even know that your ancestors made a better one.
I mean c'mon I also enjoy learning about the full stack (have written software at pretty much all layers, embedded, device drivers, middleware, web apps, frontend/backend, distributed systems, databases, etc); but I think that's because I started my career almost 20yrs ago when software was simpler and I've moved on along with the industry. Someone starting their career in the last 5yrs is unlikely to need to follow the same path. At some point there are enough abstractions that you hit diminishing returns in learning it all and there's just so much time for you to do it. I don't blame them.
I never really learned assembly properly for example beyond toying with a few programs early on my career.
> The current crop of hires aren't really contributing anything fundamental, just jumping from one high paying gig to the next
Who is responsible for this? Hiring companies play a major role. I knew a guy, who started as a tape boy at Bell labs, eventually becoming a system administrator, later a programer working at AT&T labs. He didn't even have an undergrad education. This was possible for him, because of the kind of place Bell Labs was.
Today, companies don't want to train people, don't want to take a chance on candidates. Sure, since companies pay $350K per annum, they just want rock stars.
If interviews started testing for OS fundamentals, then people would just switch to prepping for those instead.
Would at least be a lot harder to simply cram one's way through than the algorithm stuff.
People that cannot demonstrate a working knowledge of Linux system internals never pass interviews with me.
I tend to catch the CS bootcamp types cold because I only ask real world practical debugging questions that select for experience.
Google's SRE interview, the SA track one, have a 45-min interview solely focused on Linux system internals. (In addition to standard LeetCode, networking & troubleshooting components.)
A few other larger companies do this as well for SRE interviews.
As it should be. I'd be very wary of company that didn't...
For what role? I wouldn't for example expect that for a full stack role, but I would for something like DevOps or SRE.
Any full stack engineer should have a working knowledge of the system they are writing code for, or they will end up making massive security mistakes.
Pretty systematic and efficient way to get high paying jobs. Kudos to the author. I wish I had the talent and energy to prepare for these interviews.
The system that Steven put out is just like a stock trading system, with stocks that break out, etc.
https://www.breakoutlist.com/ is a nice compilation of companies that can make you a multi millionaire, just like break out stocks sent out by stock gurus like Dan Zanger.
(steven here) thanks, interesting comparison with stocks! breakoutlist actually helped me pick my last job. somewhat relatedly, I made a breakoutlist for climatetech companies recently: http://climatetechlist.com/ with some friends
[removed]
Please don't post personal attacks to HN. You may not owe 18-FAANG-interview-offer-receivers better, but you owe this community better if you're participating in it.
What a tremendous waste of time for everyone involved.
In 2019 the tech sector was hiring anyone with a pulse. I bet that today he wouldn't get many offers.
This is not true. CS graduates were overwhelmingly not employed in their field after graduation. Outside of a few "top" schools that funnel into big tech. We have had an oversaturation of devs for years.
Source?
Unless things have changed, if you don't go to a top school, you'll see lots of CS majors who can't really code, struggle through projects, and get degrees.
Interviews don't interview for coding ability. Top schools would fail if this were true. It's all about elitism.
Tech hiring is so broken.
My experience exactly. It is broken. From my experience, is a result of the high cost of employees, an increasing mount of HR practices and processes and a sense of entitlement from both the company and the candidate. Something should be done to make technical and system design questions a thing of the past. Culture fit is the only one unavoidable.
LOL offer inequality is a thing