
Senior Developers Are Getting Rejected for Jobs - mnm1
https://web.archive.org/web/20190514154623/https://glenmccallum.com/2019/05/14/senior-developers-rejected-jobs/
======
docker_up
I'm so tired of hearing programmers complain about how useless programming
interviews are.

I'm currently in the process of preparing for interviews. I'm almost 50. I'm
currently talking with FANG and other well-known Silicon Valley unicorn
startups so I don't feel any ageism yet. I hate it, though. But it's the
reality of the industry right now. I don't pretend I'm above it, so I will do
whatever I need to get a new job.

Yes, I hate them with a passion. Today I had a phone screen with a company and
I was so nervous, I think I'm suffering from PTSD from how completely random
the question will be, and how random the evaluator's perception of me will be
based on said question. But I accept it for what it is. I'm auditioning for a
role as "senior programmer", just like an actor would. That's the reality, and
if I'm going to get myself a job that pays ~$400,000/yr in total comp, I will
jump through whatever hoops I need to.

The OP was saying he was doing one programming question per week. Really? I'm
doing 5 per night, and even more on the weekends. As I get closer to onsites,
I'm going to be studying 8 hrs a day on weekends and leaving my kids to my
wife.

~~~
Brian_K_White
The reason to complain about a bad thing, is because in the entire history of
the world, nothing ever got better because people accepted things as they
were.

You benefit right now, in countless ways, from past versions of those exact
same people you are so tired of hearing. Awesome gratitude, and way to pay it
forward.

~~~
ctvo
And what's your suggestion to make it better? Giving us the definition of
complaining... well thanks.

There is a correlation between these horrendous interviews and quality of
candidates otherwise, if they were full of false positives, we would stop
doing them.

The problem is they produce false negatives and how do we go about fixing
that? Is it even that big of a problem? These are all debatable. We haven't
hit the point where hiring is SO expensive that we can't handle false
negatives, we may in the future, then we'd work much harder at addressing the
current situation.

~~~
pellucidar
But hiring IS crazy expensive because of the hours of effort spent by existing
employees on the hiring side of the process, and the difficulty of finding
"good" candidates who are willing to spend those hours plus even more of their
own on the being hired side.

In other industries people just don't talk about spending 6-8 hours a week
every week interviewing applicants--not even in high-turnover industries.
That's an incredible cost, but it's not counted as a line item, just yet
another annoyance of the annoying hiring process.

~~~
ctvo
Agreed it's expensive.

My claim is it's not expensive enough __yet __for decision makers to actively
explore alternatives. Will it get there as supply of quality engineers
decrease? Maybe. Probably.

In my experience the companies I worked at tracked it very well, and we knew
exactly how many hours were spent on hiring related work and how much it was
costing us. We still used the current industry standard whiteboard, full day
approach.

~~~
pellucidar
Yes, but those hours aren't actually a line item when salaried employees do
it, so the expense isn't as visible as other expenses.

I think the perception of a lack of quality engineers in the market is just a
symptom of the problem: the expense in time and annoyance of changing jobs and
the risk (or experience) of becoming a false negative reduces job mobility and
heavily slants the resume stack towards the true negatives rather than the
experienced people who would be more actively looking around in a saner
market.

I haven't heard of a better explanation for the notion, seemingly unique to
software, that so many people floating around the industry are so abysmally
unqualified to work at another company in the same industry. There are
historical factors, but they don't seem adequate to explain this perceived
fraud problem.

------
Dirak
Contrarian opinion, but I wouldn't want to work with anyone who couldn't pass
a technical screening, and I wouldn't trust any architect who couldn't
implement their own designs. Wrangling APIs and knowing which technologies are
hot right now don't make a senior software engineer (emphasis on engineer).
Maybe at certain companies it does, but if you're building any sort of product
you need to be able to DFS and BFS and sort and map from muscle memory.

So I don't understand why people think there's a disconnect between Leetcode
problems and day to day work. Even in web development, the fundamental skills
that Leetcode tests for come up daily. Something as simple as manipulating the
DOM, for instance, requires that you know about tree data- structures and
algorithms.

~~~
WkndTriathlete
Technical screening is purely a waste of time if you are not sitting right
there with the applicant watching them write the code. (How do you know they
wrote the code, otherwise?)

