
The dystopian world of software engineering interviews - asangha
https://www.jarednelsen.dev/posts/The-horrifically-dystopian-world-of-software-engineering-interviews
======
ideal0227
When my classmates were preparing interview coding questions, I was working on
a mini TCP implementation and a toy kernel.

AWS rejected me since I failed to write prefect code to traverse a tree in
level order. Google did not even give me an interview since I told the campus
recruiter I have not prepared for the coding questions.

Then I ended up with an internship at CoreOS and created etcd. I am glad that
they did not hire me back then.

Today, I am sure I still cannot pass the coding interview at "Giant Search and
Advertising Company", but they run a lot of my code in production :P.

~~~
paxys
Hah! Reminds me of
[https://twitter.com/mxcl/status/608682016205344768](https://twitter.com/mxcl/status/608682016205344768).

Cynical answer though — Google does not want people like you. They don't want
to hire entrepreneurs or inventors. They want people who can churn out code
when given specific instructions, and that is what their interview process
optimizes for.

~~~
throwaway5283
This is absolutely true. I work at Giant Search and Advertising Company, and
joining was a huge mistake. I thought I would be working interesting technical
problems with a high degree of autonomy — instead the work is extremely
boring, and you get ahead by playing political games rather than by
innovating. I’m one of the rare few here who managed to get through the
interview without really preparing.

Before joining, I had endless enthusiasm for computer science and programming.
Now I feel so unenthusiastic that I question my future in this industry.

~~~
throwaway582
That sucks that you've had that experience, I'm sorry. I hope it's the
exception and not the rule. I work on the Advertising part of Giant Search and
Advertising, and my experience has been pretty great—indeed, working on
interesting problems with a high degree of autonomy. I do need to persuade
others of my ideas sometimes, or let them persuade me against them, but this
seems like a good thing, and doesn't feel political. Throughout my team and
the other teams we work closely with, I find my co-workers and superiors to be
thoughtful, smart, open-minded, and really nice to work with.

~~~
pansa2
> I work on the Advertising part of Giant Search and Advertising [...] on
> interesting problems

Genuine question - what do you consider to be interesting problems in
advertising?

~~~
busterarm
Having worked on the spend side of things and at high stakes (9 figure
budgets), targeting and how to improve it is extremely intellectually
stimulating. More than anything else I've done in my career, even. This is
especially true when you have constraints, like being in a regulated industry
such as legal marketing.

The only problem is that it's hard to command a salary commensurate with how
good you are at it unless you're in business for yourself AND the one spending
the money.

~~~
blub
_" targeting and how to improve it is extremely intellectually stimulating"_

I thought the answer to that was a rather bland "by gobbling up even more
information about everyone"?

~~~
busterarm
Not all data points are useful. Different pools have different profitability
advertised in different ways.

Some highly useful data is hard to get directly or requires significant and/or
stealthy spend.

~~~
arez
you try to make people click on ads, selling that as "extremely intellectually
stimulating" sounds fancy but all you do is manipulate people and you're
nothing more than a marketing guy with fancy tools. Do you really want to
spend your career working on that? Why not use your power in some way that it
actually helps people, even if that means that you earn a bit less.

~~~
busterarm
I thought that I made it clear that I don't work on this anymore.

Advertising isn't an inherent evil. You find your mechanic, doctor, lawyer,
etc because they advertise.

I advertised for one specific company. I worked in an industry that was pretty
grey. Some parts of the business were vaguely predatory and others served a
great public social need. More importantly, you had to have an actual reason
to fill out our forms and follow through with us. We weren't just desperately
trying to get any eyeballs. The work that I did very much did help people.

Also you're not going to get much mileage shaming people for what they do for
a living. You being reductive doesn't really reflect reality either. I was
much more than some marketer and yes, the problems were extremely
intellectually stimulating, otherwise I wouldn't have been there.

That's better than I can say for most of the quants I worked with -- they were
almost all just in it for the money.

~~~
kortilla
> You find your mechanic, doctor, lawyer, etc because they advertise.

It’s funny you say that, because I found all three literally by looking at
reviews and not advertisements. Those 3 categories are perfect examples of
industries where referrals are far more reliable than choosing which one had
the best ad budget.

~~~
busterarm
A lot of reviews are just forms of advertisements.

Companies pay third parties lots of money to curate their reviews and put them
in contact with the reviewer to smooth things over.

I know that because that's the business I work in now.

Companies still have a problem of getting their reviews surfaced to the top of
your search. They also have a need to give people the lowest-friction way
possible to leave them a positive score when it's the best time in the
interaction to do so. There are many large enterprises competing in this space
specifically.

The best performing adverts today are ones where you don't even realize you've
been marketed to.

~~~
kortilla
If having to reach out to real customers and fix their fuckups until they are
happy enough to leave a good review, then I’m completely fine with that level
of advertising. That’s just fixing your fuckups until your customers refer
you, which is the best thing that you can hope for.

That has no relationship to the paid shitstorm of ads on Google.

~~~
busterarm
Somewhat. A lot of review systems are designed to contact you asking for a
review at the exact time you're most likely to leave a good review. The
companies then optimize the whole customer interaction around that experience.
To actually go back and edit that review when things change isn't always easy.

The overwhelming majority of all other reviews are either the Amazon variety
(so a paid endorsement, usually) or from total cranks. People don't really
often leave unsolicited reviews.

------
_bxg1
A few months ago I interviewed with Major CDN Company for a front-end dev
position. They sent me a take-home React/NextJS project stub with dependencies
and such already defined, and instructions to finish building out the full
app. "Perfect!", I thought. No stage pressure, plenty of opportunities for
going an extra mile. They encouraged me to get creative and I did; it met all
the requirements and then some. I proudly submitted it.

A few days later I got an email saying, "Sorry, we're going to pass. The
feedback from the person who reviewed it said that, 'It crashed with
res.flat() is not defined when we tried to run it'".

"That's weird", I thought. I assumed they were running it in a different
browser that lacked Array.flat(). Annoying, but maybe browser compatibility
was part of the test (it hadn't been stated as such). So I did some digging
just to be sure; I asked what version of NodeJS they were using. Version 10.
Turns out that version of Node is somewhat old and doesn't have flat(). Huh.
Dug some more.

.flat() wasn't even called in my code.

The stack trace went down into NextJS itself. They had given me a project with
a particular dependency declared and then run it in an environment which was
incompatible with that dependency, and then immediately punted it without any
further debugging. I tried to engage my contact via email, presenting the
proof that it wasn't my fault. I got an icy "Thanks for your feedback, we'll
forward it to our hiring team", followed by silence.

~~~
DoreenMichele
It's hilarious, but I think you dodged a bullet. Imagine for a minute actually
working there.

~~~
alexpetralia
To be honest I never understood this logic. Clearly a firm's skill at
interviewing might diverge from their ability to mentor, innovate, have a
great engineering culture and so on? Sure - perhaps it's slightly less likely,
but it's not at all obvious that interviewing skill and company excellence are
100% convergent.

~~~
Frost1x
Well, from this example, management side was unwilling to even invest time in
exploring or acknowledging the idea that _they might be wrong_. I don't know
about you but I don't want to work with people who you can't have a reasonable
conversation with to get to the bottom of a problem and figure out the issues
together. Everyone makes mistakes, sorting them out together and achieving
mutual goals is what makes this sort of work bearable.

If management doesn't understand collaborative working environments, humility,
and basic problem solving, I don't (and will not) work with them.

~~~
cortesoft
They might not even have reached the management team... who knows if the
recruiter passed this on or not.

~~~
DoreenMichele
If you have ever been in a situation where things were done to a standard of
excellence, this type of excuse is simply unacceptable. People who have first-
hand experience with environments that pursue excellence in earnest have
little patience for such nonsense.

Kind of like the movie line "Failure is not an option." The line involves a
bit of creative license, but was based on the movie people interviewing
someone from NASA.

[https://www.youtube.com/watch?v=Tid44iy6Rjs](https://www.youtube.com/watch?v=Tid44iy6Rjs)

[https://en.wikipedia.org/wiki/Failure_Is_Not_an_Option](https://en.wikipedia.org/wiki/Failure_Is_Not_an_Option)

~~~
cortesoft
I wasn’t implying that it was ok... just that it might not be the hiring
managers doing the ignoring.

------
glofish
In my personal experience, having interviewed dozens of candidates (data
science), I believe that asking "easy" and "simple" questions is the most
effective way to probe the problem-solving skills of a candidate. Fun and
interesting solutions to easy questions are hallmarks of great individuals.

The question would go like this:

 _Suppose I have a column-oriented file and I want to print out a column in a
reverse-sorted order. How could I go about it?_

This question is among the most effective ever. First it filters out the
FizzBuzz failures right away, let's you see immediately how people think (does
the candidate want to code it up or understands that they could do: cut |
sort| head)? It lets you explore the various aspects of sorting numerical,
alphabetical, different locales, in numerical you can have generic numerical
sort etc. Then what if the file is really large, now a much better approach
could be to split sort then merge sort back into one file.

everyone with real work experience has a story about sorting.

but then you can move on, let's do it in your favorite programming language,
then explore of what if the data is "infinite" long, a stream ... and so on

it is a topic that can produce very interesting solutions, nobody is stressed
out, and people that "fail" do understand why.

Edit: I will also say I feel that I can learn more about a person based on how
they respond to easy questions. Are they cocky, are they showing off, are they
rattled etc.

~~~
thedance
How do you sort an infinite stream?

~~~
ummonk
You could have a balanced data structure and keep inserting into it.

~~~
nutjob2
Sorry, you failed the interview! Your algorithm doesn't terminate, it's no
better than an empty infinite loop.

If a list is sorted, then you'd be able to return the largest value. Since
that is impossible the correct answer is that it's impossible.

------
proximitysauce
In addition to all of the very dystopian examples given in this post, there
are other non-technical, super-dystopian things that have been popping up as
"trends" in the tech industry.

Ever heard of top-grading? It's the most oppressive interview technique of all
time. A series of grueling multi-person interviews. A retrospective of all
work experiences since _high school_. You also have to get multiple prior
employers as references. Apparently top-grading is used to weed out "liars".
Imagine what kind of place optimizes to find liars; maybe one with a problem
with a lot lying? I've heard Twitter uses this technique (or did last year
when my friend interviewed with them).

[https://en.wikipedia.org/wiki/Topgrading](https://en.wikipedia.org/wiki/Topgrading)

~~~
LordFast
My experience as both a 50+ hiring manager and as a candidate tells me that we
are collectively living in an illusion of whacked up expectations.

Yes, it's super hard to hire good people, but most of the time it's because
"good enough" isn't good enough anymore, and while we may think our company is
a 9 and we deserve 9s, we are probably more of a 4 based on what people are
actually working on.

Yes, interviews suck, but that's because we all want to get paid the big bucks
so we can afford the prohibitively expensive COL and actually do better
economically than our middle-class parents. My background and resume
legitimately qualifies me as a 9 on the high end, but really I'm probably just
a 4.

Cascading causal relationships thus expand both upwards into the capital
markets and downwards into your grocery stores.

If we can all take a chill pill employers+employees and stop 49er'ing around
so hard, then I think most everyone can be happily employed.

I don't see us getting there on our own though, since that next door neighbor
ain't gonna stop and I'm sure as hell not getting left behind /s.

I hope we can find a bit more maturity in our industry, but I'm not holding my
breath.

~~~
whack
> _we are collectively living in an illusion of whacked up expectations. Yes,
> it 's super hard to hire good people, but most of the time it's because
> "good enough" isn't good enough anymore, and while we may think our company
> is a 9 and we deserve 9s, we are probably more of a 4 based on what people
> are actually working on._

You're essentially implying that companies like FAANG can get by just fine,
even if they hired "average" programmers, as opposed to "exceptional" ones. If
this were the case, they wouldn't need to pay anyone 250-350k compensation
either - they can just hire some average programmer for 70k and call it a day.
Or better yet, hire someone in a country with much lower COL, pay them 30k,
and everyone walks away happy.

I don't think this is true, for the simple reason that companies are far too
greedy to pay people 200k a year, unless they _really_ need to. Do you
honestly think that a company like Amazon is going to spend hundreds of
thousands of dollars on someone, if they can get someone else for a fraction
of that? Maybe I'm wrong and one day, some startup will grow to be a unicorn
while paying their developers sweatshop rates. I'll believe it when I see it.

~~~
hogFeast
Dear God, I wish companies were run like this. Everyone refers to these
faceless "companies"...no, you are being hired by employees just like you who
almost always overpay for staff. They overestimate their ability to assess
talent, HR usually link their own salaries to the people they hire...it is a
shitshow.

Look at CEO pay, most CEOs are clueless. They are way overpaid. Google is a
perfect example, that business is a cash machine, it could be run by a ham
sandwich, and they are paying people $100m+ to run it...lul. Jokes.

Btw, this also shouldn't matter. If your business relies on hiring these 1 in
1000, super-smart individuals (ignoring the fact that it is statistically
impossible to actually do this if you are hiring thousands of programmers),
you will fail. Every time. You get into a bidding war, and your budget depends
on the intelligence of others to not overpay. If you can work out how to turn
average employees into good ones, you will print money because no-one wants
average employees...supply is infinite, you will never overpay (I know
companies that have done this...they usually end up acquiring the companies
that hire the "boffins" and fire everyone on day one).

In tech, the opportunities for this are basically limitless. It is pretty easy
to teach someone how to code, the main challenge is really all the stuff you
learn "on the job"...and guess what? You have a job to teach them. Why doesn't
this happen? Try telling a coder he has to help a junior guy out one day a
week and stop fucking about with Haskell/burning cash. Try telling HR that you
want to hire unremarkable people. Try finding an executive who wants to work
somewhere where they hit singles...he has an MBA you know, he swings for the
fences every time. You are vastly overestimating, ironically, the intelligence
of most people who work in companies (I worked in equity research for a
while...Buffett's dictum of a company that could be run by a ham sandwich has
much wisdom).

~~~
z3t4
Actually most software business use that business model. Eg. buy low, sell
high. The difference between market rates and wages are their profit.

~~~
hogFeast
That is true. It occurred to me after that I had seen that in
consultancies...that works, it is possible to do this sustainably and with
less churn.

------
parsimo2010
Comedian Daniel Tosh had a bit about people that claimed to be smart, it's
just that they were just bad at taking tests. He said, "oh, so you struggle
with the part where we find out what you actually know?"

I hear a lot of complaints about the "typical" software engineering hiring
process, and it usually comes from the people that don't do well within the
current system. Could the process be improved? Almost certainly, I don't think
that anyone thinks that this is an absolutely perfect way to hire people. But
it is an undeniable fact that some people pass this interview process;
software companies do fill positions with this process.

So that kind of makes me think that many of the complaints are from people
that wouldn't cut it at a high-pressure tech company and would be better off
coding internal software for a non-tech corporation. I'm sure that the hiring
process at Kroger (the grocery store) is much lower pressure than Google's.
Google might not need you to code some efficient algorithm to search a b-tree
every day, but they pay top dollar and can rightly expect that their software
engineers can come up with efficient and creative solutions to hard problems
without dragging the rest of their team down.

~~~
codingslave
People are completing 500+ problems on leetcode before heading into interviews
at google. Don't believe me? Go read the teamblind forums. People might spend
six months studying, after which they pass a bunch of interviews and get good
comp. Getting just one offer from a FAANG company often doesnt pay well
enough, you need multiple competing ones.

If you think this has anything to do with incompetent people complaining, then
you arent reading into the situation.

I will add that one can pass these interviews without extensive preparation,
but it makes it alot harder when those around you are willing to spend
ridiculous amounts of time studying.

~~~
JMTQp8lwXL
I'm imagining it's going to bite these people on the backend later in life
when they sacrificed everything for their careers and potentially missed other
major life milestones: cultivating a relationship, starting a family, etc. I
know not everyone spends 6 months getting into Google, but there are so many
other companies that will take you without 6 months of preparation. If career
is the only thing that gives you meaning in life, sure, but I'd rather not put
all my eggs in one basket.

~~~
fourmyle
I used to think that until I heard of people with far less experience than me
getting paid $400k total comp at these places because they can ace the
interview and get competing options. That's worth putting 6 months of work in.

~~~
JMTQp8lwXL
Yeah, once you're in, it's cushy, for sure. But that's not the full story.
You're likely going to have to move to the bay area to make $400k kind of
money. Are you willing to forego living near family, friends? Plenty of people
do, but time gets more valuable when you have less of it left.

~~~
jophde
I already live in the Bay Area and have for 8 years. Startups pay half of what
big tech pays once you factor in the stock that is liquid.

------
coconut_crab
> There is a cottage industry springing up around passing interviews

This, a million times.

I was told to practice solving dynamic programming problems to prepare for the
interview[1]. Looking around the web I found out that people spending _months_
solving _thousands_ of dynamic programming problems, just for getting a job.
This strongly reminds me of the rote learning I had to do in order to get into
university, which includes thousands and thousands of integration,
derivatives, series, lense placements etc... A nightmare I thought that ended
decades ago.[2]

Now dp is all nice and cool, but I think most jobs don't involve solving dp
problems on a daily basis. Just like most mechanics don't need to solve
Lagrangian mechanics problems or civil engineer with continuous girder (the
interview for those those two don't have those either)[3].

There must be a better way to measure problem solving ability of a candidate,
isn't there? Something thay requires more dedication from the company instead
of blindly followingbthe practices of Google.

[1] The position is EM at a offshore branch of a medium sized non IT company,
way below the likes of Google.

[2] Typical Asian problem.

[3] I started as a mechanics, and then doing some civil engineering job,
building bridge and such.

~~~
hogFeast
Just speculation but I think a big part of this is that it is often quite
difficult to lay off staff.

The issue isn't that you assess employees poorly...it is very hard to be right
based on knowing someone for a couple of hours...but that it is so hard to get
rid of someone if you are wrong. Would you marry someone after meeting for as
long as the interview? That is the decision for a lot of companies.

I think that is why you see places like Denmark and Sweden, that make it easy
to fire employees, do well and places like Japan and France do relatively
poorly (the latter is particularly odd, they had a big lead in
engineering...tech is miles behind)...ofc, it is hard to fire people in
California...so not every example fits.

~~~
wojciii
To fire people in DK is possible but I would not call it easy. It takes money
- for example if the person worked at the same company for 3 years, it takes 4
months salary if the person was hired using a standard contract which follows
a law called "funktionærloven" written to create rules between company and
employees.

~~~
hogFeast
Yes...and DK has the most job flexibility in the world.

------
mLuby
> 23 interviews and I didn’t get a single offer

That's… an unusually consistent signal. Suggests to me that either this person
is getting into the wrong interviews (eg junior interviewing for senior
role—though they say that's not the case), or more likely there's some hidden
variable, like a bad reference, bad BO, really noticeable "culture" misfit, or
other "red flag".

Regardless, the general points are spot on; it's a mess, for both sides. And
even if the game weren't improved, I wish we all gave and got more honest
feedback (however illegal that would be).

Wishing you luck in this numbers game!

~~~
scarejunba
I think OP should use interviewing.io and take the feedback seriously. It's
likely to be helpful if they want to actually pass those interviews. But there
are other ways for a non-traditional candidate to make it.

~~~
AlexCoventry
Not sure why this comment is being down voted. Seems like a sensible
suggestion.

------
sigotirandolas
It's funny that the other day I was reading about the door policies of some
top-tier Berlin nightclubs and it seems that the underlying processes are
similar. The bouncers there do a "door interview" designed to not only filter
likely bottom of the barrel (too drunk/high, tourists) but you also need to
know arbitrary and often unwritten codes (e.g. the name of the event, line-up,
dress code, physical appearance) which is a proxy for showing you've put in
some amount of effort and "know the rules". It doesn't seem to help much to
possess the real values they desire (actually not causing problems once
inside, actually enjoying the music, actually contributing to the party's
atmosphere) because they simply can't screen those quickly enough.

In both cases this seems to be the market solution to the problem of having
limited capacity, high demand, necessarily short interviewing/screening
processes, high cost for admitting sub-par candidates but low reward for
admitting good candidates. And in both cases it seems most dislike the process
for being ripe for arbitrariness and routinely turning away good candidates
and "there ought to be a better way" but the process seems to have evolved
naturally and doesn't seem to go away despite there apparently being no major
barrier for using a better process should it exist.

Just a random though.

~~~
thrav
I’ve been to that club. The internet descriptions are overblown. When I got
all up in my head and attempted to follow all of the advice, I got turned
away. I felt like I was wearing a costume and trying to be someone I wasn’t,
and that was probably obvious to them.

When I went back years later and just went as myself, my wife and I were
immediately welcomed in without much questioning. For those wondering, this is
not a club where being with a woman is necessarily advantageous, but I will
certainly admit that it likely had an impact.

The biggest things I saw them looking to screen out, beyond drunk - high -
obnoxious, were youth and naïveté. They seem to largely be aiming at people
who know exactly what they’re getting into, and are relaxed about it + not
overly attached to the outcome.

Just so you know exactly what I had on, and how much it flies in the face of
some of the advice... on Friday: White t-shirt, jeans, baseball cap. Saturday:
Grey Everlane pocket t-shirt, backwards baseball cap, Patagonia 5” running
shorts, Off-white Adidas Marathon sneakers. I did learn to dress like you’re
going to dance for hours in Friday night, and jeans got hot and shirt came off
real quick, so I adjusted on Saturday.

Wife went more classic and wore black jean shorts, black tee with a ripped
collar, black baseball cap, black adidas.

~~~
blub
If you didn't have female company the first time around, it's very likely that
this tipped the balance on your second visit. Clubs are notorious for this.

------
f2000
I'm in my late 50s and after 10+ years at same company I found myself on the
job market. 1998 was the last time I had any real interviews - after that
point it was all networking with no real tech interviews. After much cursing
at the advent of white boarding and code tests, I finally just caved and
bought a leetcode subscription and starting working problems I hadn't seen
since the late 80s in college. Long story short, After 8 interviews I landed a
great job with Big Company. At the end of the day, it's a game. You can play
it or complain about it, but it is what it is. Has leetcode made me a better
programmer? NO. What has helped though is stackoverflow and github.

~~~
jonex
It showed that you were able and ambitious enough to learn (re-learn) a
somewhat complex skill in a reasonably short time. This seems like a very
desirable property to me, and a good substitute for having strong talent or
recent experience of algorithm design and implementation.

------
userbinator
Well, if you pass that interview, you then get to help Giant Search and
Advertising Company make the world an even more dystopian place...

------
mullingitover
I honestly don't know why anyone gives FAANG recruiters the time of day
anymore. I have yet to meet anyone who feels good about the prospect of
working for them, anyone who works there who's super proud of their mission,
and the competitors who are looking to hire at that level of talent pay
roughly similar wages from what I've seen.

My advice for this poor kid is to look around at startups and do more
networking. FAANG jobs aren't anything to aspire to anymore.

~~~
fossuser
A couple of reasons:

\- Comp: Total comp for a new hire with 3+ yrs dev experience is probably 300k
-> 400k at a FAANG on average (with possibility to be higher). If you want to
live and raise a family in your own house in the bay area (2.5 Million for a
reasonable house), this matters.

\- Access: Few places have the kind of scale and resources of these companies,
that can make them fun places to work. You also get to learn a lot from really
good coworkers (and go to talks, explore different things, etc.)

\- Work/Life: FAANGs are generally pretty good for work/life balance (though
this can vary by team and manager). They're generally pleasant places to work
as an engineer.

~~~
vqc
What kind of house is a reasonable house for $2.5M?

~~~
gfaure
The vast majority of engineers at FAANGs are _not_ commuting out of San
Francisco -- looking at where the workforce really is: Mountain View, Menlo
Park, Sunnyvale, you most definitely don't need to shell out $2.5M for a
reasonable house.

~~~
fossuser
Yes you do - Palo Alto, Mountain View, Cupertino, and nearby peninsula cities
are even more expensive than SF. At least in SF you can get a nice new
construction apartment for 875k.

You can find a cheap house for $1.25M in San Mateo or on the outskirts of San
Jose, but it’ll still be pretty small and far away.

------
RangerScience
I've been doing initial phone screens (small companies) this week (two just
today, actually), and with all of them when the recruiter (internal or
external) gets to the "we'd like to send you a coding challenge" I interject
with: "Let's do a code exchange. I'll point you at some of my GH projects, and
you send me some of your code".

So far they've accepted ("I'll forward it to the hiring manager"), and it's
far too soon to see if this works... but I'm hoping.

The next step I'll be trying is "I'd like you to pay me for my time. If you're
not comfortable with that yet, let's talk about what's involved in getting
there."

~~~
heleninboodler
One approach I really like is a company that will vet you and decide you have
promise, then decide to hire you on the spot for some small amount of contract
work. "Ok, you seem great, let's commit to 40 hours of work from you on
whatever schedule you want, and we'll see how that goes." This lets you
squeeze that in on evenings and weekends if you want and not quit your current
job. Costs them very little and is way more productive than a standard
interview loop.

~~~
RangerScience
Oh, nice! I'll keep that mind and see when I can play it that way. Good
suggestion!

------
d1zzy
It's good to see people complaining about interview processes from Google&co
as it's a good idea to always try to improve the current situation. However, I
feel there needs to be some context here. While the interviews at FAANG seem
not ideal, they are HUGELY better than most other tech interviews I've had
experience with. In most other interviews you get to have a chat with some HR
person that has no idea what the word "variable" means. You answer a set of
standard questions and they barely know how to map your answers to the
expected list of answers they have. Then they score you based on that.

Let's not lose that perspective in discussions like these.

------
holografix
Sincere question: What are you all doing accepting these multi-hour, multi-day
take away free consulting gigs?

Say NO to this bullshit. Establish a deadline and clear guidelines and
expectations:

1\. I will not be doing any take away work at all.

2\. You will explain how my GitHub repo, resumé, previous experience is
insufficient to qualify me for the job in 100 words or more.

3\. You will sign an NDA for whatever solution I created to whatever problem
you task me with. You do not own my solution’s IP and may not share it outside
of the people involved in my hiring process without my consent. 4\. In the
case where I fail the test you will explain in 100 words or more why my
solution was unacceptable. 5\. In the case my solution doesn’t compile/run you
will allow me 3 attempts/1hour to provide you a solution and/or give me a
Dockerfile representing the env where my solution will be tested.

~~~
blotter_paper
Have you ever established these guidelines and expectations with a potential
employer and subsequently been hired by that employer?

------
hinkley
> It sounds to me that now companies are more afraid of hiring bad candidates
> than they are excited about the opportunity to hire a great candidate.

People have come right out and said they’d rather miss out on a good hire than
get a bad one. There’s no “sounds”. It is.

Rather than more and more convoluted interview processes maybe we should work
on better weed out techniques? I mean, what’s the overall cost really of
picking the best person you saw in two weeks, getting back to the process of
building new functionality (and your new hire training materials) and just
kicking the dense ones with a little reflection on what we’re the objective
warning signs this was going to happen?

I really think the thing is that people want to believe that training for
their team is arduous, and so the cost of every person is huge. I’ve known
more than a few people who philosophized about how much they learn about their
craft by teaching. And it always seems like the people who create the biggest
messes are the ones who can’t explain themselves.

Which we have known forever. In fact during the dot com era it was quite
common to hire the most articulate people you interviewed. At least of they
were wrong about something you’d know it right away, instead of them
obfuscating their bad ideas.

------
codingslave
Interviews are so bad because there are too many capable programmers. If there
really was a market shortage, companies would not interview like this.

~~~
sciencewolf
As someone who interviews, you'd be shocked how many "senior engineers" can't
write a function with two for-loops.

~~~
umvi
I once interviewed a "senior engineer" who was nearly twice my age. I was very
intimidated; his resume indicated that _he_ should be the one interviewing
_me_ , not the other way around.

We chatted for a while, and I felt really good about him. However, I had a gut
feeling I should just check to make sure he could do the equivalent of fizz
buzz. I said something like "Sorry for this formality, I know it might be seen
as an insult to your experience... could we do a bit of coding?" His resume
indicated nearly twice as many years of C++ experience than me.

I took out my laptop and produced three function signatures - one passing by
reference, one passing by pointer, and one passing a pointer by reference. I
asked him to explain the difference between the three. With a completely
straight face and unshakable confidence he replied "no difference, they are
all three ways of doing the same thing". I asked some clarifying questions,
trying to probe the difference between pass-by-reference and pass-by-pointer.
Again, he answered extremely confidently and coolly (but incorrectly).

"Err, no." I replied. "This ampersand here is a pass by reference, which means
c++ handles the referencing and dereferencing of the pointer automatically.
It's much safer than the other two, where you are ultimately dealing with a
raw pointer and need to check for null pointers before dereferencing".
Immediately he broke out into an uncontrollable sweat; it was really
remarkable. Before asking the technical questions, I felt really good about
him. I wonder how many companies he has fooled.

~~~
leftyted
My team hired a guy like this.

At this point everyone knows he's a fake. He's not involved in anything
technical despite being a "senior dev". It was quite uncomfortable when he was
programming and we had to review his code but at this point he's just hanging
out in the office and sitting in on meetings.

I wonder about his psychological state. He doesn't seem happy.

------
daenz
If all you care about is money, go bust your butt on leetcode and ace a FAANG
interview. If you care about a work-life balance, and having a big impact on a
small team, work for a medium-small startup and negotiate a flexible schedule.

Personally I get a huge kick out of making massive improvements to a small
business's tech and infrastructure. The lack of bureaucracy is a freedom that
is often taken for granted. If you have the vision and drive, you can improve
the business's processes and product offerings by leaps and bounds...something
I would argue is not readily available at a big company. Smaller companies are
also much more willing and able to negotiate with you to help balance your
life. A 4-day work week for example.

Again speaking anecdotally, I don't need that much money. I certainly don't
need FAANG-level compensation. If I'm going to work somewhere, it's going to
be because I want to be with those people, working on those problems, and
having a big impact. Not because of the fat paycheck.

~~~
Aperocky
> I'm going to work somewhere, it's going to be because I want to be with
> those people, working on those problems, and having a big impact.

There are teams in FAANG that are like that. And I'm going to say mine, as
we're a new team building a top level public service for a very large cloud
company. It does mean sometimes there's lots of work though.

------
eternalny1
I recently flagged myself as "back on the market" on sites like StackOverflow
and LinkedIn.

What a nightmare process this whole thing is.

I end up with a slammed inbox, constant cold-calls from head hunters that are
all dead ends, and in between all of the noise are some real opportunities
where I get moved from the tech screen to the final round quickly due to my
seniority.

It's like most jobs except there is a strange dichotomy between the technical
screens, and the on-prem final rounds, which become more of a culture-fit type
interview.

I feel like I am up against the Bob's from Office Space a lot of the time.

If anyone needs a 30+ year software engineer currently working with .Net Core
3.1 on Azure Linux and Angular 9, please hit me up.

------
cdoxsey
I was given a 2-hour coding challenge once to build a language server for a
programming editor. It had to implement 3 functions:

1\. show help text (type/doc string) for a word

2\. go to definition

3\. find all references

My first thought was "this is an absurd request for a two hour coding
challenge". My second thought was "boy I hit the jackpot, a few years ago on a
whim I built my own language server for Go in sublime text and could probably
crank out a new one pretty quick"

Sadly despite my best attempt they rejected me. They never did give me an
explanation. (fwiw: [https://github.com/calebdoxsey/languageserver-
challenge](https://github.com/calebdoxsey/languageserver-challenge))

I wish I could say it was a fluke, but I've been rejected by lots of companies
due to the coding challenge. One day I'd really love to see what the passing
code for these challenges looked like. Maybe I could learn where I dropped the
ball.

~~~
willberman
FWIW. This is an absolutely awful coding challenge for an interview especially
in a 2-hour setting. The challenge requires building off of implementation
details for a few very specific technologies. Interviews are supposed to test
for general problem solving capabilities within some domain of competence.
Unless the job was specifically to work on a go language server, and that was
your aforementioned domain of competence, I see no rationale for using this
programming challenge to determine employment.

------
Apocryphon
What does it mean for the industry when there's one of these articles on the
front page every other week?

~~~
berdon
That most people have a hard time viewing the world from different lenses.

The article presents a picture of a guy “studying up” for a career and his
adventures in interviewing. As someone who’s interviewed hundreds of
candidates I noticed red flags right away. For instance, if someone asks you
to design a micro service - you don’t say “I can’t”. No FAANGco interviewer
wants you to fail. In fact, they want to help you. The best worst answer would
have been “I’m not really familiar with micro services but I’ll give it a
shot. Could you explain a bit more about them?” This shows the candidate
doesn’t falter at a challenge, is willing to dive deep, and is committed to
the task.

The lens shift comes into play when 50% of the candidates can’t complete fizz
buzz, another 25% simply lied in there resume about any relating experience,
and the other 24% don’t have any real understanding about algorithms.

There are software developers and then there are great software developers.
It’s generally initiative and algorithms that separate the two.

~~~
Apocryphon
And yet, virtually all boot camps allocate time to interview questions now.
Hell, there are boot camps devoted entirely to whiteboarding interviews.
Surely this cottage industry, similar to those for gaming standardized tests
(SAT/GRE/LSATs/MCATs), is a red flag that the industry has fallen into a pit
of Goodhart's law?

~~~
berdon
Hmm, perhaps. But interviewing has become big businesses for prep and passing.
There are companies that will ghost interview for a candidate, even through
actual onsite interviews. It’s a real problem.

Tangentially, candidates should read “Programming Interviews Exposed: Secrets
to Landing Your Next Job” for prep. It was recommended to me a long time ago
and it was enough.

------
closed
Something that strikes me in reading articles like this, is the distopian part
often seems to be thinking about this:

    
    
        p(job_capable | not_interview_capable)
    

That is, it's crazy that an interview could miss so many people qualified for
the job.

However, I wonder if oftentimes companies are aiming for..

    
    
        p(job_capable | interview_capable)
    

If p(job_capable | interview_capable) is high, and p(interview_capable) is
pretty good also, then the company will probably get what it's looking for.

This means that the author is right to recognize the test is doing a bad job
of measuring _their_ job readiness. A reasonable instrument in this case
doesn't have to measure everyone's job fitness (whether there are nasty side
effects is another big issue).

~~~
paxys
A simple way of saying this - companies are optimizing for filtering out bad
candidates, at the expense of sometimes filtering out good candidates.

Because the cost of hiring the wrong person is a LOT higher than missing out
on the right one.

~~~
heartbeats
> Because the cost of hiring the wrong person is a LOT higher than missing out
> on the right one.

Why can't anyone come up with a good solution for this? A "we'll hire you for
a month and see how it goes" kind of deal?

~~~
demosito666
I don't know about US, but where I live they hire you with 1-3 months "trial
period" during which the company can fire you any time if you turned out unfit
for the job. This is exactly your proposal.

------
scarmig
This will probably be lost in the pile of comments, and I'm sure some people
will interpret it as humble bragging. But I genuinely do not get the angst and
anger over the tech screen, from the perspective of an applicant. So I want to
explain why I like them.

My background: I've never taken any kind of CS or programming class in my
life. Mediocre grades in college. My first exposure to programming was at age
24, as I fell into it with an IT tech position. Went from there to a series of
jobs at several startups. Before applying to a FAANG, I went through Elements
of Programming Interviews and solved all the problems in it, which at around
10 hours/week took maybe 6 months of prep. I then sent in two applications,
one to FB and one to GOOG, immediately got phone screens, passed, and then two
weeks later went through the on-sites. Every one of the questions was either
lifted from the coding prep book or trivial.

End result? Offers from both, joined as an L4, at a total comp higher than I
had ever dreamed of, and significantly higher than friends in medicine who
have easily spent over a hundred times as much time preparing and studying as
I have.

So I'm kind of left flummoxed. Am I just incredibly lucky? There are huge
issues in the hiring process, but if you want a job at FAANG, as far as I can
tell it's incredibly easy to game the system. Set aside some time each week
(easy, if you don't have kids), study for a couple months, and then apply.
There's literally no other field than ours that is so open to motivated people
without paper qualifications and that simultaneously offers so much in terms
of lifestyle and compensation. Whether it hires the best candidates is another
question entirely, but that's an issue for the company, not for the applicant.

But, when I give an interview to an applicant and use my go-to question, which
I initially feared would provide no useful hiring signal for being too easy
(and which, yes, I've tested on all my coworkers, who solve without any
difficulty), I find that only maybe a third of applicants complete it at LH or
higher.

To be clear, I'm calling this out as a blind spot I have--there's clearly a
massive gap in perspective here--but hopefully it'll provide a useful data
point for why tech screens aren't universally hated and why they manage to
persist.

~~~
peferron
Your experience is incredibly close to my own. I'd love to know if you also
feel the same about a few other issues:

\- I used to have a massive impostor syndrome due to not having a CS degree.
Joining FAANG alleviated perhaps 80% of it. (Just to be clear, that's not the
reason why I joined FAANG; I just wanted to try a large corp after years in
tiny startups.) It feels good, but I'm mourning it a little, because I believe
it was a driving factor to how intensely I was trying to better myself.

\- I enjoyed solving all these problems. There's beauty in finding the most
optimal solution to each of them. Binary heaps are plain beautiful, and suffix
trees and arrays still blow my mind years later. I wonder if people here
dislike this stuff because they were forced to learn it in college for a piece
of paper, while we learned it on our own volition for a big jump in
compensation. Maybe I'm just projecting because I hated school and college;
many HNers seem to have enjoyed their studies, which is awesome.

~~~
scarmig
> imposter syndrome

Absolutely. And that imposter syndrome played a substantial part in motivating
me to apply to FAANG :) I found myself in the doldroms for years afterward
after starting at G, but I recently quit to do my own thing for awhile and
have been so happy to find that I still have the capacity for joy and drive.

And, yes, it was incredibly fun to study and solve these problems. Sometimes
I'd end up going on unrelated tangents--cache-oblivious algorithms, a full
history of quicksort and all its variations and partitions, how all the
concurrent data structures in the Java standard library are implemented--and
just spend all day reading about them and/or re-implementing them on paper on
a sunny day in Golden Gate Park (and one of my Google interview questions was
with a gruff Ukrainian guy who wanted me to implement a concurrent LRU cache,
so that went swimmingly!). And so when people talk about how hellishly
oppressive and difficult having to learn about binary search trees is, it just
doesn't resonate with me. Even if not for the jump in comp, it was just
genuinely fun.

My background is math/physics, so perhaps that's part of it? Maybe many
applicants just want to build something and just care about the final product,
while the part of programming that I enjoy most is the brain teasers and
making things work in the most efficient and elegant way possible.

~~~
peferron
Thanks for answering. If you're still in the Bay, and feel like drinking a
beer to our dear departed friend the impostor syndrome, feel free to email me
:) it's in my profile.

------
Solar19
The potential red flag in this account was Jared interrupting the interviewer
who was asking a question that mentioned microservices to say that he had no
experience in microservices.

Why did he interrupt the interviewer? And why interject that he had no
experience in microservices? So what? You can still tackle a question that
mentions microservices...

It's not like one's programming skills are useless for questions that merely
mention an architecture you haven't officially worked with before. It's very
strange to me that he interrupted that way, for that reason, and it makes me
wonder if he acted similarly in other interviews. If his attitude is that he
shouldn't have to answer questions about architectures and technologies not
specified in his resume, that wouldn't go well.

Also, there's a lot of hype and looseness around the term "microservices"
these days. You might have worked with what some people call microservices
without knowing it. All the more reason not to cut off the question.

------
JMTQp8lwXL
The evolution of the software engineering interview is a consequence of people
gaming the metric. As the author points out, once the cat got out of the bag,
the problems became increasingly challenging.

The real consequence is for wages. By making interviews a ceremonious practice
where even engineers with years of experience need to spend a month
Leetcoding, you severely restrict the talent pool. It discourages poaching.
Engineers only care to subject themselves so many times, and since they
already have a job, they're not too motivated to find another (compared to
industry outsiders who aren't already earning software engineering-level
salaries).

Fortunately, many places don't put you through the hazing that is the typical
FANG interview. You can make 85-90% of a FANG salary, at a company that asks
Leetcode easy's. That's what I've chose for myself. Not because I'm an
incompetent engineer, but because mastering leetcode isn't a priority for me.

~~~
scarmig
> You can make 85-90% of a FANG salary

IME, it's more like a >50% pay cut. Plenty of reasons not to do FAANG, but
when calculating trade-offs it's important to have an accurate view of the
costs of each decision.

------
akdas
This is a topic I wrote about recently[0]. The fundamental problem is that
these big companies are so afraid of hiring a bad candidate (a false positive)
that they are willing to put up with a ton of smart people who fail their
interviews (a false negative).

And the worst part of this is, from the inside, it really looks like the
process is working. After all, there are some really smart people who get
hired, and saying the hiring process is bad feels like you're saying your
coworkers aren't smart. But the truth is, these companies are hitting smart
people. They're just hitting a non-uniform dust of all three smart people out
there.

I think this is an opportunity for smaller companies to hire people who
wouldn't make it into the big companies, and innovate in a way the big
companies can't!

[0] [https://hiringfor.tech/2020/02/10/false-positives-and-
false-...](https://hiringfor.tech/2020/02/10/false-positives-and-false-
negatives.html)

~~~
TrackerFF
A bit late, but...

Does it work? Maybe, maybe not. Perhaps you get some fantastic candidates
(true positives), and perhaps you get people that are very god at gaming the
system (false positives).

The process, as it is, is kinda like trying to select potential mathematicians
on the basis of how well they solve HS AP Math problems. It is fully possible
to rote learn every kind of integral and derivative under the sun, if you just
solve enough - without actually understanding the underlying principles. It
becomes a pattern recognition problem.

There are tons of anecdotes from seemingly false positives, when it comes to
tech hiring. The web is filled with "I was very lucky, because they re-used
problems I had just solved".

BTW, when I say false positives, I don't mean incompetent programmers /
engineers - I just refer to those that do not master the subjects they're
being tested on, but average candidates (on the subject) that luck out on
getting asked the right question.

I still think Goodhart's law stands true for this trend.

People game the system, because they want to earn more money. Companies make
the system more rigorous and robust against gaming. People still find ways to
game the system, and it essentially becomes a race to the bottom. Along the
way you start losing out on terrific candidates, because they refuse to
partake in the increasing demands. So you end up with a mixture of very
talented engineers, and very able test-takers.

------
ourlordcaffeine
It is my observation that you generally don't need to know how certain
algorithms are implemented. You need to know of them, what they do and their
strengths and weaknesses compared to other algorithms. That is, just enough
knowledge to make the choice on which way to go. The actual implementation
part can be Googled when the time comes.

If I was ever an interviewer, I would not ask candidates to implement
algorithms, but rather to explain why you would use a certain one. Or give
them a situation and some choices and ask them to choose one and justify their
choice. (e.g. For this task, would you do it in python or C? Would you use a
linked list or an array to solve this problem?)

------
reggieband
> “Yes. Can you write an algorithm to find the Kth highest value in a binary
> tree?”

I got this exact question on a phone screen with "Giant Search and Advertising
Company." I got stuck on a stupid detail and botched the implementation. Once
I hung up the phone I took a deep breath and fixed the algorithm in about 15
minutes. That still isn't very good since I was only given 15 minutes total at
the end of the interview to implement it in the first place so I assume that
is the time-span they expect to get an answer from a senior engineer.

Fair enough, I didn't study for the interview, I don't have a lot of binary
tree experience. I realized that if I couldn't get through that phone screen
cleanly/easily then I probably wouldn't make it passed 4 or 5 whiteboard
problems either (which are likely to be significantly more difficult). Fair
play to any company that wants to screen candidates using that approach
because I am not the kind of guy they are looking for and that is just fine.
Everyone I spoke to was polite, professional and sounded competent. I do wish
they would stop calling me and letting me know that I did well enough to be
eligible to retry.

I have no doubt that I would contribute at an above-average level within any
of those FAANG orgs but I appreciate their process and the reasons behind it.
I have had no problem finding high-paying employment and distinguishing myself
within any team I have worked on for my entire career. I generally get
promoted quickly and asked to lead teams. As far as I can tell there is no
dystopia, just people looking for different things.

~~~
thedance
How snarky do people get on these interviews? If anyone asked me to find the
kth-greatest element in a tree I'd write down a loop that increments
std:set::crbegin k-many times and then dereferences and returns it. This is
literally how anybody at Giant Search and Advertising Company would do it, and
almost nobody at that company has ever written a tree, they just use the one
in libc++, from Jeff Dean on down.

~~~
ajross
Sigh. They aren't asking you the question because they expect you to write an
in-memory data structure library. They are asking you this question because
they want to know that you can reason about systems with subtle behavior, and
a binary tree is one such system that most programmers learn about in school.

So if you refuse to engage, they'll have no evidence from you about your
ability to write subtle code of any kind. And they'll go with someone less
snarky who they know does.

~~~
thedance
Isn’t it up to the interviewer to ask a useful question? This is exactly how I
would find the kth item of a search tree. I don’t feel like that is refusal to
engage. Is the question is more like “describe various approaches to the
designs of search trees and their iterators, and discuss the time/space
complexity of a few examples” then that’s a different question.

~~~
ajross
But... demonstrating the ability to write subtle code _is_ a useful question.
"Describing" or "discussing" algorithms isn't the same thing at all.

I mean, I can't speak to the thinking of the original interviewer, but this is
what I'm looking for with that sort of question. And I don't see how a binary
tree is a bad choice. Again, it's something that everyone sees in school, so
it doesn't require a ton of description in the interview.

I guess I put the question back to you: if you won't write a binary tree
traversal in an interview, what subtle code _would_ you be willing to
demonstrate? And why is that better than a binary tree?

~~~
thedance
I really can’t more strenuously disagree. At Giant Search writing “subtle”
code is very strongly discouraged. The very last thing I want is candidates
with a penchant toward subtlety.

~~~
ajross
The point is to demonstrate capability, not "penchant". I mean, look, subtle
code happens. Maybe it shouldn't. But it does, and it has to be fixed. There
was a story here just a few days ago about some Project Zero work to find a
bug in Chrome that involved a state machine with something like 50+ states!
And realistically finding people who can do that requires that they be able to
also do things like traversing a binary tree, right?

So I'm going to ask the question one more time: if you won't traverse a tree
in an interview, how else do you propose to select for people able to reason
about that kind of problem in practical code?

------
fsniper
Not exactly a comment for the piece, but for overall comments going around.

I am really shocked with people's understanding of situations. Like one great
example of a different interview process which totally seems like working for
the interviewer and his/her interviewees is bashed for not being good for
their tastes without even getting the rationale. Or expecting people to spend
6 months on preparation for interviews considered normal or totally
acceptable.

Either HN crowd are totally out of loop of life, or their self importance is
out of bounds that they can't see anything else which is deemed below.

Is life something that you could spend so easily? What kind of affirmation
people get from jumping hoops that would never even matter in the big picture?

The newer interview procedures that are described here really made my jaw
drop. I am not the most down to earth guy without the last bit ego, but I
believe I improved over the years. Still if I would encounter any of these , I
would go jerkiest of egocentrics ever and tell them go do themselves.

~~~
peferron
> expecting people to spend 6 months on preparation for interviews considered
> normal or totally acceptable

You're expected to be able to solve a certain set of problems. Whether you
don't prepare at all, spend 6 months, or spend 6 years is up to you. Oh, and
everything you need to prep is available in cheap books and websites.

That's immensely superior to being required to spend 5 years and thousands of
dollars in college to get the degree that nobody will hire you without, like
some industries do.

~~~
fsniper
Please look around, here you can find hundreds or thousands of people probably
never used advanced algorithms for their lifetime except once or twice for
their interviews. And you can see some who uses these daily who never
implement them out of their heads but with intuition, preparation, effort,
books and research. Oh and don't get me started that they all are compansated
for.

Which type do you think these interview methods are optimized for?

These methods are waste of money, time, brains for both parties.

~~~
peferron
I'm not disputing that it's imperfect or wasteful, and I'm happy to see some
companies trying different ways of interviewing that may not have these flaws.

I'm disputing that spending a few months to prepare for free and on your own
schedule is particularly abnormal or unacceptable. Maybe we could do even
less, but it's extremely benign in comparison with many other high-paying
jobs.

Some people in this thread call the tech interview process hazing. It's a word
that comes back on almost every HN discussion on the topic. Do you agree with
that labelling? If you picked a random, non-software engineer person in the
street and asked them whether solving algorithmic challenges at home for a few
months before being flown all expenses paid to a tech campus to write on
whiteboards and eat sushi constitutes hazing, what do you think would they
answer? Remember that hazing regularly kills people and is categorized as a
crime in California and many other places.

~~~
fsniper
About hazing, I absolutely totally agree it's hazing and from what I read here
is getting worse.

Take a surgeon. for interviewing ask her to do a frog dissection for a take
home project, and than ask her for a 10 hours long lead neural surgery,
without meeting the patient before and preparing for it before. Oh you won't
be paid, you can ask anything while patient is on the table. Oh I forgot you
can't use the latest auto surgeon functionalities that we have which would
improve or perfect the chances of success.

Now you know we are paying top notch, also have sushie served to your open
office. You won't find a better option!

I know this is ridiculous, but why don't you think what we are exercising is
not?

~~~
fsniper
Also to make it clearer, let's add that this is a job for plastic surgery.

------
heartbeats
Unfortunately, it doesn't matter - since all tests test for _something_ , and
all these things are highly correlated, grueling job interviews are entirely
justified.

As much as it pains to say me, HR is entirely justified in their approach of
asking people to fill out a form, importing the list into excel, sorting on
the GPA column, and calling the top N candidates on the list.

------
scarlac
Push for change. Show others the alternative. I have worked with teammates to
change hiring culture and gotten some fantastic feedback. Change will happen
if you push for it.

Here're my points:

1\. Supply candidate with a challenge that I built myself, tested with a co
worker

2\. Test should have many small goals and bugs: Get more data points on what
they achieved, don't make it binary!

3\. Challenge should include real bugs from when you built it. e.g. typos,
wrong attribute names like 'innerHtml' instead of 'innerHTML', forgetting an
import, etc.

4\. Make results runnable / viewable (for front end work)

5\. Explicitly tell candidate that Google is not just allowed, but expected

6\. Allow candidate to ask questions so you're not dehumanizing them (but
don't always give a straight answer)

7\. Follow up with questions like "what do you think could be improved?"

8\. If candidate spends more than 10 minutes on any of the challenges, allow
them to skip it

Get as many data points as possible from an interview. Make it as close to
real life as possible.

------
jorblumesea
Everyone knows it's broken, but interview cycle still continues to bring in
talent, even if there are false negatives. People still brave the grueling
gauntlet. People still show up for interviews. Smart people still get hired.
The system works, just in a terribly shitty way.

To HR, the engineer hiring process is voodoo magic and we best not touch it.

~~~
Mountain_Skies
It only works because there's always another body standing outside the door
waiting their turn to be abused by the process. It'll end real quick if they
run out of interviewees.

~~~
heartbeats
And then, the system will adapt. There is never any problem.

------
ai_ja_nai
This horror story would be enough to quit the entire FAANG game:

"At one particular ‘top’ tech company the process is that when a candidate
goes through an interview he or she has a packet compiled about their
interview performance. The packet then goes to a committee whose job it is to
impartially review the packet to make a hiring decision. At one point a
particular committee got so critical that they rejected every packet for
several months. When HR caught wind of this they decided to set up a test.
They sent the committee a new round of packets and once again the committee
rejected them all. HR then called them all into a meeting and explained that
they packets they had just reviewed were in fact the hiring committee member’s
own packets from when they interviewed for that company. They had unknowingly
rejected themselves! How could anyone pass that bar?"

------
andai
> At one particular ‘top’ tech company the process is that when a candidate
> goes through an interview he or she has a packet compiled about their
> interview performance. The packet then goes to a committee whose job it is
> to impartially review the packet to make a hiring decision. At one point a
> particular committee got so critical that they rejected every packet for
> several months. When HR caught wind of this they decided to set up a test.
> They sent the committee a new round of packets and once again the committee
> rejected them all. HR then called them all into a meeting and explained that
> they packets they had just reviewed were in fact the hiring committee
> member’s own packets from when they interviewed for that company. They had
> unknowingly rejected themselves! How could anyone pass that bar?

------
fogetti
I am not sure anyone mentioned it before, but in many occupations you are
required to take standardized tests which you are required to renew each X
years. This way if you hold the credentials than you don't have to actually
demonstrate your technical skills when applying for jobs, since your
certificate proves them.

And guess what?! Your diploma is actually such a certificate, at least
something that's close enough. Still our industry largely ignores that for
some reason.

To get to the point I wouldn't mind to renew my credentials with supplemental
diplomas every X years on standardized tests facilitated by educational
institutions to avoid the stupidity of the industry's current trends.

------
artsyca
The word 'dress' doesn't appear once in this thread and that's a sign of the
disgusting state of affairs all in itself

It used to be people took care in small gestures like wearing a pressed shirt
but now all the auspices have gone awry in favour of this laughable
meritocracy

No wonder tests of this nature have been devised by people who haven't ever
buttoned a collar and it's everyone's fault for not taking the moral high
ground

When's the last time you walked into a formal interview that actually was
formal?

Casual guys in a jizzing contest over O(logn) implementations of tree
traversal is the reason every start-up fails after 18 months

~~~
Aperocky
What? I interviewed at my current location wearing a cargo short and a tshirt.
It’s a trillion dollar company and we’re not failing any time soon.

Coding interviews aside, no dress requirement is one of the biggest plus and
allow people to focus on the thing that matters. I have no idea where you come
from that software engineering is helped by dressing up pressed shirts.

~~~
eitland
I strongly suspect sarcasm.

~~~
artsyca
Bro I use dress as a way to read people one way or another how you dress is
how you play

------
Koshkin
I have just realized that I have no idea how interviewing is done in other
areas - for instance, mechanical engineering.

~~~
thedance
GREAT question. For one thing you’re not getting any job in mechanical
engineering without a degree and an EIT, so that narrows the possibilities.
Companies recruit at universities and this is the main pipeline into the
industry. Connections are very important, so doing internships in summers
during university gets your foot in the door. After you practice for ten years
you get your PE and set up your practice either within a large company or
independently. It is very likely that an ME can do their entire career without
ever being subjected to the trick questions of some kid with six months of
industry experience, like we pretend is normal for software developers.

------
RobKohr
The FAANG's of the world are doing us a big disservice. They filter out the
best of the best programmers in the world, and then shackle them with 300K+
golden handcuffs to work on meaningless tasks on already developed products.

I was talking with a recruiter many years back about when Yahoo had a massive
layoff. The following year, he was suddenly awash with jobs to fill with new
startups that were created by these Yahoo employees that were in comfy jobs
for life.

If one of the FAANG companies laid off their workers, we would have a huge
tech boom as these brilliant people suddenly would be forced to either get
another job, or create something new, and that percentage of people that would
create something new would rock the world. We would have new innovations
across the board in IT and other fields that they would apply their talents
to.

Instead, they are building plumbing in a system that really is just in
maintenance mode. Remember, 99% of the functionality of these systems that
exist today was already in existence 5 years go for them. This swarm of high
priced talent is basically just moving the needle about 1-2% per year to just
stay ahead of any other potential competitor.

The trouble is that these companies are so successful, that they can burn the
cash trapping talent, and still pull in billions per year. This grind for
small returns is just a small line item compared to the flood of cash they all
rake in.

------
satisfaction
I find this post accurate. Please also keep in mind that interviewing is as
much about deciding if the company is right for you as it is if you are right
for the company. When I take a bit too long to solve the coding challenge and
the interviewer puts on an attitude I just assume that this is what it would
be like working with this person, no thanks.

I recently interviewed with a hot VC funded start-up, the interviewer was the
most dry and passive aggressive person I have ever met, I decided about 5
minutes into the 'get to know you, tell me about your work history' section of
the conversation that I would not like working for this person. I had never
wanted to end an interview early before this experience. When they sent me a
leetcode link (to a problem I had solved in preparation for a series of
interviews I was doing) and asked me to solve the problem I just sat there
wondering how long before they would ask me to leave if I typed nothing. About
5 minutes later they asked me to leave, and that was the first time during the
entire interview that the interviewer cracked a smile. I think that company
will fail.

Am I the a-hole for playing that sort of game?

Edit: I also interviewed with a medical startup during which the interviewer,
while telling me it took me a while to get to the solution and critiquing my
implementation, admitted (I think by mistake) that they had spent some time
researching the solution prior to the interview. I asked them how long it took
them to solve, he did not answer that question.

------
overgard
Hiring and interviewing are incredibly broken, I totally agree... And the
algorithm puzzles are basically silly and don't tell you any relevant things,
like how pleasant would this person be to work with, how conscientious are
they, etc.

But.

Usually interviewers are asking these questions to see how you think, not
because they expect you to get it exactly right. And so verbalizing your
thought process is how you prove yourself. And if you have trouble verbalizing
your thought process, I sympathize, but being able to explain to others what
you're trying to do and why you want to do it that way is a really big part of
the job. And there are going to be a lot of times on the job where you DO need
to tackle something wildly outside your skill set, and people need to see that
you can at least start iterating towards the right thing. You don't have to be
right, you just have to convince them you'd get there in a reasonable amount
of time.

Also, if a small amount of pressure causes you to forget your entire CS
education, that's kind of relevant to being able to do your job? I'm not
trying to pile on to people that have anxiety issues, but being able to do
things under pressure is a skill. If we're up against a deadline and you
entirely freeze up and can't do anything, that would be a bit of a problem
wouldn't it?

~~~
NhanH
It's incredibly hard, and would take years for _anyone_ to come up with any
algorithm from first principle. Which means that any test of algorithm is a
test of knowledge, rather than "how you think" or "being able to reason about
subtle behavior in system" etc. You looks good if you already have the
knowledge, and you will look like a clown otherwise. That is okay if you also
realize that the breadth of CS fundamentals are incredibly broad and everyone
only knows a subset of it (ask as many simple things as you can).

My deadlines are measured in months, weeks and in the minimum, days. There is
practically no cases where it is in hours, and absolutely no case where it
would be 30 minutes. I (We?) have trained myself to work and deal with
deadlines/pressures of those standard time frame, which means that if I have
only a day to deadline left, my technical mind shut down and it is now
thinking about the business to see what should be best done next.

I believe people would feel more pressure at the risk of failing an interview
than the risk of their company's product having a downtime

------
bilekas
Its so funny, but I was with a good friend of mine who I've worked with on
private projects, and we were just talking about this.

We spent a good lot of the night interviewing eachother in our own respective
questions and judging eachother.

I'm a bit more senior that I like to admit, and I loved his questions. His
approach was more simple questions, then go and follow up on them. This was
evident when he mentioned 1 hour was not enough time for him.

I have quick fire nonsense questions that are just an entrance fee, What is
SOLID, how can you prepare a unit test. Then important things (IMO) Patterns,
identifying refactoring needs.

As for the questions themeself they're actually not that important and both of
us tonight realised..

The questions you ask should reflect the work you EXPECT(if a senior/mid) the
person to be able to do.

If you're hiring a JUNIOR I will say... The most important thing is to make
sure they actually have an interest. I have been burnt hard on this.

Forget about language specifics also.. They can be learned, and as for
Patterns, I am taking a step back on them because a lot of people use them
without knowing it.

Our world comes from experience.. If you're willing and able to teach, hire
like that, if you need some core team member quickly, hire for that.

It was easily the best chat I had with him in a long time and I hate
interviewing!

------
stebann
I don't even have the coding level that the writer has, but I felt myself so
expelled from the industry that I quit looking for jobs. I just gave up and
started working independently. Financially now I'm really broke but I think
I'm better with myself. Maybe I'm not the "super-programmer-hacker" but at
least I don't have to participate feeding the sadistic pleasure and sense of
power that recruiters have on us.

------
swagonomixxx
> The second was to write a recursive permutation generator using dynamic
> programming which is no easy task. I got totally stumped in the moment by
> that one. At the end of the interview I asked the interviewer “This problem
> seems a little steep for a phone interview. Do you often write recursive
> algorithms at Payment Processing Company?” He replied “No, we don’t use
> recursion.” “How about permutations? When have you used those?” He answered
> “Our algorithms have no need for permutations. Most of the engineers here
> work on user interfaces and infrastructure.”

This is absolutely hilarious, and has happened to me a bunch of times
interviewing at large corps. Although I wish I had the balls to do what Jared
does here, which is ask the interviewer if they ever even _used_ dynamic
programming on the job.

Like, I get that some jobs are algorithms intensive. I've worked in such jobs
myself. On the job, I had a lot of resources to help me - access to textbooks
like CLRS and Wikipedia, so that building an algorithm and coming up with it's
big O was mostly straightforward. But we've never had the CEO come and say "I
need a O(n) algorithm stat for this problem _text dump of hard DP problem_".

------
coolassdude1337
Yes it sucks but so what? It's worth it. FANG will give anyone an interview if
you have an internal reference. I am an undergrad English major in my 30s and
just got in.

Gaming the system is easy. You just have to put in the work. Do every question
in EPI and then do a few hundred leetcode questions until you're ready. It
will take between 100-500 hours depending on where you're at when you start.
Good luck!

------
cmonnow
How can you think clearly when someone is watching and judging you?

The ideal scenario would be - give a problem, leave the room, and come back
after 15 minutes - give the candidate some breathing room.. to make mistakes,
to try out few methods, to collect their thoughts.

This concept of 'We want you to think aloud, We want to see your approach',
doesn't match reality.

In reality, the only time that happens is when both parties are trying to
figure out a solution collaboratively. Not when one party already knows the
answer and is 'testing' the other party.

An author's first draft, or a speaker's demo, has a million corrections before
it gets to print/stage. Can RR Martin write freely if the NYTimes reviewed his
every draft version ? Can Steve Jobs go on stage and give a demo if he has not
already rehearsed the entire saga ?

It's like judging a person at their vulnerable stage. Unless they are a saint
who can completely block out the existence of another human being sitting a
few feet away, it's hard to concentrate.

You're more worried about how your thought process looks than you are about
solving the problem at hand.

------
sefrost
Is it possible to create a meaningful coding test that only takes 45 minutes?
I would love some examples for front end tests if any one has any.

~~~
bawolff
Fizzbuzz?

I'm pretty sure the only meaningful coding test is if you can program at all.
After that everything becomes artificial in an interview setting.

~~~
kragen
[https://www.youtube.com/watch?v=EuPSibuIKIg](https://www.youtube.com/watch?v=EuPSibuIKIg)
took less than 45 minutes and was considerably deeper than FizzBuzz. Moreover,
it would be easy to do better than the interviewee did. Granted, it's a pretty
artificial situation.

I think most things you can write in less than 30 lines of code or so could be
reasonably written inside of 45 minutes. Like this Lisp interpreter in JS
[http://canonical.org/~kragen/sw/dev3/terp.js](http://canonical.org/~kragen/sw/dev3/terp.js)
or this octal-to-binary converter in assembly
[http://canonical.org/~kragen/sw/dev3/osmb.s](http://canonical.org/~kragen/sw/dev3/osmb.s)
or this Collatz-sequence searching program
[http://canonical.org/~kragen/sw/dev3/collatzsearch.py](http://canonical.org/~kragen/sw/dev3/collatzsearch.py)
or this paren-matcher in Scheme
[http://canonical.org/~kragen/sw/dev3/pmatch.scm](http://canonical.org/~kragen/sw/dev3/pmatch.scm)
or this paint program in C
[https://gitlab.com/kragen/bubbleos/-/blob/master/yeso/%CE%BC...](https://gitlab.com/kragen/bubbleos/-/blob/master/yeso/%CE%BCpaint.c)
or this Unicode Wang tile ASCII-art maze generator
[http://canonical.org/~kragen/sw/dev3/uniwang.py](http://canonical.org/~kragen/sw/dev3/uniwang.py)
or numerous other things like that.

There are some things that are really tricky and so they take longer than that
to write even when they're less code, but the examples above are not among
them. Also, it's pretty often that I've written longer programs than 30 lines
inside of 45 minutes.

I know there are people who can do things like that but can't do them in an
interview because they freak out, and there are people who can program
somewhat but can't do things like that, and they might be better at other
things than I am. You aren't going to find out how well someone's high-level
architectural abilities can help you steer clear of unnecessary implementation
problems in a 45-minute interview, unless they're the same as your own high-
level architectural abilities, in which case you can recognize them.

But you _can_ find out if they can write code that works, at least sometimes,
because that's a thing that you can actually do in that timespan.

------
alfiedotwtf
When I was young and free the FAANGs were my ultimate dream. I even saw the
interview process as a cool pissing contest. However living in the US wasn't
for me, so always had to regrettably pass on interviews... but now as time
passed and we've seen the FAANGs go from good guy to Bond villain, I'm forever
glad I never hauled my family across the world to be part of the cool gang.

Talking to friends who now work for the FAANGs, I've heard stories of having
to spend 40+ hours (re-reading Sedgewick and practicing programming questions
etc) to just prepare for the _first_ round.

Fuck that...

 _FAANG_ interviews might be dystopian, but if you look outside the Silicon
Valley bubble, you can find interviews that are far more enjoyable than
spending days in front of whiteboards just to move onto the _next_ round. The
most common pattern of past interviews for me has been beer/coffee/coke and a
30 minute chat about the company's future goals and see if I fit might in.
That should be how it's done.

------
LaPingvino
I've designed an interview test before and I am ironically now doing a very
similar interview test to what I designed for the company I used to work at.
It worked extremely well for where I used it and I am absolutely thrilled to
work on it now for this company. The key element here is indeed relevancy to
the job you apply for and not looking for a perfect answer.

For anyone doing programming tests, I would like to give some advice, too,
based on the tests I did and got through successfully:

\- Always give it a try \- Always explain what you do and what you are trying
to do \- Don't worry about sending in an incomplete test when you don't manage
to do it \- Be verbose about what you are trying to do to solve it \- Don't be
afraid to ask questions

My first great programming job was at a place where I got a hard mathematical
problem to solve, and I didn't manage to solve it at the moment, so I asked if
I could take it home. I didn't manage to solve it at home but sent in the
broken code that I had either way.

I got the job.

Why? Because the broken code I sent in showed that I understood recursion (it
was for a Common Lisp job, that code was in Clojure) and the other people,
even if they did manage to solve it, used more common languages and iterative
solutions. He wanted someone who got the spirit of what they were working
with, so that got me in. I asked my boss later how to solve that question, and
he didn't manage either.

When I did the interviewing myself, the situation was similar. One candidate
sent in a huge resume that looked impressive, but didn't send in the test.
Immediate fail. Two others had a hard time with the test, but they showed that
they cared about making it work, and that was enough for us to accept them:
the core thing we wanted to see was that they could learn and cared enough to
learn about what they needed.

One of those became main programmer and leader of many others later on, and
made the company hugely successful.

------
hanswesterbeek
Whenever I've interviewed people I've always made sure to them feel
comfortable, so any anxiety does not get in their way.

Then, we talk and I look for all the qualities they /do/ have.

Sadly, lots of interviewers get a kick out of finding out what the interviewee
does not know, so they can feel superior.

Coding challenges should be: -1. take-home -2. concise -3. relevant to the job
-4. take no more than 4 hours

One example of such a decent test that I came across involved having to read a
file, parsing it and turning its contents into some basic HTML. During the
interview we talked about things like "what if the file were really big", e.g.
let the candidate reflect on the limitations of their implementation. This was
enough to suss out where somebody is, professionally. And nobody had to have a
bad day.

------
tanilama
I mean looking at the author's resume, it looks like he is mainly focused on
machine learning domain, where the hiring is tight. Yes, in ML top 5%
candidates are sought after like there is no tomorrow, but there is barely
anything left for the left 95% of candidates.

So here is my advice. For your first job, and as a newbie, be accommodating.
When I was out-of-college, I thought Java is no fun and is only for old
people, I am functional and cool. And the job scene is just a hammer right on
my head. So brush up my Java knowledge like in 2 weeks, and putting Java
everywhere on my resume. Get a job pretty quickly.

Now I have experience, and don't have to bundle myself as Java programmer
anymore. But that is only after I have grown from that early experience.

So again, be accommodating, get a job first and everything else can be figured
out more easily.

------
dfg0987098x7
There's literally no reason not to name these companies who rejected you, you
don't owe them anything!

------
0binbrain
All this discussion is spot on. The problem is all these startups now think
they are FAANG companies also. You're not Google dude and you're probabaly
passing on great hires and making the hiring process harder on everyone.

We recently did a bunch of hiring. Our coding excersize was practical and
involved working through some existing code that had a bug and extending it.
They had to be able to state the problem back to us clearly. It was take home
solutions submitted to git. It was simple to weed through candidates looking
at the code for 30 secs. We looked for things like clean code and well thought
out solutions. We didn't do the silly BigO optimization stuff that every
company is obsessed with. We've been very happy with our hires.

------
musicale
> companies are more afraid of hiring bad candidates than they are excited
> about the opportunity to hire a great candidate

Pretty much - they're willing to reject 100 good candidates in order to avoid
hiring one bad one by mistake.

It's also a feedback system/arms race (like college admissions, conference
paper submissions, etc..) The lower the acceptance rate, the more places you
have to apply. This raises the number of applicants for each position, which
in turn lowers the acceptance rate even further. This continues until you
reach the maximum number of applications that each candidate can produce.
Needless to say, the quality of evaluation is inversely proportional to the
number of candidates, so acceptance becomes arbitrary and random.

------
cmrdporcupine
I have a poor opinion of the Google style job interview to the point where
despite having worked at Google for 8 years and trained in the interview
process twice I just won't give interviews... I don't like the idea of giving
an interview that I wouldn't pass myself.

BUT...

Having recently been through an interview with a well-known open source
software company where the third interview ended with a "No" based on what
seemed like purely subjective factors with no skill-based or evidence based
reasoning at all... I do now have a lot more sympathy for our process @ Google
which at least requires a panel of people with calibrated scores, multiple
interviews with copious note taking and documentation, etc.

It really is hard to find a middle ground, though.

------
FpUser
Ok maybe it is different as I did not apply for permanent position for about
25 years but I have developed/helped to develop many products on consulting
basis for other companies and had to go to numerous interviews. Here is my
experience:

Some companies are hiring a pie in a sky while other have real problems and
want to hire people that can solve real problems. Hence 2 type of questions:

1) Write me working Lisp code of some exotic sort algorithm, oh and btw what
that Hermite–Minkowski theorem is about.

2) They ask what you've done, how you did it, some references and how you can
help them to solve their problem.

When I smell #1 I just apologize and leave. #2 can go either way but at least
you're talking to a reasonable people with real needs.

------
epicgiga
This is life though right? These companies pay crazy high salaries -- they're
not going to make it easy on you.

The fact that you'll barely be using the algorithms if at all doesn't matter.
They use that for interviewing specifically because it's hard, and it screens
for intelligence, problem solving speed, knowledge, and even how fast you
learn (since everyone's got to learn the same algorithm question prep).

The end goal for them is that all their workers are at a minimum screened for
the ability to grind at and break through difficult and esoteric problems,
which are the biggest time sinks and therefore biggest limiters on the
progress of the business.

------
person_of_color
I once got a Union Find algorithmic problem in an Embedded Systems phone
screen.

Seriously.

I've seen that same role unfilled on LinkedIn for more than a year. How do you
stop Google engineers from straight out gatekeeping if they are afforded so
much freedom?

------
z3t4
I have over 20 years of experience but due to the constantly changing and re-
inventing of tooling I consider myself "junior". I like to do my "cooking"
using fresh ingredients, but I prefer to use a sharp knife, rather then
special purpose cutting tools, so when I get asked: -"Have you used popular
framework and tool x,y,z" my answer is often _no_ , so they probably think
I've been living under a rock for the past 5 years. But quite the opposite, I
constantly read about most of these tools, but they do not solve any problem I
have.

------
lalit-mohan
I have done multiple hiring and interviews in tech industry and find it quite
baffling what has s/w engineering interviewing process degenerated into. I
hear many sad interviewing stories these days. Some my conclusions:
Interviewing is an art and it takes a very good interviewer to identify good
candidates, this algo/prog interview in 45 mins can not do justice. Problem
solving is what is really should be checked and extremely difficult to check,
dont ignore the attitude of the candidate. Einstein with a bad attitude should
be avoided.

------
jackcosgrove
If you work at a FANG too much of your income is hoovered up by rent anyways.
Especially factoring in the hours and stress. Promises of a career ladder are
breadcrumbs for most people. Why bother.

Big Tech has been captured by finance and professional management. In other
words those companies are now political bureaucracies where workers, as
opposed to connected operators, are exploited.

Workers now need to go elsewhere, save up some cheddar, and start their own
companies. Same as it ever was.

There's nothing special about Silicon Valley. It preys on idealism and naivety
just as much as Hollywood.

~~~
jophde
Hard to save money in the Bay if you aren't making FANG money.

~~~
jackcosgrove
Then leave the Bay.

------
tracerbulletx
You need to follow a pretty similar path to get good at competitive
programming, which seems to be what that type of interview optimizes for. Know
lots of optimal approaches to a large class of problems, and be able to very
quickly identify and classify the problem you are given and apply those
approaches to solve the specific problem. I agree this isn't really a good
match for real-life work. I'm pretty happy with my non MFAANG job but I took
up competitive programming as a hobby just so I can have options next time I
want to change jobs.

------
jrjarrett
I start a new position Monday. I expected my search to be exactly like this,
so I started early.

Within a week of setting the "would hear from recruiters" flag on my
admittedly-thin LinkedIn profile, I had 3 solid leads from 3 companies.

I had 3 in-person interviews, and even feeling like I flailed a bit on a
couple of the coding exercises (I had the exact panic about writing The Game
of Life in 60 minutes), I had two offers and one almost-offer. (The almost was
more due to they wanted a principal engineer vs. senior engineer).

Maybe around where I am companies are learning their lesson.

------
raz32dust
The priority of a big company is to get a "good enough" person as quickly as
possible. They have tons of applications, and interviewer time is expensive.
Naturally, the process is geared towards minimizing false negatives, and
getting a reasonably good hire in the minimum time. The current process works
well for that. People who clear these interviews are usually not terrible, and
are good enough. There is no incentive for a large company to do anything
differently, unless they are looking for a very specific skillset, which is
rare.

------
anthonysarkis
Re: 'Time limits are detrimental and discriminatory' the short answer is that
it's really testing if you already know the answer - some of these original
algorithms took decades to discovery the first time. My interview process if a
bit different but still very tough. I talk about some of my opinions on that
here [https://medium.com/@anthony_sarkis/software-engineering-
path...](https://medium.com/@anthony_sarkis/software-engineering-
paths-180595fd229c)

------
nickysielicki
I wonder if they were actually effective with that recruitment strategy. I got
that notification a bunch of times, generally when googling for documentation,
and thus when I’m in the middle of something relatively technical. Finally, I
accepted the challenge, looked at the problem, realized it would take at least
an hour, and then went back to the programming problem I was doing in the
first place.

You’re selecting for employees who are able to get distracted for a few hours
when they’re in the middle of something else. That’s not who you want.

------
ddevault
I think Giant Search and Advertising should make the interview more difficult,
then more difficult still, then cease hiring entirely, then atrophy employees
until they die and/or are legislated out of existence. You - yes, you, HN
reader who already works at one of these companies - are ethically responsible
for the actions of your employer. When you're the one on the front lines
helping realize their dystopian dreams, then the blame falls on you. Don't
work for FAANG.

~~~
jrockway
> Don't work for FAANG.

What did Netflix do? And don't we like Apple now? They ship crypto to billions
that annoys the government's spyware programs.

~~~
ddevault
Netflix is the better of the bunch, but they still develop and support DRM
(Digital Restrictions Management).

Apple is awful, they have a long and storied history of anti-competitive and
anti-consumer behavior. Pay-to-play developer ecosystem, walled gardens of
applications, proprietary connectors just for the sake of being proprietary,
armies of lawyers finding creative new ways to evade taxes...

------
makecheck
To me the main misstep with a lot of modern interview testing is the time-
constraint factor. Having 20 minutes to solve a complex problem sans-Google in
a not-really-a-text-editor field on a web page just isn’t a real-world
scenario. And, what you do in that setting doesn’t really say anything useful.

If you’re going to test people, either whiteboard it and make it absolutely
clear you just want to see how they break it down; or, give them _hours_ to do
it right without a lot of restrictions.

~~~
ummonk
There is something ironic about not being able to use Google when interviewing
with Giant Search and Advertising Company...

------
doh
> Hierarchies are real - I am rather confused with the advertised rankings of
> a software engineer. There seem to be only two rankings: non-senior and
> senior.

This one greatly differs between large and small companies, but I think for
small companies there are only two positions they can interview for, junior
and senior. Anything beyond that, be it Director, VP or SVP, the company is no
more interviewing a candidate but rather is doing everything in their power to
convince them to join.

------
jupp0r
A lot of the article can be explained by viewing the interview as a test. The
economics of false positives vs false negatives are vastly different. Giant
search company can afford to not hire great candidates. More will apply
tomorrow. The cost of hiring somebody they shouldn’t have is
disproportionately higher.

I’m not saying this is a good thing, but to me it does explain why interviews
are so hard and why they are so disconnected from actual jobs that applicants
will actually perform.

------
tobyhede
Last year I did the initial phone screen for a management level role at large
search company and the next step was the infamous code test. Such a hard pass.
Maybe it's different at a FAANG but my day job is communication and
coordination, being technical enough to unblock and optimise work across
multiple teams. The process just felt like it was optimising for the wrong
thing. Not to mention that it's 20 years since my degree and I have better
things to do.

------
microtherion
Every time I read one of these articles, I'm surprised at the complexity of
the coding questions the candidates had to solve. When I interviewed for my
jobs, the questions were much simpler, and as an interviewer myself, I (a)
pick much simpler questions and (b) even so, the candidates tend to have
plenty of struggles solving them.

Am I really missing an army of engineers who can write an involved image
filter in 45 minutes without that actually being their specialization?

~~~
anonytrary
Ah, image filter is easy with python:

    
    
      import math from "some huge math lib that does everything you can think of"
      
      print math(image)

------
nhumrich
Can we move on? Interviews suck in every industry. "Sell me this pen" isn't
relevant to what a saleman will be doing. He will be on the phone, following a
script but its so standard.

It could be worse. In the medical industry you have to work for free (or low
pay) for 1-2 years to even be considered for a "real job". Law firms are
highly competitive, and have very rigorous interviews . And yet software
engineers are payed better on average then both.

------
tenryuu
I feel this personally. But I suppose the author is doing a lot better job
that I could of as I typically just don't receive a response at all to
anything I would apply for. Finding work here feels quite tough, and even with
recently graduating with a bach in CS, I ended with contract work writing
English content for Japanese websites. It's not demanding and pretty breezy,
but at the very least keeps me from turning up homeless.

------
wces
I've multiple colleagues who got offers from all of FAANG. They tell me about
solving 500 problems on LeetCode 2 or 3 times before appearing for interviews.

------
opless
I have always found coding interviews weird.

For example, you don't ask a carpenter if they know what a dovetail joint is.
You don't ask a bricklayer on which brand of bricks he prefers, or how tall
his last wall was. You certainly don't ask a mechanic how an internal
combustion engine works!

Sure throw a few algorithms at entry level employees, with no experience, to
make sure they understand the basics. But not experienced developers!

------
_wldu
I strongly encourage self-taught developers to take a good theoretical
algorithms class. In it, you'll learn to represent most problems as some sort
of graph problem and map the problem at hand to nodes, edges, etc. and find
the most efficient way to solve it, prove your solution and show how long it
takes. You'll also learn (more importantly) what classes of problems cannot be
solved at all.

------
29athrowaway
Engineering interviews borrow ideas from competitive programming.

[https://en.wikipedia.org/wiki/Competitive_programming](https://en.wikipedia.org/wiki/Competitive_programming)

The world's top companies receive a flood of applicants and use this format to
filter them.

If you work in simple web applications with mild traffic volume, filtering
candidates in this way is unnecessary.

------
Igelau
The heart of the issue is that the interview and even the application process
are geared towards finding this mythical coder who lives to churn out code.
"URL for website or GitHub repo" is a required field on so many applications
now. Sorry... between music, art, exercise, children, and commuting, finding
unpaid time to do my job even more is a little tricky!

------
starpilot
It's bad, but it's less bad than all the other ways of testing SWE's. These
companies aren't averse to self-reflection on hiring criteria. They no longer
care about GPA, whether you went to college, or test scores. Evidently their
data have shown that algos questions are effective at identifying high
performers, albeit inhumane and non-holistically.

------
cleandreams
The worst interviews of my life were at Google. The reason is, they ping me
when I am not looking and that gives me the idea to look - then they are my
first interview. The last time I went through a new job search I studied first
for two months. The google interview was before all that. Bombing was painful!
IMHO job interviewing is a skill and practice is essential.

------
m3kw9
They are missing a lot of good engineers by putting sink or float weight on
white boardings. Apple does this as many big companies. a lot of candidates
can code but can’t white board or they can white board because they studied
the cracking the interview. You will get some that can actually get
whiteboarding but you are hiring people with very simular minds

------
nobleach
I really, really want to see Crystal succeed. I've been playing with it over
the past few weeks. Since it is so Ruby-like, it's the first language I sat
down and pretty much immediately knew how to achieve most of my goals. And
having Spec (RSpec-like testing framework) made me nostalgic. I hope to see a
critical mass grow behind this one.

------
jrockway
HN explores interviewing again.

At my last job, I was trying to hire a frontend engineer. More programmery
than designery, so I would kind of expect the ideal candidate to have heard of
Typescript, and to have maybe written a unit test before. Our recruiter put a
job listing on the usual places with those exact criteria, and ... we got
hundreds of resumes by the time I took a look at the queue a few days later. I
reviewed them all! 90% of the applicants had gone to a bootcamp and had nearly
identical resumes. They wrote down their camp projects as though they were
work experience. They linked to their Github that had line-for-line identical
code between applicants that went to the same boot camp. Some were just
directly the output of create-react-app with no additional code added. The
common theme was, "I hear you get paid a lot to be a programmer. Count me in!"
The other 10% of applicants didn't really have anything negative going on.
They have some claimed programming experience, and they want to get paid to
write computer programs. Why not call them up and ask them to find the k-th
element of a binary tree? It's not a super-obscure area of study.

When I was at... erm... "Giant Search and Advertising Company"..., I did in-
person interviews. I went through a lot of the shared interview questions to
use, but ultimately came up with my own: given a stream of events from a
variety of event sources, count how many unique event sources emitted an event
in the last 5 minutes and last 30 minutes. I chose this because I literally
wrote this exact program, and it took me a few iterations to get it to be
optimal. (Or what I think is optimal!) For that reason, I found it to be a
pretty fair question. The answer is just a few lines of code. The problem is a
real-world problem. It's not a puzzle, but it does involve some thinking and
maybe asking some questions.

The last thing I'll say, which I know is kind of snarky... As a Senior
Software Engineer at Google, your total compensation is going to be north of
$300,000 a year. You should be able to find the k-th element of a binary tree.
Teach yourself how; it's kind of fun, and might someday be useful.

I agree with the HN consensus that hard CS comes up somewhat rarely in the
day-to-day life of a programmer. But when it does come up, you really do need
to know it. You will never be finding the k-th element of a binary tree. But
there will be tree structures, and you will come up with some brute-force
algorithm because you haven't seen that class of problems before, and you will
push your "uses too much memory and time on production-sized datasets" hack to
production, and production will crash, and then you find yourself with a
production outage you don't have the tools to fix. You aren't getting paid
$300,000 a year for that. So that's probably why they ask you CS-y questions.

------
tomnj
Here’s an Xoogler talking about how he was given his own hiring packet to
review (without knowing it was his) and rejected it:
[https://m.youtube.com/watch?feature=youtu.be&v=r8RxkpUvxK0&t...](https://m.youtube.com/watch?feature=youtu.be&v=r8RxkpUvxK0&t=8m50s)

------
leet_thow
What I've noticed about interviews is that there are a lot of generally
unhappy and insecure people out there. People, especially in the Bay Area, are
under the thumb at home and work and have a lot of debt and stressful family
lives. Social comparison is an instinctual response in such instances and
extreme bias is commonplace.

------
cryptozeus
“When I was asked to write an image filtration algorithm I spent the first 15
minutes just to understand the question. I ran out of time. ”

I have been through few of these, I just assume that there are people out
there who can understand and code up the question asked within 15 min. Those
are the people this company is looking for. Not you and me.

~~~
erikerikson
It's a form of "guess the teacher's answer". I was once observer to a
committee that rejected a candidate that came up with a more efficient and
correct answer than the interviewer was looking for. I couldn't argue against
it because I had recommended the candidate.

------
erikerikson
After 15 years, patents, open source, and repeats successes it hasn't gotten
better. I got into this because I loved it so much... I feel asked to be a
hyper energetic, extroverted ego case and really I just want to be humble and
quietly write some code I can feel proud of that does something useful with
some kind people.

------
TXV
Much of these hiring practices are just a self-perpetuating narrative. Just
spreading the news that interviews at your company are hard is a way to
discourage unqualified candidates. And candidates that don't want to put up
with your (perceived) bullshit. Either way, the choice of playing the game is
entirely on us.

------
jwmoz
I have no desire to work at those kind of companies nor do I expect I would
pass their tests.

I've had a successful and well paid career as a contractor in London and
highly advise others to check the scene out.

Some of the best contracts I worked on were just casual interviews, I didn't
even write any code.

------
newfeatureok
I think the best hiring process is the following:

1\. Open source your entire codebase

2\. Each user story, commit for feature, etc is tagged

3\. Pending features are correlated to (2).

Finally, no interview or references. Simply hire people who can complete high
level implementations for the features to extent one can given an arbitrary
time frame.

------
alexfromapex
The best part is they might hire someone that knows the answers by chance when
someone with much better technical skills doesn’t know the answers to the
particular set of questions and then the new hire might be technically savvy
but often have very poor interpersonal skills

------
joshsyn
I almost got into a role as a lead dev only to decline myself later. Their
entire team had left for some reason and last developer wanted to leave too.
No technical interviews, though lol.

Small companies aren’t that great either, when their main business isn’t tech

------
xivzgrev
I mean interviewing sucks yes. And don’t spend too long on take home work, no
more than what you’d expect to put into a normal interview at that stage eg if
it’s a screen no more than 1 hr if it’s later no more than a few.

------
andai
> I lie somewhere between junior and senior and it seems to be slim pickings
> for my experience level.

In some countries I see job postings with a third experience level: "Medior".
Is there an equivalent in English?

~~~
twodave
The term in English is "mid-level" though most find it somewhat derogatory.

------
32gbsd
No matter how many APIs and tutorials you do it comes down to being calm under
pressure and knowing who you are talking to. You have to practice your
communication skills and be cool. Often times you will be interviewed by HR
people and managers - rarely will you get to be interviewed by a TDD Clean
code geek that you follow on twitter. Eitherway there is nothing out there
that you deserve more than other people. If you are young shut up and build
stuff. (I wrote this as satire a couple moons ago;
[http://owensoft.net/v4/item/2162/](http://owensoft.net/v4/item/2162/) )

~~~
01100011
> rarely will you get to be interviewed by a TDD Clean code geek

Have to disagree. Every interview in the last 3 years was majority technical
with top-tier team members. Yes, I talked to a couple HR reps and managers but
they were less than 10% of the individual interviews.

~~~
32gbsd
well I guess it all depends on where you are and the ratio of HR people to
startups

------
FilterSweep
Sadly there are too many people applying to too few jobs. So they’ll hit the
archives for CS questions that largely won’t apply to the actual job

------
xvilka
The secret is to skip FAANG and alikes. You will be surprised how many highly
paid and quite interesting jobs outside of that overhyped circle.

------
AtlasBarfed
"I have always sought to be completely honest and humble with myself and
others about my abilities."

Well, there's your problem right there.

------
winrid
There's something I read In The Company of Others by Julie E. Czerneda years
ago.

"The pay's respectible when the company's not."

------
luord
I've gotten so cynical about this that the lyrics of "razzle dazzle" resonate
in my mind whenever I'm interviewing.

------
kaveh_h
Face it, FANG companies are mega corporations. All that made them good in the
eyes of most employees vaporized when they grow much bigger and they lose
their culture. That means less autonomy for the new employees (how many
remember mythical 20% own time at Google?) and less freedom of expression
(James Damore).

If you want to be part of something special join a startup or at least a small
or mid size company made up of people that actually values your whole skillset
and creativity instead of only one aspect.

------
scarejunba
I actually really like Google's process. It's got everything I look for, as a
candidate:

* Predictability - I know what it's going to be like clearly from the beginning

* Trainability - I can become better at it

* Memoryless - They don't care that I did terribly a year ago

Of course, in the end, I didn't actually interview even once with them so
maybe I'm lying about what I like. I guess I'm one of those guys who goes from
job to job not having a whiteboard interview. Lucky me.

------
hartator
This is stupidingly hard and test for the wrong thing but how this is
dystopian?

------
christiansakai
Everytime this topic is mentioned in HN it always garnered so many comments
more than any other topic.

And so many people have rehashed over and over their positions. I did, and I
will do it again today.

Tech booming just happened pretty recently. People are going from law and
finance and medicine to software in droves. Though it is arguably that those
people better stick with law, finance or medicine than software, the fact is
that software field has lower barrier of entry, from socio-economic/financial
point of view and artificial gatekeeping point of view. Majority of people
just don't have the resources to study law, finance or medicine.

We have a gold rush, and majority of people want to improve their life, with
the least amount of effort/barrier possible.

This result in new supplies of software engineers, whether from graduating
bootcamp or graduating CS degree. All of these engineers are of varying
quality. Let's not talk about the older experienced software engineers,
because I think it is safe to point out the fact that older more experienced
software engineers are of better quality in general.

So now, we have massive influx of newbie/junior software engineering
candidates. How do companies realistically interview all of them? Knowing that
these people graduated with varying degree of skills/quality.

If the majority of the workforce are older experienced software engineers of
good quality, then companies won't have this filtering problem. They can just
give interviews by talking from previous projects/referral and call it a day.

But now we have this DS&A and take home test as well, because interviewing is
hard, and the more candidates out there the harder it becomes.

I am about 5 years into my career in this, and did interviews at a few
companies and also FAANG. I experienced take home tests, work for a day, and
DS&A. And I choose DS&A every single time because the other two sucks.

I don't have that many projects, or even side projects that I can be proud of.
I love doing hard tutorial such as learning how to do compilers rather than
doing some projects. All my github is filled with trash/throwaway code. And
for some reason I always got involved with projects that ended up being
throwaways in my previous companies, because those projects were generally
hard problems.

Work for a day, take home tests, those two are a waste of time in my opinion.
I can't do multiple of them and get competing offers. But with DS&A I can just
learn once and do it multiple times and get multiple competing offers. Not to
mention that I won't have to compete with more senior engineers that are
obviously more capable than me. By doing this DS&A game I already filtered
myself up for better.

Besides, I hate learning about framework this, framework that, technology
this, technology that, multiple times. It gets old quick. Don't get me wrong,
I love learning new stuffs, but too many of those and I just spin around in
circles learning the next Javascript framework flavor of the month. I'd rather
be interviewed about how to do recursion than being interviewed about the
nitty gritty of React vs Angular, Express vs Koa, etc etc etc.

In general I favor DS&A interviews. For those of you who are more senior than
me. Please don't do DS&A. Please stick with what works for you. If competent
people like you start doing DS&A and be good at it, then what are the chances
of people like me, or other non senior engineers for getting a job. If you
think I'm being sarcastic, believe me, I am not. I truly believe there are
people out there that can code in circles around me despite me knowing how to
recursively generate a permutation.

In general I have success in interviewing at non FAANG/Unicorn companies. I
usually finished those coding challenges in 10-15 mins, and the rest 30 mins I
just talk to them about random stuff and they ask me about previous project,
culture, etc.

However, I still haven't found success in FAANG companies. I still got
rejected, despite having solved 300+ Leetcode questions. And yes I know people
who solved 500+ and still got rejected.

Now that brings me to the things that bother me the most. I've seen, as many
of the commenters here, that there are people who got in despite not doing any
preparation at all. I thought at first those were lies, until I saw it myself,
and not just once, but twice, three, and now four times. Everytime I heard
these stories it demoralized me.

I've seen people who got into L3, L4, E4, without knowing how to reverse a
binary tree or do a simple BFS/DFS.

Why? What am I doing wrong? What are they doing right?

p.s. Don't ask me why I want to work for FAANG. I need (not just want) the
money. I have people that I support.

------
smartsystems
They need to make sure you will be obedient to arbitrary orders.

------
jvanderbot
I think this person was not rejected for their coding. They were passed over
for an MS or PhD with similar skills.

It is necessary to do well on coding interviews, but not sufficient.
optimizing for coding interviews is the wrong approach.

~~~
jophde
Wrong crushing the code interview is all that really matters.

~~~
jvanderbot
Well, maybe I've had different experiences.

------
alexebird
Thank you for writing this.

------
willberman
I see peoples' opinions here generally falling into one of two camps. The
standard way interviews are conducted are either good or bad. I think it's
important to consider both the good and bad elements, and then come to a
conclusion about what to do in order to move the collective interview process
in a better direction. To note, I've never gone through a traditional
technical interview, so take what I'm saying with a grain of salt. Let's look
at the example in the given in the blog post, _write an algorithm to find the
Kth highest value in a binary tree_. Now my data structures and algorithms are
a bit rusty, so assuming that I remember the correct definition for node
height, I believe the solution looks something like the following.

    
    
      data Tree a = Tree a (Maybe (Tree a)) (Maybe (Tree a)) deriving Show
    
      -- Assuming k=1 Means the highest node, k=2 means second, etc...
      -- Note this solution successfully puns non-positive k's
      -- to return Nothing
      kHighest :: Int -> Tree a -> Maybe a
      kHighest 1 (Tree a _ _) = Just a
      kHighest k (Tree _ (Just l) (Just r)) =
        case (lRes, rRes) of
          (Just x, _) -> Just x
          (_, Just x) -> Just x
          (_, _) -> Nothing
        where
          lRes = kHighest (k - 1) l
          rRes = kHighest (k - 1) r
      kHighest k (Tree _ (Just l) _) = kHighest (k - 1) l
      kHighest k (Tree _ _ (Just r)) = kHighest (k - 1) r
      kHighest _ (Tree _ _ _) = Nothing
    

Barring some fundamental misunderstanding of the problem (entirely possible),
the evaluation criteria is not that the solution is exactly correct and covers
all edge cases. The evaluation criteria is does the solution show fundamental
knowledge about properties that are used to classify things as tree-like, and
does it use the common idiom (decomposition into smaller sub-problems) that is
used to process tree-like data.

In my opinion, the common criticism that interview questions hold no
similarity to day-to-day software engineering problems, holds no water. Yes,
you will not directly re-write the tree data type every day in your job.
However, you deal with recursive data definitions that require solution by
decomposition _multiple_ times a day. If you are not dealing with problems
that fall under that category, then you should think hard about which problems
you see that could be framed as such because I guarantee you're missing a few.

The beauty of the tree as a data structure is that it captures a common set of
algebraic properties. Even when other data structures don't exactly fall under
said algebra, the concepts to reason about them are reused (note the early
language that specifically said "tree-like").

The point of drawing interview questions from your data structures and
algorithms course is not to test you on remembering arcane minutia from 5+
years ago but to see your fundamental reasoning skills within the domain of
computer science.

~~~
PaulStatezny
I might be mistaken (and I'm no Haskell expert) but I believe your solution is
based on a misunderstanding of the problem.

> Find the Kth highest value in a binary search tree

Your code seems to return _any_ node that is at level K. Where K is 1 for the
root node, 2 for its children, 3 for its grandchildren, etc.

But unless I'm mistaken, by the wording of the problem, it's looking for the
concretely K highest value, in sorted order. Not "highest in the tree". So if
a binary search tree has values (1, 3, 5, 8, 13) the algorithm is supposed to
return 8 when K=2, _regardless_ of how the nodes are structured. (E.g. Even if
it's unbalanced and 8 is the root node.) Because 8 is the 2nd highest value
contained by the tree.

Sounds like a harder puzzle than your interpretation...

~~~
willberman
I love posting things to the internet that end up being wrong :).

I think this is an interesting look at ambiguity in wording for computer
science terminology. In my mind, height or highest always means node height.
The term largest should be reserved for numerical measurement. See the next
paragraph for a good example.

Correct me if I'm wrong, but the k highest interpretation with an unsorted
tree sounds like a simpler problem. If the tree is unsorted, you must traverse
the entire tree, sort the result, and then you have your answer. The more
challenging problem sounds to me to be what happens when the tree is already
sorted. Interestingly, I think the solution for this problem makes my point
better than the original problem. Look at how buildHeights breaks the sub
problems down. The height (size) of a value in a node at a given level
(height) is a function of the heights (sizes) of sub-trees. I included a main
method, so you can run the code and not mentally parse it :). What's
interesting to me is the commonality in structure between the two solutions
despite the problems asking for radically different things.

Note, I probably could not have come up with this solution in the amount of
time allotted in an interview because it took a while to find a solution that
properly showed problem decomposition.

    
    
      import qualified Data.Map as Map
    
      data Tree a = Tree a (Maybe (Tree a)) (Maybe (Tree a)) deriving Show
    
      buildHeights :: Tree a -> Map.Map Int a
    
      buildHeights (Tree a Nothing Nothing) = Map.singleton 1 a
    
      buildHeights (Tree a (Just l) Nothing) =
        Map.insert 1 a lRes
        where
          lRes = Map.mapKeys (+1) (buildHeights l)
    
      buildHeights (Tree a (Just l) (Just r)) =
        Map.unions [rRes, lRes, curRes]
        where
          rRes = (buildHeights r)
          maxRight = maximum $ Map.keys rRes
          lRes = Map.mapKeys (+ (1 + maxRight)) (buildHeights l)
          curRes = Map.singleton (1 + maxRight) a
    
      kHighest :: Int -> Tree a -> Maybe a
      kHighest k t = (buildHeights t) Map.!? k
    
      main = do
        let tree = (Tree 4
               (Just (Tree 2
                    (Just (Tree 1 Nothing Nothing))
                    (Just (Tree 3 Nothing Nothing))))
               (Just (Tree 6
                    (Just (Tree 5 Nothing Nothing))
                    (Just (Tree 7 Nothing Nothing)))))
          in do {
          putStrLn $ show $ kHighest 1 tree ;
          putStrLn $ show $ kHighest 2 tree ;
          putStrLn $ show $ kHighest 3 tree ;
          putStrLn $ show $ kHighest 4 tree ;
          putStrLn $ show $ kHighest 5 tree ;
          putStrLn $ show $ kHighest 6 tree ;
          putStrLn $ show $ kHighest 7 tree ;
          putStrLn $ show $ kHighest 8 tree ;
             }

------
jordan801
=-=-=-=-=-=-=-=-=-=-=-=- Warning Heavy Cynicism Ahead -=-=-=-=-=-=-=-=-=-=-=-=

I've worked at my current job for a long, long time now. Every year or so I
decide to peak my head out from it and test the job waters. I get nearly the
same set of 4 outcomes each time. I have over 7 years of experience with
everything from front-end development to sysops, devops, and management. I've
built entire companies by myself in months. Albeit buggy ones.

I bloody hate interviewing.

Outcomes:

1\. I get rejected for messing up a programming fundamentals question. Which,
honestly stings because, yeah, I should probably be more informed. But,
currently, I ain't got no time fo dat. I'm too busy solving a bombardment of
problems like: "Hey, programmer X quit, I know you don't work with X language
at all but we need this fixed, yesterday".

2\. I spend a bunch of my precious time writing a fully functional code test,
to be inexplicably rejected. Maybe because I didn't write unit tests? Maybe
because I didn't use doc blocks. Maybe I didn't make the code reusable enough
given their imaginary scope. Who knows.

3\. They're super excited to hire me for a position I am not at all qualified
for. Usually for a ridiculously minuscule salary. I had a company ask me,
after spending 2 hours on a phone interview, to build and run their
development shop. They wanted to on board 50 employees by my 6 month mark, and
completely dismantle their overseas workforce.

4\. I'm just plain ghosted.

I'm absolutely sick of potential employers asking me why I am excited to work
with them. Well sir, to be honest, appearances and mission statements are
superficial. I am excited to experience something new. I really hope that your
shop lives up to the hype. I am excited to learn.

Take note employers. Saying pretty much anything else is either ignorance or a
lie carefully concocted over the countless hours you require of potential
employees, just to get in the door. Your interview question responses are
almost never genuine talent. They are hours of memorization. I know, because
I've asked, and answered them.

Why even require a resume? I've spent hours cultivating a bomb resume and 19
out of 20 employers, have literally no idea what it says.

Employer: "So what languages are you familiar with?" __They 're literally
listed on the resume that you required I send you, with demonstrations. The
one I customized to your company and needs. __

A different employer: "So, you don't actively work on any opensource projects,
we can review"? __No, I try to have a life when I am not working, and go
outside. I know, hiss... __

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Right now 7:23 PM on Valentines day, I am trying to speed up a program, an
MVP, that I rebuilt in a week. One that I acquired after the prior developer
got fired. One of my many, many projects. This one is particularly pesky as I
am also trying to build out another app that is due, about 23 days from now.

Send help.

------
bx32
wow!

------
allovernow
In my admittedly limited experience, there's one way to avoid such nonsensical
interviews - run away from bureaucracy. Seek smaller organizations (startups
in particular) and if you're lucky enough to have a minimally cross-
disciplinary background, you can seek out niche organizations where you'll
interview with technical specialists who'll ask reasonable questions that are
_actually related to your work_ and your interviewers won't be saddled with
"standardized" managment pleasing bullshit. One of the biggest problems I see
with modern tech (and large industry in general) is this ridiculous idea that
MBAs can standardize all processes across all departments across all
industries. This is a source of needless pain and waste - but I suppose it
keeps execs happy when they can reduce every metric to a nice little
[bullshit] number. Interviewing at FAANG is a case in point.

I've never in my life had to implement a recursive memory optimized underwater
red black tree balancing algorithm, and it's insulting to be told I'm not a
good enough programmer if I can't pass your totally contrived white board
problem. Who the hell are these people even selecting for with these kinds of
questions? Do they understand how much talent they're throwing away?

In any case, I have a strong suspicion that, aside from compensation, working
for FAANG is hugely overrated. And that's not just sour grapes talk -
mountains of red tape, processes upon processes, overwork and burnout, and
best of all, you get to spend your best years infecting society with the
cancer that is adtech.

~~~
Quekid5
I agree on small orgs, but... recommending startups is a bit iffy, IMO. DGMW,
startups can be great, but if you're just a good programmer wanting a stable
job, then that startup job is not the job for you.

However, you could be a _huge_ contributor and positive influence in a small
org... and it's possible to gain a lot of life satisfaction that way[0]. Plus,
your employer actually knows you and understands the value you bring, etc.
etc.

Yes, you probably will not earn as much as you could by indirectly peddling
ads, tracking users, or whatever, but personal fulfillment matters... at least
it does to me... and I hire people who feel the same way.

[0] It sounds weird, but studies have shown that giving people agency (as they
must be in a small org), setting their own goals, etc. has a positive
influence on their well-being and productivity.

~~~
mnm1
I only disagree with "as they must be in a small org". I only wish that was
true, but my experience says otherwise. A small company might give one agency
or it might not. Or it can do both over time. With a dozen people in the
company you'd think it'd be wise, but the latest management trends and
compensation procedures prevent it. In other words, we build what the boss
wants and have zero incentive and time to work on anything else. In fact, if
there is time, I actively avoid any tasks not delegated by management so as
not to appear like I'm working on non sanctioned things. But mostly, the time
just expands to fill the work. Or the other way around. There is zero
incentive to try to change this or do anything not scheduled as it has been
shown it'll not be appreciated but with empty words.

~~~
Quekid5
That's a very fair point. I can only speak from my own experience on this.

It's a great observation that authoritarian tendencies can probably arise in
any size of organization.

(I would advise getting out -- if you can, financially, etc. -- if you do not
have self-determination. It's incredibly soul-destroying in the long term.
Best of luck.)

------
rcarmo
This only gets worse when you’re old enough to go in, sit in a room across two
or three people and realize you have at least as much experience as all of
them _combined_ - not necessarily in terms churning out of code in the
language _du jour_ or their domain specifics, but in terms of people
management and systems design.

There are multiple kinds of dysfunction at work here:

\- When I was looking for purely technical gigs I breezed through phone
screens and automated testing only to go up against the ageism wall on the
first Skype call. Period.

\- Recruiters reproducibly drop out of the blue without a clue as to what you
actually do or your experience level. Adding “Senior” to my LinkedIn profile
measurably decreased the amount of randos that reach out on a weekly basis.

\- Puzzle-based screenings are a complete waste of time. It’s not about the
prep, it’s about the likelihood you’ll ever encounter those problems. People
are much more likely to have to address system design problems, but those
cannot be tested for by the online questionnaire cottage industry, so you get
mediocre engineers who know how to write fizzbuzz but have zero clue of how to
design an order management system from scratch or where to look for issues in
an old one.

\- Companies often don’t understand what is involved in the roles they hire
for--even if you’re a perfect match for the job description (if there is one),
the hiring team has an agenda that seldom matches it.

\- Engineering is not just about writing code. The second you start asking
questions about how teams interact or if they have a strategy for X, the
people in the room (or call) are seldom the ones that can get past canned
replies.

\- Startups tend to be extremely picky and hype-driven. The language _du
jour_, their “triple mocha with a squeeze of raspberry” Agile flavor or
someone’s pet organizational methodology (teams/tribes/packs/etc.) usually
feature prominently in senior interviews, but even VPs _very seldom_ talk
about how they manage people--just product and investors.

As a result, I’ve long stopped applying to “normal” engineering positions (and
even senior management ones at startups). I drop out of the process (politely)
as soon as I get the first hint of automated tests, ageism or VC hype, and
prefer networking and getting to know the culture first.

Even so, I’ve had a few notorious duds--I would talk to a VP, have a great
conversation, and then have “peer” discussions with people half my age that
might as well have lived inside a bubble (and had obvious gaps in empathy and
emotional intelligence), or simply have an “OK, boomer” moment whenever the
conversation steered into how they managed people growth or I commented on
their org structure.

Or I would go through the _whole_ thing and then be told that they wanted
someone at “a different career stage”, even though you ticked all the boxes,
talked to around a dozen people, and gotten consistently excellent feedback
(that one smarted a bit, because it was in a very niche field I was
particularly good at).

My key takeaway is that “vanilla” engineering jobs are most often not seen as
being long-term hires that bring in outside experience: they are fresh cogs
for an internal hype-driven, Rube Goldberg-like contraption that many tech
companies cling to and want to preserve at any cost, and the hiring process
(and lack of care in it) mirrors that.

------
_martamoreno_
Bad example really. There are many companies where you don't need to know this
stuff, Google is not one of them. You want that 350k a year, but you don't
know the basics about computer science to find the k-th highest element in a
BST, well doh. What can I say...

To be honest, this is really a super simple question and I would be stunned if
this was anything but a warmup for you, like the interviewer giving you a
simple question to get you into focus. I haven't done anything with BST in
years but still I could easily do this with a piece of paper. Back in the
days, Google was asking to insert an element in a Red-Black-Tree. Well, this
is a clusterfuck and far too specialized. But questions like those were
rightfully banned.

Yeah sure, it's not what you do all day, but not being able to answer these
questions has implications. There are many code monkey mills where you just
write some JS code to hack a webpage together and it would seriously bother me
if they would ask you such questions.

Just rethink what you really want. FAANG is not for everyone.

~~~
Infinitesimus
> To be honest, this is really a super simple question and I would be stunned
> if this was anything but a warmup for you, like the interviewer giving you a
> simple question to get you into focus.

> Back in the days, Google was asking to insert an element in a Red-Black-
> Tree. Well, this is a clusterfuck and far too specialized. But questions
> like those were rightfully banned.

Our blindspots are pretty funny. I can assure you that many people thought Red
Black trees were easy enough and if you had a hard time, their advice would
be:

> Just rethink what you really want. FAANG is not for everyone

------
trollied
> "The horrifically dystopian world of software engineering interviews"

If you actually read the linked article, there aren't really any interviews.

The OP is just getting let down by recruiters.

~~~
pinewurst
I disagree - the recruiters are forced to be the messengers of dysfunction.
I've seen some pretty reprehensible examples of this where I actually felt
sorry for the recruiters.

