It's probably not that the leetcode problems are ultra hard to solve (though they can be). It's also the combination of the artificial time constraint and the high pressure interview setting - which is a very different kind of pressure than you typically experience on the job.
Interviews are also hard (as I frequently comment around here) because, once you've seen how the sausage gets made, you realize it's basically still a crap shoot which comes down to the loop you get. If you get an unlucky roll and end up with the personality type which views interviews as a chance to show how much more clever they are than everyone, then you've already failed. Their ego is tied to their "high bar" and impossible question set, and you're just fodder for them to show off that "high personal bar" during the de-brief.
My absolute favorite interview of the group, a guy who ended up getting hired elsewhere, was the most calm and professional developer I'd ever been around. Sitting in the room, I felt like he was interviewing us rather than the other way around. It was just in the way that he carried himself, answered questions.
And then the guy on our team started asking questions. The gentleman we were interviewing, rather than answer, kept calmly asking more questions of him instead.
- Can you describe the situation where this would be used?
No
- Have you ever run into an issue like this before that could be an example?
No
- How do I know that by solving this problem we would be addressing the business or customer problem?
We don't
- Then shouldn't I be solving questions related to the work?
...
I loved that guy. Wish we could have hired him because I really wanted to work with him.
Many interviewers don't do this because it's often difficult to distill the most interesting problems down to something that would fit within the time allotted for the interview, and also there are candidates who prefer abstract textbook-style problems.
I stopped an interview once. I told the guy I didn't think I'd be a good fit for the organization, and maybe we should save ourselves some time.
I've done this a few times, each time from a startup that reached out to me asking me if I'd come in to talk to them, and then would throw me into their coding challenges immediately. Like whoa hold on there, I don't even know what you do, why are you asking me to do a coding challenge before we've even figured out if there is a fit for me technically and I figure out what it is you're trying to solve.
I've rarely used unprofessional language in job application emails, but on that occasion I pretty much told them to take their no-name little company and shove it.
[0] https://www.asktheheadhunter.com/15129/before-you-risk-your-...
Demoralizing as all hell. Thankfully I had multiple mocks with FB engineers who told me I did great so I know it really was just bad luck that the real phone screen was a dud.
They didn't even need to look at word of mouth impact to see a material hit on their customer retention, in a sector where churn is costly. They went on a crusade to improve, and now find candidates for jobs are net promoters, and their customer acquisition cost via candidates is lower than normal advertising(!)
I think some of the big tech companies simply don't care about their reputation at either micro or macro level, and nobody wants to call out that kind of toxic behaviour as they're all "part of the club".
At an employer prior to that, I saw first hand how companies were able to get negative but true reviews taken down almost as soon as they were posted. There was high turnover at that place and a lot of people were truthful in their reviews of the company. The Glassdoor rating was far higher than they deserved until they went under.
Im short, I’m sure you think you’ve got a great work environment, but I’ve been burned by bullshit Glassdoor reviews and I doubt I’m the only one.
I generally try to help everyone as much as I can during interviews, because honestly this is taking time away from my other work and I'd nothing better than to hire you, but sometimes it's just to much.
(I’m half hoping that after typing this out someone will reply with some data structure I’m unaware of that would allow you to uniquely map the reference of an object to an arbitrary value.)
I remember when a former colleague wanted my input on his interview question which was basically, "Write the algorithm for product recommendations." (eg, like Netflix's movie recommender.) Despite repeated warnings, he went ahead with that question only to come back and admit, "Yeah, that wasn't at all good." Imagine what the poor guy or gal on the other side of the table had to go through.
I don't know what the right answer is to interviewing, but my take is that I would prefer to work with someone who I can get along with, have real human conversations, and become good collaborators -- even if they're not ace coders. That measurement seems glaringly missing from too many interviews.
And I rarely get an answer that makes sense. Instead I get mostly rationalizations for Leetcode. The thing is I recognize those rationalizations because I was certainly guilty of it in the past ("We're evaluating intellectual curiosity" is one I cringe at now).
The real problem from my perspective is that most teams have never taken the time to really think about and identify the underlying principles about how they want to work. We go through a process of defining those principles and all of a sudden the interview gets a lot clearer. Do you value the highest quality code? Do you value getting things into the world quickly and then iterate towards the final solution? Is security always at the front of your mind?
Getting really specific about what exactly being "excellent" means to a team is really critical.
Because then you can design an interview process that actually selects for those things. I've never had a team define "the ability to solve leetcode problems under pressure quickly" as an endpoint they actually care about. Some teams continue to use leetcode, but only as a small part of the process with problems that ARE actually directed at what they care about. Having been through a bunch of interviews in my 25 year career I instantly know when a team has actually done the work to design a good interview process (which has been far too rare in my experience).
or trying to glean proprietary information out of others?
It's a struggle between fitting the interview to real-world situations vs making it seem like the candidate is doing work for the company.
I feel like a good situation might be actual problems previously encountered with the technology being assessed during the interview that would've required you to have collaborated with someone who is also experienced in that technology to help you solve them.
Maybe the best way to do this is when the situation is proposed to the candidate, make it clear that the answer is already known and put it in an envelope (physical or digital), which will be referred to when it's solved or the candidate hits a dead-end.
Do you have a source for this? I can't help but think about the person in this clip: https://www.youtube.com/watch?v=LlCEmPF4-V0. You think you can learn much about her from that interaction?
I've interviewed people who didn't know the answer to some of these tech questions, and honestly, I was more impressed by them calming saying "I'm not sure on this one, I would probably need to go look it up".
Why worst? If you're not given an offer, nothing changes. You've spent somewhere between 45 minutes and a day, got some interview practice and all is basically status quo. But, if you're given an offer, you are now faced with having to weigh the pros and cons of accepting it.
I acknowledge there are some situations where you might pass the interview even without arriving at the optimal solution, but those are probably the exceptions.
Though I think my expectation is that they'll get annoyed and stop the "interview".
I also don't really ask "trick" questions (I try to select questions based on what the CV indicates would be a strong area for the specific candidate), the closest I get to that is probably when it comes to service monitoring (where the exact final answer is less interesting than the process of getting there).
My reply was only intended for "trick" questions that have absolutely no relevance for the day to day job of 99% of Software Engineers. And that's exactly because those trick questions tend to be more about the "exact final answer" than about the process, so my point was about figuring out if the interviewer actually has a grasp of those sort of problems in general or if they memorised a good solution and are milking that for all it's worth.
And I do know that almost any interviewer would reject me based on that, but I think it's worth letting them feel the burn they try to inflict themselves.
I often wonder why this is legal, especially given the legal concept of disparate impact. It's basically just a disguised test of some combo of IQ + free time + willingness to grind dubiously useful information
Because any software person will tell you these tests are extremely detached from the requirements of the job.
It seems like it would be an open and shut case if not for the army of lawyers employed by the likes of Google.
Of course the USA is ever more extreme and crazy when it comes to identity politics, so ago knows if the justice system is still reasonable in this regard. But I'd really enjoy watching people argue in front of a judge that working with tree structures is extremely irrelevant to programming.
But it’s still more diverse in contrast to the companies I’ve worked at (non-tech old school companies in finance, etc), where the tech employees tend to fall into a much narrower stereotype.
Pretty much any white collar job interview is an intellectual joust at best, and a mild hazing ritual at worst.
We actually have it good: you at least know what the broad contours of what we'll be subjected to.
“Not yet challenged” and “legal” aren’t exactly the same thing. Straight up IQ tests are probably more defensoble than leetcode for lots of positions for which leetcode interviews are used. But people have heard the popular misrepresentation of Duke Energy (“it’s illegal to use IQ tests”) more than they’ve heard the actual disparate impact rule, and that seems to be true on both sides of thr interview table.
I've had several interviews where everything seemed to go well, but one (out of say, 4/5) interviewer just seemed to be hostile from the moment they walk into the room.
The core money-making algorithms don't take many human bodies to develop. At Google, 500-600 researchers and core algo developers likely do most of the heavy lifting.
Otherwise, 90%+ of their developers are likely solving routine problems.
Although, most of them likely convince themselves that only the "chosen ones" among mankind can do what they do.
The reality is that most of software, even at the FAANGs, does not require the type of interview questions these teams enjoy asking.
Learning new frameworks and coding standards, surviving code review, dealing with difficult team members, dealing with ever-moving business goals, and just about every other aspect of work, including the coding, has been harder.
I admit that I have never had to invert a link list as part of my work (Graph traversals I definitely had to do, actually). But I have had to submit to arbitrary technical demands and to learn and use technical materials I did not enjoy or agree with architecturally in order to successfully complete projects. So in that, studying and practicing to pass the technical screen is similar to the job. Employers want someone who is able to (sometimes!) bite their tongue and just do the work assigned.
Actually, I remember one IT-style interview 12-ish years ago with a certain FAANG that shall go nameless that had this sorta narcissistic/sorta dumb hiring manager, whose profile picture was a shirtless muscles pool pose, believed that a technology I inherited and was forced to use was an interview deal-breaker. And, at the time, I was at an IT department at Big Name university down the street where there were much more complicated and interesting things going on, like remotely uninfecting and patching worm-laden systems and putting together a fully-redundant/HA VMware cluster that had an FC SAN and blade servers (the thing back then).
FB only asks leetcode questions tagged with 'Facebook'. 100%. I know ppl who memorized these questions and got in.
I'd guess 99% of engineers never have to do CS trivia as part of their day-to-day job.
FWIW, most FAANG employees seem to admit that if they had to redo their interview, odds are they're more likely to fail than pass. Goes to show how much luck is involved in the process.
I think it's gotten harder too. Maybe in the past it really was about trying to see how the candidate thinks and solve problems. But now it seems like all all of that is secondary to getting the optimal solution. Two of my friends in Google who got in ~10 years ago say that it's definitely gotten harder from what they see.
I believe they mean e.g. "tell me what happens when you type https://example.com" in a browser.
You can go deep into tcp/ip, dns, how ssl encryption works, how urls on a server get mapped to specific ports, load balancing/round-robin etc.
That could be trivially fixed tomorrow, either by universities or (better) by an accredited certification body.
I mean, I'm sure there weren't bar exams for lawyers and professionals either, at some point in history. What prevents us from creating one for sw developers? As long as it didn't require additional attainments just to sit for it (i.e. you should not need a university degree), it would make the whole process more efficient for literally thousands of companies.
In software it's not like that. There are very few laws on the book about how to write software, so there's no single authority that defines the right answer or the scope of reasonable questions. It's far more open. Even just picking a set of programming concepts would immediately cause controversy. Like, should monads and type-classes be a part of the professional qualifications? Most programmer would say no, because Haskell isn't widely used in industry. But CS degrees do sometimes test people on that sort of thing!
(Also, in both cases, the government hires members of the profession to define the standards.)
I'm convinced we could have a bar exam for software engineering, but I'm not at all convinced that we should. It would make my life easier personally, but it would keep a bunch of people who followed less traditional paths out of the industry and I think that would be bad.
I just couldn’t pull it out of my butt in the 30 mins I had. Sux. I’ll get there one of these days.
I find it extremely annoying to come up something while someone watches me as if I'm an idiot.
Is that an equal burden for every candidate, in every life circumstance? Or does it privilege certain groups over others? The ROI isn't the point. Requiring preparation unrelated to the job is highly suspect, regardless of the return.
...check yo math?
And lots of bad stuff: the communication burden of wrangling huge numbers of people, bad decisions by leadership that you're helpless to impact, just the general difficulty of having one's values align perfectly with those of a big shareholder controlled faceless blob, figuring out what to work on that will be both satisfying and aligned with the right peoples' goals (that is, fun coding projects are often not impactful while thankless slogs are, at least for more senior folks), etc.; essentially, the politics are harder to navigate and feel satisfied with.
To highlight my first two positive points: the stability and compensation has allowed me to pay down all our debt, buy a house (recently refinanced to a 15 year mortgage), save up a year of expenses, allow my wife to go back to school, and pay for a couple kids to be in a lovely daycare. Most of that would have been much more difficult in my previous life in the startup world.
I'm very happy I got the job (when I was about your age), but I also think often about leaving it.
Hope that helps!
The compensation is also something that is not as clear to someone who had a career arc like me. I've always been able to make money to take care of myself and immediate family, but making consistent FAANG money changes the way you plan and help people. I've been able to help one family member go to school, another go to med school, multiple members to move closer, allowed my parents to retire early so they didn't have to work customer facing jobs during the pandemic, donated tens of thousands of dollars to local organizations, etc
If I was single I might've left and worked at startups or smaller companies, but I wouldn't now that I see how much impact I can have on those around me by just going to work and working hard.
If you have a big knowledge gap in something that's
- easy
- freely available
- relevent to your job
then that's pretty much entirely your fault and it has nothing to do with your educational background.
> - relevent to your job
isn't necessarily met here.
I'm also self-taught. I couldn't reverse a binary tree in a tech interview (without looking up how to do it first) because it's never been relevant to my job. I could, however, stand up an API and deploy it to AWS in a similar period of time, because it is relevant to my job.
Like "easy", who defines that? Is it easy because it just takes time? By that logic most things in tech are easy right?
In reality it's time spent on stuff often not relevant to a job at all, it's being used as an artificial filter.
Remember this isn't just about knowing, it's about being able to regurgitate it from memory on demand in a timed high pressure test
> has nothing to do with your educational background
Yes it does? People learn this stuff literally because of their educational background.
You can do some pretty amazing things in tech never memorizing half the things you'd need to for Leetcode.
--
I'm self-taught, and I know my data structures and algorithms, but I don't know algorithms and their nuances by heart so I don't Leetcode nearly as well as my YOE implies.
I see it as a two way street though, I don't want to work at a place that will turn someone down for not running a hamster wheel...
The venn diagram of "positions that need you to know this without any time to look them up" and "positions that ask you to know them without looking them up during the interview" is practically two circles touching.
I have no problem for jobs that actually need that mind you, but so many jobs couldn't tell you where the practical application of their Leetcode questions would ever come up on the job if their lives depended on it
It's never been a blocker for me, my TC is easily as high as what it'd be at Google or FB and I work on cool things.
Surprise, I never needed to manually balance a binary tree for work, and mostly people don't. So I don't see how "it's easy and free to (re)learn" says anything when hardly any software developer who didn't just graduate a year ago remembers this stuff by heart.
Also I'd like to think I know enough about most data structures to recognize where they make sense and to get into implementing using them quickly. But quickly doesn't mean "all of them" or "during the interview" or even "preparing everything in the utmost detail as they would ask without reference material". Teachers also don't explain complicated stuff without preparation, unless it's the material they do every year for many years.
What do data scientists do?
"...I use an ORM, rarely do I need to write a query by hand...."
"I had been working as a consultant and/or starting companies for almost 10 years and found the b2b sales process is literally nothing like the hiring process for SV companies. In one we talked about project goals and solutions, in the other we talked about hypothetical word problems that I have no doubt are popular in CS programs."
And yet, one of the two failed while the other has job openings.
The title is very broad and it could mean a bunch of different things at different companies. But it almost always involves a solid understanding of statistics, hence the probability questions in the interviews.
So from the article, it seemed that the interviews were quite relevant to the jobs advertised, and that the applicant truly was not a good fit for them.
> about 20 of these in-person interviews going poorly ... it seemed like everyone I interviewed with was a caricature of narcissism and delusions of grandeur.
instead of reflecting over if maybe maths is actually on topic for a data science job.
It's also odd, I think, that the companies didn't ask some probability questions in a phone screen, saving time for him and themselves.
> - easy
> - freely available
> - relevent to your job
> then that's pretty much entirely your fault and it has nothing to do with your educational background.
Sure. But reversing a binary tree isn't relevant to most modern software engineers. And when it does become relevant then, like you said, it's easy to learn (on the job).
> It's not even anything that advanced or difficult either.
No but it is something that gets "memorized" for a test (and therefore immediately forgotten afterward).
Although I've never asked or been asked it in interview context, reversing a binary tree specifically is probably just checking you understand how to write recursive functions. Binary, because variable number of child nodes would make the code longer and more complex for no good reason. Reverse, because that's the simplest operation you can do at each node.
People in this thread are acting like tree processing is as exotic as theorem proving, and could never have anything imaginable to do with daily work, but every web page is literally a tree!
And it's not like you can't find out of the applicant knows recursion and what a tree is without bringing in memorization, there's just some weird obsession with a very specific type of problem which happens to often involve memorization
I’ve never been asked this question, so I haven’t “memorized” it as you say, but if you want to flip the order of all the nodes in a binary tree, you’ll need to at least reverse the left and right subtrees at some point. The understanding recursion part is knowing that reversing the subtrees is the same operation as reversing the main tree. In that way, it’s similar to the recursive solution to the Tower of Hanoi.
Definitely. I’ll add that it doesn’t take as much time and effort as commonly portrayed online, especially if you have many years of development experience already.
Keep in mind that many of the online FAANG cram-style study guides and anecdotes about grinding LeetCode are largely targeted at college grads who don’t have many years of experience, and who also likely have a surplus of free time.
For developers with years of actual programming experience, it’s not as difficult to study interview problems as it sounds. Even more so if you spread your practice over a long period of time. Doing one problem per weekday over the course of a year will get you quite far in LeetCode without much time investment.
I grab a random LeetCode problem on my lunch break if I’m eating alone (aka every day during COVID). I pick a different language that I’m familiar with to rotate my skills. I’m not even interviewing, but it’s actually kind of fun to do the harder problems and play with all of the little optimizations. And I get to keep my skills fresh in programming languages I’m not currently using in any projects.
The problem with this approach is that you won't be able to remember the details of problems older than X months ago, at least not to the level that will reliably help when in a stressful whiteboarding interview.
There might be entertainment/knowledge benefits, but it doesn't replace cramming for a known upcoming interview-event.
I did one of these interviews on short enough notice no review was possible. The process was a little jarring but on these type questions I could just talk through the problem space and come up with something reasonable and explain it; although I doubt I answered anything precisely as expected in the half dozen interviews I had. Apparently it went well.
To be fair, I wasn't a fresh college grad, and I had been recently working as a full time researcher. But they sent me through the SE interview process and none of the specific questions were close to anything I had thought about in years.
I think most people cannot ever understand these topics well, and from their perspective, it'll always be about cramming. -- It doesn't fit in their world view that others can solve these problems by thinking, not cramming, when they cannot?
Whilst to you, it's more about thinking, coming up with new things, but trying to learn it all by heart would seem a bit weird? -- And then maybe in a sense you're talking past each other?
No, you absolutely do need to cram to get through the interviews. In fact the questions on leetcode are designed for this very purpose. Every question has one common theme. And one 'catch' that you absolutely need to know to solve them.
If you haven't looked at a question in X months chances are you will struggle to solve it quickly even if you have solved it before.
If you are out of a job, just buy leetcode premium. Keep doing it for 15 hours a day. Then start applying for interviews.
Its the dumbest way to hire and get hired.
Not even least surprised people can't hire a person to get a darn thing done.
I just described a situation where that was not true, so I don't really know what you are responding to. If you are generally on top of problem solving, you don't need to "cram".
This generalizes - "cramming" has origins for formal courses, as a technique to try and pass an exam when you haven't actually done the work and don't understand the subject. It's a last-minute approach; might get you a pass but is hardly ideal.
I approach it more as learning different techniques to solve different problems, rather than learning how to identify the trick and recall the solution to specific cues.
Trying to memorize solutions isn't really effective for interview problems, in my experience, unless you really can dedicate time to cramming as many solutions as possible right before an interview and hoping that they ask you one you've seen before.
I also interviewed and received job offers after burning out at startups, i listened to the advice to spend 6 weeks on hacker rank and top coder. I passed all my technical interviews. I was also coding on two personal open source projects, but practical cussing and interview coding are 90 pct different as you say.
I don't know if i will succeed at having impact at a large company. Tell you in 6 months. But i am iterating fast and following advice of the people around me.
You didn't mention the effect of being unemployable because your standards are going up. This is an occupational hazard of having more experience. Sorry about that, there are things you can't unsee . It happens to everyone, and an underdiscussed reason there are more young coders. Good luck.
Freudian slip?
This is how bad interviewers always justify asking nonsensical questions.
It's like that old joke:
An interviewer picks up a stack of 50 resumes, takes a glance at them and drops the bottom half into a wastebasket. A coworker asks:
'Why did you discard those candidates?'
The interviewer replies:
'Because I hate losers.'
I'm a self-taught developer, 34. My first programming job was only at about age 30.
About 2 years later, I was consulting for Amazon, as a full stack engineer building a digital marketing project, which was pretty cool-- plus great for the resume.
After that, Amazon contacted me for an interview with them, which I failed (lack of data structures & algorithm knowledge/experience).
I still have the hopes of working directly for a FAANG company. So, just wanted to say thanks.
Currently I am unemployed, but I am about to start studying DS&A again & building some small projects. Fortunately, given the industry & skillset, I have recruiters contacting me frequently, which is a positive, uplifting signal.
As always, to me this sounds like a real waste of time. I'd rather be working on a real project (working for people who value work on real projects), not practicing for an interview.
But that's me.
Of course, if a company is just building the stereotypical basic CRUD app to serve a maximum of 10K users total and maybe 10 per minute at peak, this probably doesn’t matter much.
However, companies that pay top dollar expect candidates with top knowledge, and that’s fair IMO.
Having a bunch of basic, generally useful algorithms in recent memory does save a lot of time on the "general solution" side when you're working in a new milieu. (That saved time then gets consumed trying to find, configure, and tune anything in an unfamiliar cloud environment, but that's another kettle of fish).
Knowing how to solve the ten or twenty most common CS interview questions is not an indicator of possessing "top knowledge". It's an indicator that someone studied the cheat sheet to big tech interviews, and that's all.
The coding problems are part of the interview, but they're not the entirety of the interview. You can't pass a FAANG interview by cramming CS questions, unless you're maybe applying for a new grad position where previous work experience isn't factored in very much.
The hard part is distilling the most commonly used and most helpful of these tools. But after doing so, I can now approach side projects where I got stuck on not having an efficient way to store and access data.
Knowing the start and limits of those algorithms gives me that confidence that what I build is close to as efficient as possible, and allows me then focus on pulling those efficient modules together.
As a self taught dev, its given me confidence in my expertise, and that pays off in job opportunity, self respect, confidence to mentor others, and actually completing hard projects that I could not complete before.
I don't like that that's how it is, but that's what the game is, and most people are in no position to change the rules of the game.
I also acknowledge that despite all its flaws, the SWE interview landscape is still better than say, that for lawyers, where if you didn't graduate from a top law school some doors are immediately and permanently shut for you.
You can still get into a top tech company without an outstanding pedigree. The closest analogue to the lawyer situation is that if you have a top tech company on your resume, I'd say many doors are opened (or opened much more easily) to you than someone without such name brand companies on their resume.
There's the key. Their marketing has convinced millions of current and future devs that they are the best places to work for; that they are worth doing silly things for just to work there.
The problem is that many of their "wins" are from decades ago (or more). Today, for Google at least, you can't even choose what you'll be working on. You'll be tossed wherever they think they need you. Even the best new hires won't make it to the largest salaries (dominated by veterans) and won't get to spend their 20% time (if they even get it) on the next gmail.
The best advice I can offer, about two decades into my career, is to stop chasing the shiny marketing material. They'll burn you out and replace you without blinking.
Almost every non-family owned business now hires developers (and data scientists), some for very good salaries in places where you're not paying thousands of dollars monthly to be someone's roommate.
But it's all relative. At least from this side of the fence, I see FAANG (and other top tech companies) have less downsides and more upsides, relatively speaking, compared to your typical non-tech companies.
The point is emphasized by friends and ex-coworkers who've jumped ship to FAANG and other top tech companies after working at non-tech companies like where I am. All of them seem to love it.
I am not sure what you mean by this, but at least a couple of years ago you did have the opportunity to talk to several different teams and decide which one you're joining before signing the offer. Is that not the case anymore?
That hit hard! Thanks for putting that in words!
The FAANMG+ life probably isn't for everyone, but it has definite upsides, and I imagine that's why most people jump through the interview hoops. It's not because they generally value toy programs over real projects.
Small companies cargo-culting FAANG interview processes on the other hand...
how else to you filter out the unlucky candidates :)
I can do both, perhaps even concurrently, but clocks are ticking and I’m worried I only have so many years before I’m pigeonholed where I am now.
If, and only if, you're hired. Putting all of that time into studying for the interview is no guarantee of being hired.
This seems like a "why go to college" type of response where there is some truth to the fact that so much of college is a waste (I've never used statistics or economics in jobs)... yet it's more than just college or CS questions.
I agree that a lot of story around interviewing is broken and that many of the questions don't relate to day to day jobs... like creating a binary tree or "how do you move a mountain" (IE: https://www.amazon.com/How-Would-Move-Mount-Fuji/dp/03167784...) - but they do show that you know CS basics, know how to learn them or have basic problem solving skills.
As much as people bemoan CS interviews... currently? They are a necessary evil to certain segments of the job market. Can you get jobs without them? Sure... just like you can get jobs without degrees - but your resume will get round-filed for a large number of jobs without a degree and you'll not make it past initial filters without knowing "basic" CS trivia like binary trees.
Whether you're okay with a limited job pool or not is on you... I don't have a 4 year... but I have a 2 year with many years of experience and I'm okay with some of the limits until I eventually get a BA. I still make six figures and know I can find a new job if it comes to it - as I've done repeatedly with limits. I've never balanced a binary tree for a job interview but I have "failed" online tests because I wasn't "fast enough" on code tests. I'm still employable and successful.
Ok. So not soft skills then.
Instead, it is very specific skills. It is not soft skills.
https://www.wikijob.co.uk/content/interview-advice/competenc...
> Soft skills are the more intangible and non-technical abilities that are sought from candidates. For example:
* Communication * Teamwork * Problem-solving * Leadership * Responsibility
So "interviewing" isn't a soft skill as I've always though it to be but I didn't call CS basics a soft skill - I called interviewing one. I was thinking more "a skill not work related per-se" - ie interviewing - while the expected definition is more... personality and interpersonal skills.
I'd consider interviewing "personality and interpersonal" but I can adjust my terminology.
Interviewing is an important skill for most people and interviewing in the programming realm, unfortunately, relies on CS basics. Generally you don't get one without the other.
https://en.m.wikipedia.org/wiki/Theoretical_computer_science
Graphs: HTML is a tree, it’s easier to think about performance. Also, I once made a simple DSL like HTML and had to implement quite a few graphs traversal algo’s.
Heap overflows: I did one on htb. Being able to algorithmically think about pointers being overwritten and memory layout feels a lot like interviewing.
Trading: one algo trader I made needed speed. I had to go much further than most things I see on Leetcode.
In general: algorithms is the ability to think step by step in your mind without a debugger. That skill is quite important when the going gets tough.
Note: I am not for this interview style. AllI am saying is, it is not without merit. Or would you rather do a 40h take home assignment? (Same thing, not without merit but 40h?)
I've never worked in a large company, never had a salary that is even close to US engineer level, and yet I regularly write code that traverses complex graph structures (often with recursive CTEs in SQL), just because that's how a lot of real-life data is structured. I spent this weekend debugging this traversal, in fact. And that's only the 'trees and graphs' example from the top of my head, as I've found myself constantly using all the different CS stuff throughout my career.
This is not an attempt to attack anyone or an attempt to appear superior. If anything, I'm constantly reminded by how stupid and uneducated I am when I'm reading HN comments. I'm just trying to understand: are you guys really spending your whole days changing button colours?
I’d like to do other things, but this is the only sort of thing I think I’ve ever gotten an interview for.
> I'm just trying to understand: are you guys really spending your whole days changing button colours?
Not quite like that, but it isn’t uncommon for me to spend time making minor changes because the business area helping with requirements can’t remember what they wanted one day to the next. I wouldn’t like if I said there are many days I spend mostly doing nothing, just waiting for some process or for someone’s calendar to free up before anything can continue. This has been common at all jobs I’ve had except one, where I was a contractor hired to do an extremely specific task for a very small company.
I’ve started working in other things in my (abundant) spare time, hoping they’ll help me get somewhere, but I’ll see.
Lots of missed income there.
I laid it out to him, that brogrammers are collective tards that cant think on their own, BUT they are good at things like code interviews. I was hired as director. The 2 people who said no cause I said no to their brogramming crap. I personally let go in 4 weeks. 2 years later, things were fixed, I got a fat check, and moved on.
Lesson? Uncle Bob and his elk are creating problems that you can be paid to solve. However Uncle bob and crew are great at brainwashing.
Congrats on getting a good payoff on your work, and thanks for sharing the info about your process.
For me this is the main problem with companies that hire like FANG do. It is fully expected you have to study. Like I have to study to basically do the job I am currently doing but at FANG? Then there are the fact so many people say the hardest thing about Google is the interview. And for me that is kinda pointless then, like if I've just done the most challenging thing, why would I want to hang around?
- partial differential equations
- reverse a binary tree
- (sadly) made quite so many long-term friends
I test all developers by paying them to make the equivalent of a bird box. If it comes back relatively well designed, cool, I've got a developer. If they come back with three designs for different environments and species, I know I have an engineer.
As it stands, we have kids who have zero real world experience at the helm of corporations and the results are easy to see. They rarely produce anything of value for the general population. So rare we have to call them unicorns.
The subfield of software development where artistry outweighs cleverness and productivity is game design -- and not all game studios exist to do things that way, just particular boutiques centered around one storyteller's vision.
Not sure if it's relevant? Google has hired Guido van Rossum and James Gosling. I'd imagine Google didn't ask them to "reverse a binary tree", whatever that means.
I.e., if you are Frank Gehry or Frida Kahlo, you don't need to go through hoops. (If you're reading this, you are probably not Frida Kahlo.)
If someone is aspiring to be her, you just helped crush that dream a little bit more. And for what?
It's just a fact that most people are not one of the very best in their field: 50% of people can't be in the top 1%. That's not to say people shouldn't try - after all, many of the "very best" tried very hard to get where they are.
Also, it's not like people know nothing. A good interview process learns both what the candidate does and does not know, how what they know could be useful, and how capable the candidate is in filling a knowledge gap if there actually is one between what they know and what is actually needed for the job. That is of course in addition to learning whether they're nice to be around or not.
"Have they tried try to invert a binary tree and see if it solves the problem?"
The only reason we accept it as the status quo is that people accept it and say "this is the way it is"
If you look at Goldman Sachs or Microsoft, BOTH are investing heavily in tuning their recruitment process to identify and hire neuro-atypical people.
It is a business strategy that is paying off.
Who's to day the kinder & gentler process they design couldn't be just as easily be applied to hiring in neuro-typicals.
https://www.microsoft.com/en-us/diversity/inside-microsoft/c...
https://fortune.com/2019/12/07/autism-aspergers-adhd-dyslexi...
It doesn't change because it hasn't changed. Not because it can't.
Ironically, the old-school hackers who made the word "hacker" famous, like the ones who built the UNIX ecosystem before Linux was even a thing, knew their CS fundamentals like the back of their hand. They'd have zero trouble with the coding aspect of these interviews.
Very few people on HN are hackers.
> "If you look at Goldman Sachs or Microsoft, BOTH are investing heavily in tuning their recruitment process to identify and hire neuro-atypical people"
That's just a publicity stunt. I'd bet money that few of the neuro-atypical they hire last long in those places.
Like I'll agree that there definition of hacker in 1983 https://en.m.wikipedia.org/wiki/WarGames is different from the one we generally buse today, but the world has changed a lot in that time.
Did white-hat exist in '83?
The definition of hacker has evolved from "one who uses computer tools to gain illicit access to protected computer systems" to "one who makes shit work and does cool stuff"
If you're going to imply that only the 1983 definition is the one anyone can use, I feel like you're going to be off on that island mostly alone.
Even if they did, that doesn't necessarily mean they can shuffle an array or flip a BST under pressure on a whiteboard
But I honestly can’t believe people are acting like reversing a binary tree is hard. This is like something you’d expect high school students with the most basic you data structures knowledge to be able to do.
In short, I am a specialist, and am hired accordingly.
The best screening I ever went through was for a job where I'd be working on a Spring Boot app with a React frontend. For that screening, I was asked to add a simple feature to an example app.
It was clearly toy code, so I knew they weren't trying to get free work out of me. It was also representative of the kinds of tasks I would be doing, which let me know that I would enjoy the job, and let them know I would be good at it. I was hired on the spot.
I've written algorithms to reverse b-trees, and I could figure it out again if I had to. But I don't have to, because the standard library is a thing, and that task tells a potential employer nothing about my skill set.
What they're actually testing for during the in-person interview is your ability to be a good worker bee. They're filtering out people like you who would question the point of doing task X. They want people who will do task X without question. They don't want workers who will ask "Why are we doing task X? Shouldn't we do task Y instead?" For most positions at these large companies, the person who questions the efficacy of task X is a different role -- the role that is instructing you to do task X.
With these trivia questions, they are in fact telling you as a prospective employee the kinds of tasks you will be doing. They are letting you know that you will be doing a lot of pointless work, you won't have any say in the work you will be doing, the work you will be doing will seem trivial to you, and you have to be okay with that. If you're not okay with that, it's not the job for you.
I am a father to a 2 year old, I have a mortgage and an existing full time job.
The time investment required to go through a bunch of algorithms that are almost exclusively used in passing coding interviews does not offer the same ROI as, for example, streamlining a process that you are currently facing on a day to day basis.
On top of that, something that I've learned recently about myself is that I have a tremendous fear of failing coding interviews.
You see there is an emotional component to the effort you put in to doing one of those things. You go through the work to get accepted into the interview process then you find yourself face to face with "one shot" to impress.
Maybe they've even flown you out to their location so you can go through this whole experience on site. At that point the optimistic among us might start thinking about things like what our lives would look like if we worked at "technological mecca" doing really cool shit for silicon valley dollars.
So you start allowing yourself to think about watching the ocean on a sunny day eating avacado toast while you watch your now bleach blonde son playing in the surf. Your wife is happy too. You have this beautiful life that you're providing for those that you love.
(in your fantasies you don't worry about the cascadia fault-line, the dystopian nature of US healthcare, or the fact that california seems to catch fire for a month every year nowadays)
ANYWAYS, you go in, you give it your all. Maybe you think you nailed it, or maybe you can clearly come up with 20 better solutions in the 20 seconds after you leave. Maybe you studied 50 concepts intensely, but missed the one they picked to ask you about. You didn't get the questions in advance or anything.
It doesn't matter though, you missed a semicolon on the whiteboard and your code doesn't compile when they type it in.
You get a terse reply from your original recruiter "not a good fit at this time" ... there's no insight into what you did wrong or where you could get better. That opens the company up to legal liability. Anything more than "thanks" risks exposure.
So you're left with days and weeks of effort for nothing. On top of that you have a real long flight home where you get to grieve the loss of that beautiful life you imagined.
Do you work in a place where you can tell your colleagues at work that you were interviewing? If not, you can't even talk to the people in your life who are most likely to understand the pain you're going through.
So you get to suffer alone.
So. What does it say about someone?
Absolutely nothing.
1. DO NOT get emotionally involved or excited about an opportunity till the time you see an offer letter - those reeeallly sweet people that are so happy and courteous and smiley will switch in an instant, snap! throw you out faster than a used disposable cup and will not so much as give you the courtesy of a reply. They don't give flying f about you no matter how many hours they themselves invested in the process. See for them, this is paid work to talk to you, so they don't give a shit they do it for 10 hours and still drop you without even sending you an email. You are working for free during the interview process and have much more at stake in this process than the person you are talking to. You feel you're having a genuine human interaction with them? no. You think it went well because objectively it went really well? Don't worry you'll get a 2 line generic rejection email.
2. DO NOT ever gauge your self worth as a developer to passing or failing an interview - you will destroy your own morale. Take hints and learn to be better, no doubt, but the decisions people make about you sometimes don't have anything to do with you specifically so don't take it to heart too much.
There is no ultimate solution, it always depends on specific person you're talking to
One thing I'd say is that essentially none of the people I know in other fields have a similar opportunity for a relatively small amount of dedicated study to pay off so well.
(...and, and, and...)
But you're SO right.
I expect that publicly committing to internet-strangers that I'm working on the course, producing materials for them &, having a scheduled weekly discussion around the topics will help with both learning the content AND keeping us all motivated.
Your initial comment was one of the things that helped me come to those conclusions, so genuinely thank you, kind internet stranger for sharing your wisdom.
I've actually started writing a self-study course on passing the FAANG, as a trained educator with a bachelor of Education and five years experience as a high school teacher, I think I can make a fair shake at designing a series of free learning materials on the subject.
I started inviting people along and have built up a list of about 20 people who've at least SAID they'll stop by to my live streams (once a week) to discuss the problems of the week.
It's going to be a structured course https://github.com/AlexChesser/faangterview-preparation-cour... I'll be releasing under MIT.
I don't know that the switch would have flipped in my head about the ROI of the FAANG interview.
As I said, it took a couple days to actually sink it but you have completely changed my mind. I now completely agree with you that they are worth doing for a number of reasons, many of which aren't financial at all.
I see them as equivalent to the Bar exam for Lawyers now. Would you hire a lawyer who said "I don't believe in the bar?" (I think we've seen how that played out with the Kraken lawsuit!)
Would you go to a hospital that said "We don't believe that doctors need to have done the USMLE"?
In both cases hell no!
You're right. This is not arbitrary or cruel, it's just a professional qualification. Sure there's some luck involved, there's the chance of personality conflict. There's all sorts of potential downsides... but there's also the upside.
Being better at my craft overall is the ultimate reward. If I'm a better developer overall, the money will follow regardless of whether I get in to a FAANG
Its seems to be an extremely competitive, eat or die type lifestyle that would require many more hours than a normal job. In essence its its own marriage of sorts, or at least in competition for non-work relationships/marriages.
And there's nothing wrong with the people that choose to do that. But it seems obvious even in the success stories.
I'm extremely competitive, however I also value family over all else. I would much rather spends dinners with my kids, and weekends with my family enjoying the fruits of my labor over having a line on my resume. I know that if i ever went that route, it would absolutely come at a cost, most likely my marriage at least, and probably some level of relationship with my children. Its frankly not worth it for me.
They have maternity leave, and they have resources so you don't have to be on call constantly as it is with smaller companies.
I could easily take some time if needed. My senior admin is taking a month of paternity here in a few weeks, as he did with his first. I have a first line guy that has been in and out for months for various reasons. It is a strain on others in small places but like any place if you document and cross train a bit it’s not terrible.frankly it’s a stated goal for my teams and something I have implemented across several roles and sectors in my career (even if I didn’t get to reap the benefits)
Colleagues of mine that went FAANG stated similar. Amazon notoriously has an unlimited time off policy. That buddy hasn’t made the family vacation tradition since he started. The first year he tried it he basically worked in the condo.
So from what I’ve seen, at least with Amazon, it’s de facto cutthroat and not so much a benefit.
Though I understand I’m possibly attributing that same experience, which may even be localized to his team, to a much broader set, based on the similarities of their culture/workplace.
Many of these places have showers and lounges and free food etc. and frankly I don’t want to work at a place that there’s a culture that encourages eating and sleeping there. Again I prefer to do those things at home or break from work during breaks.
OP perhaps doesn't have the constraints you have.
As an aside--
Do you really expect A. someone who has never met you and who has B. written a comment online before you arrived to reply... to know your life conditions or to tailor it to every possible human life outcome?
That is, because you've had children, does every comment online now need to ensure its content is in alignment with your perspective? That sounds like a failure to empathize, on your part.
For example, if I write something... do I need to make sure it's prepared in a way that 100% of people can relate to it, throughout time & space? Such as fathers of children, amputees, astronauts, etc?
It sounds like we're so diametrically opposed that it could get pretty heated. At least from my end. You do have a right to your opinion, but I don't want to play in the space where I could get emotionally dysregulated by some dude on the internet.
I'd rather not bring a flame war to the HN community.
I'm also not entirely sure that your argument is in good faith and i'm really not in the sort of place where I want to tease out the things you say which are hyperbole versus the things you really believe.
Do you really think that I said all interviews should be tailored to all people throughout all time and space? I can't believe that you really think that, so you can't be arguing in good faith.
Are you really saying that you think it is unreasonable that we expect accommodations be made "for amputees"? Like their role or position in society is somehow a burden on you, or god forbid employers?
Honestly, maybe you do. Maybe you're super into eugenics. I don't want to find out really. It is best that we go our separate ways.
I hope you have a very peaceful day.
1. It's going to be okay.
2. One day, you will recover from this comment and move on with your life. It will take time, but just take it day by day for now. Every day you're able to regulate your emotions after this comment is an achievement.
___________ Now for the comment:
0. Intro
Thanks amigo. I think you've taken it in the wrong direction, intentionally. (Given the current politics of hyperbolic outrage bait, I typically assume overly sensitive people prefer to [i.e. at least pretend to be] outraged over strawmen, because that's the current trend I see in western society.)
________________
1. The strawman
Your strawman implication: "You don't think accomodations should be made for amputees?!?!"
My actual quote: "For example, if I write something... do I need to make sure it's prepared for" ... <examples of various potential peoples' widely divergent qualities>
Good lord. Way to take things out of context, and then get outraged over your own strawman.
Look... I literally said "if I write something".
and you literally implied "you think it is unreasonable that we expect accommodations be made"
Where did I say anything about "accomodations"... my comment is essentially that you fail to see that no one can predict what stranger (and the qualities of their life) could possibly happen upon their comment.
Our interaction went something like this:
A. Random father arrives to see a comment wasn't tailored to his needs and claims the comment doesnt empathize with him
B. I tell the father that it is he who lacks empathy for expecting internet strangers who arrived in a discussion before he did, to somehow prospectively predict his life qualities/needs for empathy as a father, and tailor their comment specifically for him.
C. The father doesn't appreciate the exposure of his hypocrisy. Decides to paint a strawman involving employer accomodations for amputees, eugenics, and emotional dysregulation due to online commentary (while also assuming my gender, for bonus points of course)
________________
2. The strange & unrealistic
... Also, regarding: "the space where I could get emotionally dysregulated by some dude on the internet."
Uhh... yeah, First of all, you just assumed my gender... something tells me you're not very consistent in your political pretense.
That said-- welcome to Earth. It could get a little rough for ya... <sarcasm> Maybe you should avoid everything that could possible evoke stress, rather than adapting to inevitable stress</sarcasm>
___________________
3. Left field
Am I into eugenics? (Firstly... What part of left field did that come from?) We all are, whether we like it or not. Are you attracted to attractive people? Guess what-- you're a eugenicist.
All organisms are designed by evolution to seek the best quality genetics for their offspring, so again, welcome to Earth.
"Just like adults, newborn babies prefer to look at an attractive face, according to new research carried out at the University of Exeter."
Source: http://www.bbc.co.uk/devon/news_features/2004/baby_faces.sht...
Babies are eugenicists! The horror!!
It can be done. As a self-taught developer, and after years of startups and consulting, I got my first FAANG job at age 40. I hadn't done any real kind of interview in 15 years. I spent 90% of my time preparing for CS questions, and struggled at the first one, but ended up at FB, and Google a few years later.
My mindset wasn't that they really cared that I could do these obscure programming exercises that I hadn't used once in 20+ years of real-world programming, but rather that I could prove that I could learn and adapt.