And if you are sitting there watching them write the code, it's still a waste
of time. An applicant's relative level of skill can be ascertained in five
minutes of talking with them instead of 30-60 minutes of watching them write
FizzBuzz or something equally useless.

Hiring in literally _every other_ engineering discipline works this way. New
hires include a 90-day probation period just in case someone can talk the talk
but can't walk the walk. Good software shops function similarly.

------
daenz
I've got an Anki deck that I use for prepping for interviews. It covers a lot
of algorithms, dynamic programming, complexity, etc. I open this deck every
few years, whenever I need to interview, and otherwise never use it.

Programming interviews are some weird cultural hazing ritual that apparently
you just have to do until somebody figures out a better way and it catches on.

~~~
wonder_er
So glad to see a plug for Anki!

I use it quite a bit, for spoken language learning, programming language
learning, and more.

I helped a friend get set up for Anki, and it was quite a pain, so I wrote a
guide to using Anki for programming practice.

If it's helpful to anyone else, cheers!

[https://josh.works/anki-spaced-repetition-system](https://josh.works/anki-
spaced-repetition-system)

------
dogismycopilot
We're hiring for around 17 Senior or Principal level software engineers, and
we don't have any stupid tests. We are Rally Software, in Broomfield, CO. Now
we're owned by Broadcom.

[https://broadcom.wd1.myworkdayjobs.com/en-
US/External_Career...](https://broadcom.wd1.myworkdayjobs.com/en-
US/External_Career/job/HQ---Broomfield-CO/Senior-Principal-Backend-Software-
Engineer-with-Rally-Software_R006268)

~~~
p1esk
Are you offering $400k TC?

~~~
dogismycopilot
It's certainly not bad. The stock is fantastic, my annual bonus can be over
20%. So, with healthcare, unlimited PTO, an onsite gym and cafeteria, etc,
it's not a bad deal at all.

Yes, the housing in the immediate area is expensive (Boulder County, CO), but
there are many more affordable places to live within commuting distance.

~~~
p1esk
What is “unlimited” PTO?

------
mimixco
This is seriously f'd up. When I was hired by IBM years ago, they also had a
test called the IPAT (Initial Programming Aptitude Test) but, guess what?,
there was no programming in it! Instead, the test was designed to see if one
had the basic reasoning and logic skills which would be necessary to solve a
wide variety of programming-related problems -- not one stupid, specific
problem in a particular language. That's just asinine.

Making sure that developers have the "needle in a haystack" solution that
you're looking for almost guarantees that you'll weed out the most talented
folks -- the ones who are programming generalists that can reason about and
solve any kind of programming problem.

~~~
Circuits
It's sad, the problem is that the people creating and implementing these tests
are doing it because their lazy and ignorant. They know, given a straight-
forward interview, that they would be incapable of determining if the
interviewee is capable or not. They also want walk-on developers that require
little to know start-up/training capitol on their part. They want and want and
want and they don't know what their missing with the weeding out process but
hey ignorance is bliss right? Right, except when you find out the only people
who can pass these tests are people high on the autistic spectrum. People who
most likely will not make it through the face-to-face interview process or
people who cheat.

------
fieryscribe
I used to interview Senior Devs when I worked for Amazon. It's strictly part
of the interview training process _not_ to ask purely algorithmic questions
(and yet some still do). I chose not to and it gave me much better data
points.

I chose my next role because they didn't ask me those questions and instead
asked how I'd tackle problems.

Engineers have enough market power to change this if we choose. For some
reason, we just choose not to.

~~~
Frost1x
I think it's a character and pride issue.

You know you can solve such problems (sometimes even enjoy them) but the
conditions you're solving them under aren't at all remotely reasonable. Giving
up admits defeat and what makes you a skilled engineer, part of your
identity/character, is that you rarely, if ever, give up on a problem and love
a challenge.

I think we should view this as a different challenge all together instead of
the one presented. Let's understand the presented challenge is silly and look
at the problem as a need to change the presented challenge to something all
together different utilizing our skills.

------
apo
> You now have a larger pool of great developers you can add to your team but,
> on the downside, this has drastically increased the number of applications
> you have to sort through in order to find the right candidate. Could you
> imagine sifting through 500 applications for a single position?

