> ...whiteboard questions on basic data structures and algorithms (I'm 40 and I still absolutely suck at those)... at my age it's time to accept that the window has closed on some things :)
If you want to learn and are willing to put in the work you can do it. It will take some number of weeks or months, but it is totally doable with reading and practice. I read and practiced for a few months before getting my job at Microsoft at age 45.
Your age isn’t the problem; I know plenty of young people that don’t want to do the work also.
You mean doing the work _again_. I had all the algorithm stuff down cold out of college and maybe for another 5 years after. Now after 20 years of rarely needing any of it and having it be a web search away when I did, I couldn't come up with any of it on demand.
"Doing the work" meaning having to study to relearn a thing that I'll maybe use sparingly in my work means the interview process is broken, not anyone's motivation.
>"Doing the work" meaning having to study to relearn a thing that I'll maybe use sparingly in my work means the interview process is broken, not anyone's motivation
I used to think this too, but as a filter I think it's having the desired effect. From the outside looking in Life at a FAANG seems competitive in nature and they are optimizing for the people willing to push themselves that far to learn something.
The added bonus is all new hires at least know the effects of space/time complexity and how to make space/time trade-offs deeply well. Given they operate at the scale they do, mistakes with those concerns are more likely to have a material impact. Requesting that you know it _now_ and now that you _used_to_ know back in the day seems reasonable.
The upside from the candidates perspective, as ridiculous as leetcode study is, is one set of study applies across multiple companies, so candidates don't have to expend much energy on trying to optimize for how to study for a particular companies interview process.
If that's the way in and you want in, that's just what you have to do. If you aren't prepared to do it, you won't be getting in. If you are prepared to do it, and you do, it seems achievable.
> The added bonus is all new hires at least know the effects of space/time complexity and how to make space/time trade-offs deeply well.
Do they?
In my experience this was true in the early days of white board interviews where the only people that even thought about this stuff were people deeply interested in algorithms and computation.
But in the post-"Cracking the Coding interview" era (including the transition into the full leetcode era) people seem to be able to pass these interviews without really understanding anything in the same way college students can ace calculus while have literally zero intuition about derivatives.
I don't mind whiteboard interviews, they're a fun game you can train for and the practice is interesting. But the big tragedy now is that I feel almost nobody understands algorithms anymore since everything has been reduced white board coding drills and everyone believes they have an understanding of something they don't.
As a great example of this almost nobody today knows any heuristic optimization techniques (think the old ITA software puzzles), which used to be near and dear to anyone that cared about algorithms. But since you can't test for heuristics they same as you can established algorithmic solutions nobody studies them.
> they are optimizing for the people willing to push themselves that far to learn something
They are optimizing for people in one of two groups. One is people freshly out of college who still have that stuff at the top of their mind. The other is people who have the free time/energy to bring it back to the top of their mind instead of needing a few extra minutes to go back that far in their memories. Pick your privilege, in other words.
> all new hires at least know the effects of space/time complexity and how to make space/time trade-offs deeply well
In my experience, this advantage fades within their first evaluation cycle. And what they certainly don't seem to learn is when to do these kinds of evaluations. Oh, the number of times that I saw one of my coworkers hyper-optimize some part of a system where both N and K were too tiny to matter, then just cargo-cult a crappy higher-level algorithm where such analysis really would have moved the needle.
BTW, since I know someone will launch a "sour grapes" personal attack (and get a free pass for doing so because I'm on someone's target list) if I don't address it, I passed such interviews at 52 with zero preparation and zero trouble. So no, I don't take it personally. I just recognize this approach's flaws. It's why I refused to do interviews at that company, taking a hit for that every half until I left. Some of us stick to what's right instead of rationalizing what's wrong.
My favorite version of this is the driving test you take in California before you get your license.
One of the rules is that you automatically fail the test if you bump a curb with your wheels. That means, when pulling into a spot, you can't inch forward until your front wheels come to rest on the curb. Fail!
At first glance it seems like a trivial thing to fail someone for. I know in normal driving, I use curbs like this all the time. On purpose, and with no hazard to myself or others.
But the fact is, you're told this explicitly up front. "Don't do this, or you fail." Given that you're warned about it—and know this is the one thing you cannot do—if you still contact the curb, then you've demonstrated that you don't know where the boundaries of your vehicle are. (Or maybe that you're not so good at comprehending instructions?)
It works as a simple filter.
(EDIT: I checked with the DMV's test criteria[0], and I don't see this mentioned in there. There's an automatic fail for driving over a curb, but it's not clear if simply contacting it counts. Not sure if my examiner was a sliderule, or if the rules have changed since I first got my license.)
One of the tests is for backing the vehicle up. In that test, you may not touch the curb. It's not otherwise obvious from the document provided that any other contact with the curb is disallowed. So either it's untrue that it's disallowed when pulling forward, or it's untrue that you know about it upfront.
Regardless, not touching the curb, even if arbitrary, can be an indicator of competence. It demonstrates control and awareness of the vehicle.
Memorizing an algorithm is a potential indicator of many things, not all positive, but I don't think it says anything at all about competence.
> ...you can't inch forward until your front wheels come to rest on the curb. ...if you still contact the curb, then you've demonstrated that you don't know where the boundaries of your vehicle are.
This demonstrates one reason why whiteboard interviews aren't great. They don't mean what people think they mean, and people think of them in very black-and-white terms. X always implies Y, or at best they say, "Well, maybe not, but..." and then justify the exact same result with only superficially different reasoning.
In your example, the driver might have demonstrated he doesn't know where the front or rear of the wheel is exactly. But it could also be he was just nervous or driving a vehicle he isn't used to using. Maybe he had to borrow his older brother's car when mom's broke down at the last minute. Saying he doesn't know where the boundaries of his vehicle are goes against all the other evidence: he didn't strike anything with the boundaries of his car. The curb is already inside those boundaries, intentionally and by design of the test.
A lot of that stuff depends on the proctor. When I took the driving test the first time in my state (not CA), he almost failed me because I failed every single left turn. Thankfully at the end he asked a question, and realized that I had done every turn incorrectly because nobody ever bothered to tell me that left turns always should go to the LEFT lane, not right.
You and half the country. The rule is actually you match the lanes left to right. Aka if two lanes are turning left into a three lane road the second from the left goes into the middle.
I suspect that people happened to have just zoned out during this part of the class, although a friend of mine recently said he was never taught that one is suppose to stay as far right as needed to allow people to pass on the left either.
And its not just random drivers, the more esoteric parts of the law (driving on the shoulder in TX, free right turns, uturn laws, center turning lane, etc) aren't even understood by many traffic enforcement officers.
In California, for a single left turn lane, you're allowed to complete the turn into any of the lanes you choose.
The driver handbook doesn't go into detail about double turn lanes that feed into a 3-lane cross street. My own rule is that only the inner lane (leftmost) must complete the turn in the matching innermost lane. The outer lane can end their turn in the #2 or #3 lane. I tend to choose the #3 lane just to put as much space between me and the car next to me, in case they incorrectly go for the #2 lane. Unless there's an opposing right-turning car that I trust less :)
> I used to think this too, but as a filter I think it's having the desired effect.
Is it though? I'm a hiring manager and don't ask such questions and yet have had no problem hiring really talented engineers.
The reason I don't ask those questions is because I know that cranking up the interview pressure and asking arbitrary, revisable, common interview questions doesn't actually prove anything aside how good the candidate is at being interviewed.
I think they are saying not that it’s a filter for talent, but for people willing to “put in the work” to pass that type of interview, which sounds about right. I feel the same way about some colleges.
Defining a filter in order to filter people out is fine, but we should be honest about the fact that it has very little to do with learning, and more to do with the willingness to deal with crap and jump through hoops. More amenable employees are easier to manage, nothing wrong with that.
All exams can be crammed, and having crammed into plenty of gated opportunities in life before, I believe you're mistaken if you believe that it produces more knowledgeable workers as a result.
At the end of the day, it's a market like any other. If there is someone who is more willing to do X for Y reward than you are, then they will get that something instead of you. And if you find that there is a shortage of people willing to play ball, you can always work towards bringing in more people who are willing to play ball.
Agree with your last sentence. If you want something, you have to go get it. If employees aren't motivated enough to organize and close the power gap, then employers will continue to be motivated enough to push for and work towards their own goals.
You have to be careful about your assumptions. Being willing to put in the work could be a bad sign. If you already have a bunch of job offers, you aren't going to spend weeks studying to get one more job offer, unless the place might offer dramatically better benefits.
And, it may be some people don't need to be any extra studying work. There are people who do programming competitions for fun, and there was prior discussion of Google saying those people did worse on the job: https://news.ycombinator.com/item?id=9324209
> If employees aren't motivated enough to organize and close the power gap
"If X aren't motivated enough..." usually ends up being a really horrible take for most values of X. I'm not so sure it's different for X=employees, specially when the type of interview we're talking about is more burdensome to older folks, folks with certain personality types or anxiety issues, arguably most women, etc. Why should the burden be theirs alone, while employers get a complete pass on setting up whatever arbitrary hurdles they want?
I think that is reasonable that a company do some tests on folks that don't have much baggage to show for, because in this case they are doing a wild guess and must count a little bit on luck.
But the parent was on his 30-something when he did the interview, and i bet he had a lot in his curriculum to show for, so in this case the company dont have to guess anymore.
I think it says a little bit that the HR is failing somehow. Failing to adapt to different kinds of human beings.
By the way, there are a lot of psychology into this. Sometimes the right kind of people to do some sort of task is the one that are avoiding the whiteboard tests.
In the end it will lead to an unbalanced company with people very similar and optimized for a couple of areas, but lacking in others.
This is something that has always perplexed me. These interviews may make sense for an entry level candidate with no ink on their resume beyond a GPA, but then any amount of actual work history just gets completely discarded. Experience needs to count for something.
I would think these companies that are built on measuring data would have some idea if the whiteboard interview works. Otherwise, why would they do it?
Q. Why does 90% of human society work the way it does?
A. Because that's the way we've always done it.
I can't speak for SV companies, but my experience of data is that it can just as easily rationalize preconceptions as be used to inform decision-making. Somebody has to interpret that data, after all.
The rampup at FAANG can be brutal and you'd be doing lots of learning even after getting in. The leetcode style interviews are designed to select people capable of studying and materialising broad problems in depth and scope under time constraints. They are also objective and can't really be faked nor you can talk your way in like in most banking/finance IT jobs. I was of similar opinion at some point but these realisations made me change my mind and I've come to like leetcode interviews.
But I also think they only make sense in FAANG scoped companies where all the stack is proprietary. Small companies or companies using opensource tools don't really have this rampup and doing such interviews mostly because others (FAANG) do it.
Lots of things are broken. The question is do you want to work hard enough to overcome it? My guess is you’ve got a good enough job already, so it’s not worth the effort.
I think that, as you get older (or maybe further into your career? More tenured? I don't know that it's inherent with age as much as experience), you become less interested in doing ridiculous things just to prove that you can. That's not to say that other people shouldn't, just that, the value-add seems less and less worth it as time goes on.
It is possible (and in fact common) to lead a full and successful career as a dev, where A.) you don't ever work for FAANG or SV, and B.) You make plenty of money, have plenty of freedom, build high profile, successful technology, have plenty of career mobility.
So, if you believe those things, "Learn these things that you learned in college and then never really touched again directly" seems like an absolute waste of time. You've seen them, and you've seen that while you were _actually building things_, they didn't really come up, or at least directly. And when the value add is "Work for big fancy company for a couple % more money per year", it doesn't really seem like that much of a value add.
I had the “misfortune” of getting fired for going to bat for a junior co-worker who was being taken advantage of by the company. If I hadn’t taken 2 months to do nothing but grind on leetcode problems, there’s no way I was ever going to do it in my precious free time (2 kids, lots of hobbies).
I’d never make a bet like that on myself by choice, but in hindsight it would have been an excellent investment years ago. My quality of life is immensely better working for a big tech co than it was at any startup.
I suppose I'm pointing out the nuance between "Big Tech Co", "Startup" and FAANG.
There are plenty of big tech companies that pay well, offer a lot of freedom, interesting tech, but are also not FAANG companies with silly interviewing practices.
I think I’ve done maybe 30 interviews? Only three of them were the full blown whiteboard for 5 hours process. The first two I failed at the beginning of my career and in hindsight I was properly rejected. The most recent one just made me feel like I’d earned it. The leetcode grinding helped, but my years of experience helped more.
IMO if a company messes around with soft skills, take homes, techno chit chat, long lunches, brutal arcane automated domain knowledge screenings, shibboleths, “day in the life”, present your solution to the group, heuristics, or some other creative way to justify their own biases, I can be fairly confident that I’ll have at least a few co-workers that really just can’t code very well.
I have not met an engineer at my current company who didn’t impress me when I dig into their code a little. There are low performers, but even they produce excellent code when they feel like it.
Nothing is more frustrating than taking a day to interview and getting maybe 30 minutes of watery technical challenge.
I guess the splitting point is thinking that whiteboard interviews select candidates that are good coders - a point I have an entire career of anecdotes to disagree with. YMMV, as with everything.
edit Also, to be clear, you seem very proud of your interview, your company and coworkers, and I do not mean to discredit your pride or success. I am simply pointing out that your experiences are not universal experiences and might be due to lots of other factors, totally unrelated to interview methodology (healthy attrition rates, supportive teams, constructive code review, etc).
To the edit: more like I was deeply unsatisfied with each and every non-whiteboard interview process.
This is regardless of outcome, including many offers and years of working at companies with broken interview processes.
I don’t think whiteboarding is a great methodology, but the other methodologies are worse.
As an interviewer, I find it stressful to give whiteboard problems and my data point usually feels fairly noisy. At startups I preferred giving a tiny take home and working with the candidate on extending it in an open ended way.
As a candidate, I refuse to do take homes (known too many take homes)
The interviews I had, usually are a discussions about the projects I had done and the choices I had made and questions that stem from there. I am not sure what is unsatisfying about interviews like that.
This interview process selects for someone with whom the interviewer might enjoy having meetings.
I’d imagine it’s very hard to distinguish between a good talker and a good worker. Maybe some people can do it, but this is not a skill set I’d expect everyone conducting interviews to possess.
The data shows that humans are terrible at every kind of interview assessment. This is why I appreciate an approach with mechanized layers such as “ask problem with known answer, take notes”
This conversation has been beaten to death, but I'll bite.
I think the problem with whiteboardy-type interviews is they've become closer to trivia. The fact that you grinded LeetCode and others read CTCI kind of prove that, no? As in, people go far out of their way to learn a skill _just to pass the interview_.
> I’d imagine it’s very hard to distinguish between a good talker and a good worker. Maybe some people can do it, but this is not a skill set I’d expect everyone conducting interviews to possess.
Interviewing is a skill and should be treated as such. This means possessing a set of skills any dev off the floor won't necessarily have, and that should be expected. 99% of devs don't have the skills required to conduct a whiteboard interview as an interviewer correctly either, and yet that seems to be generally accepted as okay.
> The data shows that humans are terrible at every kind of interview assessment.
Exactly, which is why, in my posts above, I pointed at things other than the interview as reasons you might be very happy with the quality of your coworkers work. It seems silly to say "The data shows that humans are terrible at every kind of interview assessment", but then also attribute anything from your job to a specific style of interview assessment, right?
You'd get further as a company by investing in training, code quality (review, analysis, etc), leadership, and healthy firing processes.
> There are plenty of big tech companies that pay well, offer a lot of freedom, interesting tech, but are also not FAANG companies with silly interviewing practices.
Names? I’m genuinely interested in places paying near 400k/yr but without stringent whiteboard exercises. Haven’t seen them tho...
They pay that much. https://www.levels.fyi/ I'm only going to be joining FAANG or similar if they pay that much as I have no incentive to otherwise.
My personal situation doesn't seem relevant to the question. Depending on how you look at it - I am. It's just that over half of it isn't liquid right now - but will likely be next year or the year after.
> I'm only going to be joining FAANG or similar if they pay that much as I have no incentive to otherwise
If this is your perspective, best of luck to you, I hope it works out. You've ignored most of what I was trying to say, which is fine. I hope you find the success you're looking for.
The alternative is work on blah-blah-blah but make literally half as much. For people who live in very expensive regions - FAANG and the similar are the only options to a semi-regular middle-class lifestyle. When non-updated 1930's homes that are 1000sqft on 4000sqft lots are regularly going for over $1.7mil - you can't really afford a typical middle class lifestyle on $180k/yr income.
You don't need to explain to me the economics of San Francisco. If you prioritize living in San Francisco over everything, you should try to make as much money as you possibly can. Best of luck.
But these are the people we need to entice to leave their jobs! The best potential hires always have jobs; they rarely go to the open market. They rarely respond to open casting calls and don't need to go through the broken song and dance routine. We know this as the most reliable metric is prior work directly with someone who you trust who vouches for them. Everything else like whiteboarding data algos is weak sauce.
We're talking about what this person should do though. They can't change the broken system but they can best work it to their advantage with some effort.
Maybe the best employees are the people that can best overcome broken processes?
And yes, I meant that seriously. Every fortune 500 company is held together at some level with bandaids and bailing wire. Being able to deal with things like that might be important.
In my firm, I know we place a much higher emphasis on being able to just roll with it than technical perfection. But my firm is but a drop in the ocean compared to everyone else.
One problem with this approach is that with time people tend to optimize to gaming the game.
With enough time you are just hiring people that are good in the game and not the best fit for the position.
Companies also need a lot of people that are creative and "think outside the box". With this you are optimizing for conformists and people that "think inside the box", and that optimize to fit the game.
No wonder the big companies have a hard time to create things..
Western society need badly to know how to deal well with impermanence, and this are such a case were there's not much prediction that can be done.. its just like dancing expecting the rain will come.. sometimes it will, and we will gladly think it was because we danced.
The best tip for hiring is someone that you know that knows a little bit to point a couple of good people for you. Because those things are pretty hard to know, and there are very little we can do, without the experience to show for some specific characteristics we need.
> they rarely go to the open market. They rarely respond to open casting calls and don't need to go through the broken song and dance routine.
I don’t know why people think this. Is there some data to back this up...? I’ve seen great engineers go onto the open market and have to go through the hoops...
Meanwhile I’ve seen plenty of terrible ones have no issues getting through side doors.
Agreed. It always comes down to a base equation of who is willing to do what kind of work for what kind of reward under what kind of circumstances.
After a decade of software being a desirable job and everyone trying to get into it, we can bet good money that it's now a buyer's market rather than a seller's market.
can't agree with you more here. I just rejected Amazon's "onsite" interview as I could not find(not motivated either) time to redo all those only-useful-for-interview-leetcode questions before the interview. I for one, _never_ need use those in a 20+ year career as a software programmer. Most of the time is issue tracking, feature addition, and if I do need an algorithm, I know where to find them and which one is the best, which are enough and are 100% of the time done, I don't need reinvent the wheel for that at all.
Have to take the opportunity to shill https://sievejobs.com - a jobs website I've created that let's you hard-block jobs with "broken" hiring practices such as discussed here.
Create a Job Seeker profile to help the website overcome the chicken-and-egg dilemma - As with any job site, it's free for job seekers and I've tried to streamline the signup as much as possible.
In my short career of ~10 years I've yet to use any of those the algorithms they ask about in these interviews. I've gone from full stack on php, to java backends,to devops engineering, and never have I ever had to use any of these algorithms. I got a decent score at university where we learned it, but it's ridiculous to be asked about something I'll never use. Even if I knew the theory, and was able to ace it, it would be rare for me to use it, because it's all available in libraries, and they definitely will have done a better job than I will do.
"It's not about the solution, it's about how you get to the solution" you say, I say there's better ways of figuring out if you have problem solving skills.
For sure, there are jobs that require such theory, but many do not. And if it's not required, managers need to realise they're potentially missing out on good talent.
Algorithms are often treated as a trivia challenge, which is the complete wrong way to use them.
What you really want to know is whether a person can translate a set of requirements into working code. Algorithms are useful because they reduce the possibility that the candidate failed in the coding test because of poorly specified requirements.
"Problem solving" ability is a different beast altogether.
I think the question really is, when are these companies going to wake up to the idea that most people in their mid-40s who are successful programmers aren't writing leetcode, they're preventing junior engineers from checking in bad code, and handling large-scale outages with a few lines of analytics and config changes.
I think it's less of an IQ test and more akin to a gang initiation ritual.
Instead of "the condition of joining our gang is you need to murder a random in cold blood" they are saying "our hazing ritual is grinding several hundred hours of leetcode and finally running the leetcode gauntlet, if you can endure that, you're in".
The harsh truth is there are enough 40th out there who can do that AND implement DFS on a whiteboard, so why not take them? At min. it arbitrarily shows their motivation to get the job.
It's a specific kind of work - I assure you I spend a lot of my spare time learning and working on hobby projects. The grind of drilling on brain teasers and toy interview problems is something I have little patience for anymore.
In any case I'm doing ok these days. Most CA employers (short of, say, Google or Netflix) wouldn't offer a big enough pay increase to offset the cost of living, and besides, I hate living in cities. My current dream is to find a good paying remote gig and live someplace... remote :)
> Your age isn’t the problem; I know plenty of young people that don’t want to do the work also.
It's fascinating, coming from the world of "Strategy" Consulting, to see the byzantine, bureaucratic shibboleths of dinosaur companies recreated in SV in real time. And justified the same way, no less!
> you can do it. It will take some number of weeks or months
I think you're overstating the time needed. Passing those interviews for someone who reads HN is basically just reading Cracking the Coding Interview [1] or Programming Interviews Exposed [2] and doing the ~50% of the exercises.
Source: Worked at 2 of FAAMG and got rejected from 2 of them (because I forgot to read those book before the interview)
I don't think that's the point, capability vs. age.
It's only an indirect factor, in that of someone at a certain age, tends to focus on more important things, like what it takes to build large systems, avoid mistakes, work well with people. Shooing away folks with experience is a significant loss.
Also, just because you "do the work," it is no guarantee. Very likely they could pull a random question from a subject you haven't done recently.
Are they actually shooing away folks with experience, or do they get a tonne of successful applications from people with experience, and to limit the overwhelmingly large number of applications they filter for those who have experience and can do leetcode?
> if they're anything like other tech companies, they're doing a shit job of hiring
Facebook grew from 17K employees in 2016 to 45K in 2019. 38% annual growth, and the vast bulk of that was in engineering. "Only" 17% at Google, but it was already larger so the absolute numbers are higher. 22% at Netflix. This is hardly a "shit job of hiring" as you say. I often saw such growth numbers at startups, but never at companies with headcounts already in the thousands let alone tens of thousands. They're doing a fantastic job at hiring.
Part of the reason they're hiring so much is because they have to. Again contrary to what you say, they are not holding on tight to the good ones. The number of people who leave after two years - at all levels - is almost as stunning as the number coming in. Big Tech is notorious for this. The good ones might leave to found or join startups, but leave they still do. The high compensation actually facilitates such departures as much as it discourages them (certainly did for recently-retired me), except among the exceptionally greedy.
These companies are not pools of carefully selected and tended talent, with low rates coming in or going out. They're more like massive pipelines, with huge numbers entering and leaving all the time. The coding interviews are a very coarse filter to keep out the worst of the dreck, but they also keep out many good engineers. I've known several demonstrably excellent engineers who failed in that moment, and more who self-selected out of the process for various reasons. The people who can get in are barely distinguishable from those who got jobs elsewhere via more traditional interview processes, except for skewing very young.
You seem to believe hiring large numbers of bodies mean they hired the best people. I think that's hardly obvious, and more likely downright false from what we know about tech hiring.
> You seem to believe hiring large numbers of bodies mean they hired the best people.
Never said, implied, or believe any such thing. If anything, my last paragraph suggests the opposite. And I've been there so, unlike some, I know what I'm talking about.
It’s difficult to find the motivation to spend hundreds of hours working on imaginary problems. Kudos to you for doing this though. Many/most of the best developers I’ve ever worked with wouldn’t consider wasting their time on such nonsense. It seems to be somewhat of a litmus test for determining how subservient one is.
> Many/most of the best developers I’ve ever worked with wouldn’t consider wasting their time on such nonsense
Interview practices aside - I find them to be fun puzzles and know plenty of accomplished CS/math people who do too. I understand the anger at corporate tech practices but let's not malign those who find the questions interesting.
This a pretty mean way to dismiss someone who has a different viewpoint from you. Many developers enjoy these problems the same way someone might study a niche subject for fun or attend a Simpsons trivia contest; it's fun. No need to call them a sheep
If you want to learn and are willing to put in the work you can do it. It will take some number of weeks or months, but it is totally doable with reading and practice. I read and practiced for a few months before getting my job at Microsoft at age 45.
Your age isn’t the problem; I know plenty of young people that don’t want to do the work also.