Maybe the problem isn't 500 applications, but rather an organization that is
trying to hire too fast by not being specific enough to hiring personnel and
services. Shotgun approach is a very effective way to generate spam.

Regardless, any job for which an automated online test can reliably be used to
filter candidates is a job that's at most a few steps away from automation.

------
wolco
I don't think senior developers are in demand anymore. There are too many, and
senior means 3-5 years at many companies so the pool is even bigger. The
number of developers required is getting smaller as frameworks/serverless
are/is getting bigger. The importance of their work has been reducing..

------
probinso
I think that Engineers are forgetting that practiced skills are easier than
experienced skills. being tested on a bunch of weird-ass algorithms and data
structures requires an experienced programmer with a traditional education
perhaps a few short weeks of studying.

this doesn't make these problems hard, it just makes them inconvenient and a
poor measure.

there are only a handful of Advanced algorithms that I have had to implement
from scratch in industry. data structures on the other hand are usually the
bottleneck where I find myself needing to be more creative.

this is possibly the same category as white boarding, this is not hard just
inconvenient. I would even argue that whiteboarding is much more necessary
than algorithms problems, as a measure of ability to communicate over a
technical Topic over a live edited interim document.

the biggest problem against these algorithms and data structures tests, is
that they discriminate against those without a traditional academic
background. if your company does not often enough run into inability to solve
these problems, then you're testing for the wrong thing

two things I have found useful in this space, for every interview I ask in
advance whether I'm going to be asked to these questions, and I am very
specific about what I have experienced in. If any questions are asked outside
of my experience I can lay claim, and reference my resume for a lack of note.
Every time that I have expose myself as unexperienced in a topic during an
interview, the interviewer has changed the question for me

------
wyclif
I found my way into programming via a civil engineering background (lots of
GPS and GIS), but I used to be a sysadmin. I also can't invert a binary tree
on a whiteboard.

Oh well, I guess I'm not employable! (I'm currently a remote web developer).

~~~
commandlinefan
Well, since nobody actually knows what "invert a binary tree" means, you've
got a reasonable excuse...

~~~
probinso
I always assumed this meant

Allocate an array sized by the number of leaves. Store all leaves. Reverse all
pointers. Former head points to null.

It's a dumb data structure

~~~
marsrover
I believe it's more along the lines of just traversing a tree and setting left
nodes to the right nodes and vice versa.

~~~
throwaway55554
It is. But why "invert" and not "mirror"?

~~~
marsrover
I agree it's ambiguous wording.

------
dcpl
Do most companies do this? My impression was that it's only the FANG-like
companies and others centralized in SV.

If you want a specific type of company, you're gonna have to play the game.

~~~
CharlesColeman
> Do most companies do this? My impression was that it's only the FANG-like
> companies and others centralized in SV.

Also maybe FANG wanna-bees that are cargo culting interview practices.

------
evo_9
Funny I happen to be looking for a new job right now and have run into the
programming challenge just last week. In my case I passed and now tomorrow I
have my next interview with the them. This time I'm doing a web-ex with two
developers who want to talk shop and take a peak at a 'recent side project'. I
work with 10 other programmers and none of them have side projects to show;
fortunately I have a few including one that makes a little bit of money.
Should be fine but you never know what kind of random stuff they toss out and
expect you to know.

Before this one I had a company ask me to write a sample iOS app with a list
of data + a second page with specific validation rules for the form. I wrote
that 3 weekends ago and sent it in, still haven't heard back from them, I
guess they get 100's of applicants a week (it's a full remote job).

------
notacoward
At 54, I work at a FANG company (after >25 years mostly at startups and a
couple of more traditional big companies). I mention that only to establish
that I've run this gauntlet successfully, so I know it's possible.

Sure, these kinds of interviews have problems, some of which might
disproportionately affect older programmers. Sure, our industry (and FANG
companies in particular) are rife with ageism. It's usually not overt, but I
could practically write a book about the "soft" ageism of work environments
and evaluation processes that disproportionately affect older workers (high
overlap with those that affect workers with families or with disabilities
BTW). There's definitely reason to complain.

That said, there's also some question about how valuable older workers are in
newer companies. I don't particularly suffer from imposter syndrome, but I do
sometimes wonder about the value of my experience. Sometimes having known
other ways of doing things is an obstacle. I find myself fighting tools that
have been built with a different philosophy. I find myself at odds with
coworkers who have different views about things like designs, tests, and code
patterns. Even if I'm "right" these minor conflicts are sometimes more of a
drag than they're worth. There's value in having people be on the same page. I
adapt as best I can, as well as anyone I know, but a lot of things still don't
come as naturally to me as to the kids two levels "below" me who grew up with
all this.

Sure, having _some_ folks like me is good both because of the lore we carry
and to prevent monoculture, but _how many_ at 1.5x the cost of our younger
colleagues? Not too many, I think. The world has always needed fewer senior
developers than junior ones. The reduction in demand has always been faster
than the reduction in supply, which is why so many have always "graduated"
into other roles (especially management) instead of remaining individual
technical contributors. That is only becoming more true as the industry grows
and technology accelerates. Nobody can rest on their laurels. The onus is on
the individual to make themselves _more_ competitive as they become more
senior.

------
b_tterc_p
I have used online tests for programming ability. I like them. The ones I have
used are not hard, and are easy to look up the answers to in documentation
(encouraged!). It’s a great way to filter out people who have no idea what
they’re doing. I’ve gotten middle scores in tests for languages I don’t use,
and I think that’s great. You cannot differentiate top performers with these
kinds of tests. You can successfully weed out people who have no idea what’s
going on. You should be able to pass on baseline individual competence if
you’ve got it.

------
HRJ7
Is there a market for a licensing body for this stuff? If you believe what you
read on Blind, the top companies all test the same material, e.g. leetcode,
CTCI, design system primer, Designing Data-Intensive Applications, etc.

Why can't I prove that I passed this screen once, then take a piece of paper
to each of my FANG interviews and skip the technical part. Then maybe retake
it every 5 years if you're interviewing.

~~~
Frost1x
This is the structure the industry appears to be begging for with their
current processes.

Professional licensing, unionization, and or startups that directly compete
with them that avoid this hiring trend entirely.

------
zimpenfish
Last interview I did involved coding up factorial, solving the 25 horses logic
puzzle, and debugging some intentionally awful code (that no-one would ever
have written in the first place.)

As soon as the logic puzzle came out, the job was a no-go for me.

~~~
AstralStorm
The answer is to first say you're walking, then ask the interviewer to solve
it in 5.

 _You should not be asking questions you 're not qualified to answer._

The programming tests are a variant of this. If your own programmers who do
the job right fail at them, you should skip them in hiring. It means the test
fails validation and you will get a number how much it fails. If you accept a
test with 2 in 3 failure rate, then do not complain nobody is there to apply.

If the test is aspirational, you have to still verify how successful your
people are in solving it.

------
probinso
I see a lot of talk about 400k a year. That's a silly number.

------
jonathankoren
Coding exercises are just coding exercises. Sure some maybe stupid, but most
are perfectly fine. I’ve been surprised by both who passes and fails them. And
yes, I know good engineers I personally worked with and would vouch for fail
them. They are an imperfect test, but usually not an unreasonable one.

Occasionally (usually at smaller companies), you’ll get some exercise that’s
completely inappropriate for the time allocated, or requires knowing some
unobvious trick.

One exercise I think of was the time a startup company you know, asked me to
write both an IRC server and client in like an hour and a half. The
interviewer and I spent a surprisingly long time googling how to open up a
port in Python (something I have never had to before or since, and something I
hadn’t done at all since maybe 1999), and trying debug terminal settings about
why terminal was receiving things twice. None of that is related to the
problem at hand, and all could have been solved with a skeleton. Needless to
say, this went poorly, and I wasn’t very impressed with them either.

However, the only interview I ever refused was with HomeJoy. The interviewer
said, “Why don’t you come and spend the day with us, and wow us with what you
can do with our data.” Seriously. “Wow us”.

No. I’m not going to spend 8 hours on something completely ill defined,
subjective, and biased towards a meaningless visualization. It’s not a serious
interview, and proposal confirmed my impression of the company form the phone
screen.

~~~
commandlinefan
Yeah, that's kind of where I am with all this - if you're going out of your
way to try to stump me, you'll probably succeed, but you're probably going to
stump most everybody else, too, and end up not hiring anybody.

~~~
jonathankoren
At a previous job, we were interviewing people, and my manager at the time
came up with some interview question and would fail people who didn't get it.
I don't remember what it was exactly. You would go through some data multiple
times, and calculate some answer. If you were somewhat clever, you could do it
in two passes. But there was a trick, where you could do it one.

About half the people tested could do it in two passes. I never saw someone do
it one. I told my manager his criteria was bullshit and he should stop
expecting a one pass solution for a passing mark. Of course, he got all up in
arms and said I was stupid for saying that. We grabbed another person on the
team, and him do the question. He got a 2-pass solution, and couldn't see the
1-pass solution. So my manager started to explain it, and his explanation was
going nowhere. Eventually, we got the entire team around looking at a
whiteboard listening to him to try explain this 1-pass solution. Fifteen
minutes and seven engineers later, he succeeded, and unironically declared, "I
told you it was simple."

------
mooreds
I think the answer is, use your network. Contact people you have worked with,
or people who have worked with people you have worked with. This is another
sort of credibility beyond that of a programming test (and covers some of the
areas that a test can't, like ability to deliver and communication).

That is what worked for me in my last job search (1 year ago).

~~~
BlackRing
Programming tests are what generally have me shying away from finding another
job. It really makes me feel like I'm back at school trying to prove myself
for a test, when in fact my portfolio on github or whatever I've included with
my resume to the hiring/hr/interviewer should suffice.

But a whiteboard test? It's almost insulting.

~~~
calciphus
Problem is that against many other people, most of the hiring board doesn't
know if you or some resume-stuffing placement service actually did all the
work you said. Plagerism and faked credentials are way more expensive to susse
out than an hour or two interview.

------
fullshark
Agree with the conclusion, this is just the way it is and will be for the
foreseeable future.

------
cloudartisans
Just wanted to share some thoughts about my recent interview experience at
Amazon (East Coast). I haven't been looking for a job, but two friends work
there and recommended I interview, so I thought, why not. Since I haven't
interviewed in many years, I figured at the very least it'd be good to see
where I/the industry stand in 2019. I interviewed for a L6 SDE, a relatively
senior role when you're an outsider, from what I understand.

I have a CS degree from a top school and 20 years of experience. I code every
day and have had a good career, full of learning and working on completely
different things.

I had 6 onsite interviews, two of which didn't count (lunch and the one with
the 50-person group overall leader, who I had no idea I'd be meeting with and
was floored to have been given the time to do so).

While I aced the leadership principle and system design questions, I
definitely struggled through two difficult CS whiteboard questions.
Unfortunately, my worst interview was with the bar raiser, so I wasn't
surprised when I got rejected.

As practice, I solved about 3 dozen practice questions on HackerRank/LeetCode,
but in hindsight, I should have solved 300. Rust definitely plays a role... I
would have done much better on these questions had I been I was fresh out of
school, but then I wouldn't have done well on the leadership principles, so
take your pick ;)

As much as I dislike whiteboarding, I understand the top companies' point of
view. They have a handful of hour-long interviews to see if you can do the
work, so it was up to me to use this time wisely and impress them. I did my
best on that day, but it wasn't good enough. Let's say it wasn't a good day
for me and I can do better. They don't know that--they can only judge what
they've seen, so the decision is fair on their part.

I'm surprised at all the pushback from a sizable portion of software engineers
on HN who feel "disrespected" by these interviews. I think about it this way--
if you're a building contractor with some years of experience, shouldn't you
be able to whiteboard the plumbing design of a multi-story building, the gauge
of several electrical circuits that run devices with different loads, or
diagram exactly where the fire/CO2 alarms are placed throughout a townhouse?
You absolutely should, and if homeowners "interviewed" potential contractors
like these companies interview us, there wouldn't be riff-raff doing shoddy
construction work. The same way there shouldn't be shoddy civil engineers
building bridges, etc. So, I believe fair is fair and even if I think I'm a
"false negative," that's much better from Amazon's point of view than a "false
positive."

I remember my high school track coach telling me "you have the right to train
harder than your opponent," and that still resonates with me. If you really
want the job, study harder and go get it. That's what I will do if I decide to
interview at a top company again in the future. And I am married, with a young
child, so I do understand that it is hard. But a top job should not be easy to
get. Because then it would be a common job.

------
0binbrain
From my perspective, the tech hiring process is still mostly broken and cold
hearted. I don't think hiring companies are specifically discriminating
against older developers though. I think its just difficult to leave the
candidate feeling respected after passing. I'm not 100%, but I imagine the
reason the author was passed on probably had more to do with other things than
being senior. You'd have to be stupid to pass on a solid developer that was a
good fit just because of age or (reasonable) salary requirements for being
senior. That's not how a company wins.

Recently, we hired several new developers which I lead the effort on. I had
(mostly) free rein on hiring so I set out to fix things I felt were broken
based on my experience as a candidate in the past. Following are my major
complaints I have about the tech interview process.

* Most coding exercises I've been giving were mostly impractical BS. * Coding exercises are often used as an easy scapegoat rather than a true measure of skill. * There were several instances where I thought the coding exercise was in place solely for the interviewer to demonstrate their wit. In one case, after embarrassingly fumbling on the whiteboard for 30 mins trying to explain an advanced dynamic programming algorithm that I threw together, I watched as the interviewer smugly walked through the answer seemingly to showoff how much smarter he was. He had clearly spent hours practicing and rehearsing the answer. * Companies mostly fail at giving respectful reasons for passing on the candidate. * Companies focus too much on specific technologies and stacks vs capability to ramp up. * Good fit is underrated. I would much rather have a mostly capable developer that has a positive can-do attitude than a poisonous genius. * A college degree is an accomplishment. There are other ways to reach your goals and achieve competency. I have a masters in software engineering. I know of 1 or 2 other developers at least that only have high school degrees that were as capable as me maybe even more.

We are finished with our hiring process and I like to think it was somewhat
better than my past experience. We split every interview up into 3 parts.

1) 30 minute phone intro 2) Untimed take home programming exercise because
nobody develops well like this [https://cdn-
static.denofgeek.com/sites/denofgeek/files/2/95/...](https://cdn-
static.denofgeek.com/sites/denofgeek/files/2/95/swordfish.jpg) 3) 1 hour
follow to programming exercise (must explain submission in detail)

Here are my takeaways from our process and how we tried to rethink the
process.

* Its actually hard to properly follow up with every single candidate with reasons you are passing. Doing it in a timely and respectful manor is also hard. I wish I had done a better job at this. * The coding exercise we provided was practical and gave us everything we needed to know about the candidate programming level. * The exercise was provided via github. It had 3 steps, each of which built on top of the previous, simple, medium, harder. * After the exercise the candidate was asked to explain the exercise back to us as if we had no prior knowledge and were not techies. Then explain the technical implementation. * Write at least 1 test case for each step because our actual code is heavily tested. * We gave the candidate at least a full 24 hours to complete and could request more if needed. Its more important to get the answer right than to rush it. People work at different paces. I'm personally a slow developer because I like to take my time thinking through everything. I like to think I usually get it right at the end of the day. That's how we write software, correct is better than rushed. * We valued curiosity and honesty. We devalued nudging experience. Admit when you don't know something. It probably won't majorly count against you unless its core to our project. * Consistent clean code that is readable is very important.

------
rossenberg79
My main problem with programming interviews is that I can’t use external
references to do them, which is totally not how I work. Even if I know how to
solve something off the top of my head, I generally do a search to make sure
there aren’t better ways of doing something that I don’t know about, and also
to build confidence in my chosen solution. This is how I have discovered most
best practices over my career.

If I’m given a task to solve some weird algorithmic CS problem, the first step
would be to go to google and research the problem. If it’s solved, I implement
that solution.

When there is no solution, I will put pen to paper and work it out myself. But
that could take an unpredictable amount of time, and doesn’t help if someone
is constantly watching me work or forcing me to explain what I’m thinking,
because I think much faster than I can explain, and some lines of thoughts
lead to dead ends, which can make people grow impatient with pointless
explanations of things that will never work.

Of course, in an interview you can’t just use Google to solve everything,
because interviewers will snigger and say “tHiS gUy DoEsN’t KnOw sHiT”, never
mind that this is probably how 99% of developers work given the amount of
questions and code reuse that is out there. It’s just not realistic.

