
I spent three months working full time to get a job - whalesalad
http://kolesky.com/datums/job-search/
======
mr_tristan
My current company used a "homework assignment" and they bought a lot of my
trust with it.

1\. The "assignment" took me about 4 hours, which they expected and told me
off the bat. 2\. It involved mostly relevant code with 1-2 wrinkles that were
not odd just not everyday sorts of things.

For the proceeding interview, I was able to sit with 3-4 engineers for 1-2
hours really just diving into details about my experience and their processes,
etc.

So if I could offer advice it would be to find a "homework problem" your
existing crew could build independently in 4 hours or so. As in you've
actually had more than 1 team member attempt the request, and they did it in
about 4 hours each.

This was actually an interview process I didn't mind. I have 15-ish years of
experience doing development. I can spare half a day for a prospect no
problem. It was actually kind of fun.

4 hours seems to be a good "sweet spot". You can ask something sufficiently
technical and oriented to the daily work without being a bore. And when the
interview comes around, you can make sure it's not some ego-bound contest,
more of a conversation.

~~~
lbatx
At my previous company, I was the hiring manager and gave a homework
assignment that was targeted a little shorter than you describe, at right
about 2-3 hours. I was clear upfront that it would take about that long,
though if you wanted to take longer, you could. Within reason, I didn't hold
the time against the person if they took longer.

The crazy thing was that over half of the applicants that passed a resume
screen and phone interview could not complete the homework assignment. Over
half. Some couldn't get it at all (either gave up or had compile errors), some
got it to run but it didn't work, a few got it to mostly work but their
programs had serious bugs, and the last few actually got it right.

The assignment was to read a file containing a list of numbers (some formatted
incorrectly, so there was some very simple parsing logic involved), call an
API using each correctly formatted number as a parameter, and store what the
API returned to a file.

I'm still shocked over half of developers couldn't accomplish that task. Makes
me wonder what they were accomplishing in their existing roles.

~~~
vinhboy
Thanks for sharing. I think this is a good data point to prove that most
people will not cheat on their take home.

There is no incentive to cheat. Why would you want a job you are not qualified
to do.

From your experience, it sounds like these are good tests, because it's
screening for qualified candidates, unlike the phone interview.

~~~
matwood
I don't even care if the person 'cheats' because I'll figure it out when we
discuss the solution.

~~~
avn2109
This has happened at my company. We give a similarly near-trivial hw problem,
and sometimes people come in and literally "cannot remember" any single thing
about the assignment, including the names of the columns in the data or the
approximate objective of the HW. This is after performing plausibly well on a
phone screen etc.

------
StevePerkins
I know that "homeworks" aren't very popular on HN or Reddit. However, when
job-hunting I have infinitely greater respect for companies who use them,
rather than sophomore C.S. whiteboard exercises.

As imperfect as ALL technical recruiting styles may be, at least a short
coding assignment (i.e. < 4 hrs) is halfway-related to the real world. I have
written code against a set of requirements nearly every day of my professional
career. Outside of the interview context, I haven't balanced a red-black tree
since I was in undergrad over 15 years ago. Frankly, whenever I hear people
favoring the latter over the former, I always assume that it's just because
they're fresh out of school themselves.

Yeah, doing dozens of homework assignments for multiple companies could be a
massive time sink. However, I've almost universally felt like I wasted my time
when going through the interview process with companies who _don 't_ use them.

Perhaps my perspective is a bit colored, as I'm far enough along in my career
that I can be choosy about which companies I invest time in. I only talk with
a dozen or fewer companies in each job search, and so I won't do a 4-hour
homework assignment unless I'm already interested in working for you. If I
were closer to entry level, and therefore had to go through the process with a
_hundred_ companies to land an offer, maybe I'd have a different opinion.

Regardless, the original post here is some entrepreneur, writing a small novel
about his lengthy process of figuring out which job title to seek at a real
company ("CTO"? "VP"? "Architect"? "Principal"?) Of course it took him 200+
hours to get a clue.

~~~
colechristensen
If you're not willing to pay me on the order of $100/hr to do your homework,
I'm not willing to play your recruitment game.

My time is valuable and if an employer isn't willing to give equal effort in
the interview process, I'm not interested. Also I'm not particularly
interested in a workplace – especially a startup – that insists on this in a
recruitment process. It leads to only hiring employees who are willing to play
the game which is much more likely to exclude people who want to live lives
outside of their job and fosters a culture of obsessive overwork as well as
not having the diversity of opinion/demeanor/background/etc. which is valuable
in a healthy workplace.

If you want to bring me in and spend a day with me talking and working in your
office, fine. I won't, however, spend 4-10 hours working on a problem for you
while working at the job I already have and doing the rest of life.

~~~
bit_logic
And so playing the game of spending weeks studying CS problems and doing
leetcode.com is somehow better?

~~~
throw_away_777
The thing is, the companies giving homework assignments still go through the
regular onsite interview process. So it really is just an added burden of
stress and time on the candidates. Arguably studying CS problems also helps
job performance, though probably not as much as it could.

~~~
quanticle
That's not always true. The best interview experiences I've had were at
companies where you were given a homework assignment, and then invited on-site
to talk about your solution for that assignment. That's not at all comparable
to the standard Apple/Google/Microsoft/Facebook process where you're expected
to come in and solve some graph theory or dynamic programming problems on a
whiteboard for 4-6 hours.

I would much rather do a homework assignment and then come in and have a code
review or design discussion about my solution than do the standard process.
And, I would argue that it gives the company a much better look at my skills
and aptitudes than the whiteboard interview. I have never once written a
dynamic programming algorithm from scratch, in 11 years of programming. I have
implemented graph theory algorithms only a handful of times. But create a
relatively basic piece of functionality, and then justify my solution in code
review? I do that literally every day, and sometimes more than once per day.

I understand that writing code for a homework assignment can be seen as giving
the company I'm interviewing for "free labor". But, as others have pointed
out, from the _interviewee 's_ perspective, there's not a huge distinction
between spending 8 hours cramming _Introduction to Algorithms_ and _Cracking
the Coding Interview_ versus spending 8 hours making a website using Django or
Ruby on Rails (to name two interview tasks that I've actually been presented
with). Frankly, I was much happier writing the websites, as it seemed much
less pointless than memorizing how to write Floyd-Warshall all-pairs shortest
path in Java on a whiteboard.

------
rguzman
> Use homework assignments to assess the candidate’s engineering skills

while homework problems can be better than in-person interviews, they can also
be a lot worse. for one, because they are NOT time-bound. secondly, they are
much more difficult to setup and evaluate: do you provide a spec? code to
modify? third, asking people to do work for free in order to explore the
potential relationship is a big ask. lastly, they are very time-consuming for
the company.

in grad school i learned the hard way to always ask for in-class exams instead
of take-homes :-). time and scope constraints can be favorable both for the
company and the candidate.

> Enough with the graph traversal problems.

the point of asking graph-traversals and similar algorithms questions is not
that they are the relevant job skill. it is that they are a way to gain
information about the candidate's problem-solving ability in a limited amount
of time. unavoidably, these questions test for speed and familiarity along
with problem-solving. that makes them a lot less than perfect, but i've
generally found them valuable.

~~~
tyre
> asking people to do work for free in order to explore the potential
> relationship is a big ask

Asking to work somewhere without demonstrating that you can do the work is
asking a lot. Unfortunately, job history alone is not enough to weed out
people that cannot program (let alone well.)

> they are very time-consuming for the company.

Not if you implement a simple test spec or scoring system. We're engineers!

> the point of asking graph-traversals and similar algorithms questions is not
> that they are the relevant job skill.

So don't ask the generic questions. Ask someone to implement something that
they would need to do on the job. Obviously don't ask them to implement a
feature that takes 12 hours, but a basic screen that is a snapshot of 45
minutes of on-the-job experience isn't crazy.

We also do a take-home exercise first to see how you think without us staring
at you. Day-to-day at Seneca Systems we aren't staring at you, so it feels
more relevant.

~~~
thaumaturgy
> _Asking to work somewhere without demonstrating that you can do the work is
> asking a lot._

Which other professions have this attitude? I've either worked or supported a
pretty wide variety of other jobs, and I can't off the top of my head think of
a single one that does.

Even if some examples are brought up (and I'm genuinely interested in what
they'd be), it's far from the usual approach in most hiring situations.

~~~
adevine
Huh? Your answer surprises me, as I can think of tons of examples. Designers
are often asked to provide a portfolio to show the work they are capable of.
Same thing for photographers. In a previous life I was a ballet dancer, and
the whole purpose of auditions is to demonstrate that you are a competent
dancer.

I generally prefer an existing portfolio of code (e.g. github repos) to see
the kind of code someone produces, but if you aren't able to show some fairly
extensive examples of your work, homework is usually a bunch better assessment
of your skills than what can be accomplished in a ~45 min interview.

~~~
thaumaturgy
Fair. I should've thought of designers and photographers. Ballet makes sense,
since there are trials for prestigious orchestras and the like, but that isn't
something I knew about.

When I wrote my comment, I was thinking of the medical profession, dentistry,
auto & other mechanics, appliance and other device repair, construction
("there's a pile of lumber in the back, you have an hour to build a shed and
then we'll consider hiring you"), plumbing, civil engineering ...

~~~
adevine
Most of those other professions you listed have much more meaningful and
standardized certifications than software. A board certified cardiologist has
already demonstrated real proficiency by going through the process to get
certified. In software, the whole reason for these complicated hiring
processes is that no one really trusts software certifications, and even
company pedigree is not always a reliable signal.

------
ryandrake
> If you don’t fit their mold (“We need a Javascript engineer with 5 years of
> experience writing full stack consumer-focused applications.”), they won’t
> know what to do with you

This is the truth and it hurts. Take a company with 20 job openings, each of
which you are probably semi-qualified for, and could see yourself doing. As a
candidate, you're limited to applying for one of them, and if you strike out,
you're back to square one--often below square one because companies make you
wait N months before applying again.

I'd love it if a company were to say, "Hey we're going to pass on you for this
job in Division X but you know you're smart and Division Y's role is a MUCH
better fit for you--why don't we hire you for that?" I've never seen this
happen in my life.

Try talking to any company's recruiter and say, "You know, I specifically want
to work for your company but am not sure what the right role is. Why don't we
do an interview and then determine where the best fit is" and watch their
brains explode. Nobody does it that way, but wouldn't it be so much better?

~~~
madamelic
>I'd love it if a company were to say, "Hey we're going to pass on you for
this job in Division X but you know you're smart and Division Y's role is a
MUCH better fit for you--why don't we hire you for that?" I've never seen this
happen in my life.

I've had it happen twice (almost 3).

I just find a company, look through the listings, find a job I like then send
an email explaining my qualifications and my interest.

I think it works well if the company is small and roles are fairly undefined
("You aren't an exact fit for this, but we want your skills for something
else")

~~~
seanp2k2
I've also seen this happen a few times, and it's happened to a few of my
friends as well. Google does it a bit differently and makes you pass their
gauntlet of interviews to ensure that you're totally overqualified for any
position you end up in. Once you get hired there, they find a spot for you,
but many many engineers there are super overqualified for what they end up
doing. They end up turning away many qualified engineers because they're
Google and have enough applicants anyway. If you're not Google or Apple or
Facebook, you probably can't afford to do the same thing.

~~~
api
I've wondered if this might not also be a strategy to drain the labor market
of talent that might otherwise work for a competitor or found a competing or
disruptive startup. There is a limited amount of good engineering talent.

------
manish_gill
Homework assignments suck. I was once asked to basically create a clone of
Yelp in a week (during which I was working full time). I would rather take a
full day off and go interview on whiteboards - come at me, algorithms. What I
do not have time for, is setting up an entirely new project and work on it in
my space time to impress one dude that will be useless in a few days.

Edit: Why are people scared of whiteboards interviews so much? Don't you use
them every day to map thoughts out, working with your colleagues etc etc? I'm
not saying some questions are (used to be) absurd - the Google/MSFT manhole
thing. But why is it so scary to talk about a linked list, a graph traversal
algorithm etc? Most of this is stuff that's taught in basic CS classes.

Sorry to sound condescending but it almost feels like that as technology
spreads and more and more people come into the field who haven't actually
studied proper CS, they're blaming the system instead of trying to learn.

~~~
lettersdigits
> I was once asked to basically create a clone of Yelp in a week

That's just unfair, inconsiderate and unsustainable, and is also a red flag
(ie: I would not go to that company).

Giving up a week of your life for an interview ?

and for free ?

And most importantly - what if ALL companies did this ? you would have to
spend months working from home, for free, just to get to the next level of the
hiring process .

I don't know what the solution IS, but I know for sure that it IS NOT a 1-week
work-from-home-for-free task .

(edit:formatting and some grammar)

Edit2: people will actually pay good money for a yelp (or craigslist/etc/etc)
clone on places like upwork. And they asked you to do it for free .

~~~
andai
You just gave me an idea.. you could actually run an entire company on nothing
but free work by candidates doing "homework assignments"...

~~~
lettersdigits
:)

it is probably something like : 1\. go to upwork

2\. find a 2-3 hours task (eg: scrape entire site [sitename].com, design a
logo etc. etc.

3\. give the same task to 5 different candidates

4\. choose the best one

5\. make profit and gain upwork cred

6\. send a "thanks but we chose a different candidate" email to all the
candidates

7\. repeat

(edit:formatting)

edit2: you can even let candidate X make a code review on candidate Y.

step 8: automate the process and go public

------
vinceguidry
I think there's an inherent collective bias against making interviewing and
hiring easier because that would make the hiring market more liquid, meaning
their best people will be able to more easily find jobs elsewhere.

~~~
bitexploder
Speaking as a business owner actively hiring... the cost of a mishire is huge.
It is difficult to understate mishire costs. This means you have to simply
spend a lot of time with candidates. Even then you have a narrow window of
time, relative to how long the business and employee have to live with one
another, to figure out if it is a match. This means you will say no to a lot
of people after investing significant time and effort into them (and them into
your business). We owe it to our teams to hire well. If that means making it
harder, so be it. Think about if it is easier for the wrong people to slip in
under the radar. It can wreck culture and team quick. Most teams and
businesses dont spend enough time. In Work Rules (Bock) they found the first
four long interviews they did helped a lot at Google. After that interviews
added one percent accuracy in judging a hire. It is a hard problem and I think
the first and foremost goal in any hiring process that is well developed aims
to make good hires the #1 priority.

I won't discount your theory of a bias, but I think it is a small influencer
if it exists.

~~~
CoolGuySteve
> Speaking as a business owner actively hiring

Can you quantify? I read this all the time but nobody explains it.

Meanwhile, this talking point is used to justify an atrocious waste of
interviewee time and ridiculous interview requirements.

~~~
patio11
It's virtually impossible for most companies to manage someone out in less
than six months. They're earning full freight salary for each of those six
months. Many of your overhead costs like e.g. recruiting fees, new machinery,
training, come due within that period and are not refundable.

This only costs actual cash outlay, not opportunity cost of other team members
(could be coding but are instead spinning up the new engineer), overhead from
management salaries, cost to redo work of an other-than-productive employee,
etc.

At Valley salaries hiring someone for a day costs you $100k++. In more
moderately compensated locales, lower bound it at $40k or so.

~~~
throwaway_374
>>At Valley salaries hiring someone for a day costs you $100k++. In more
moderately compensated locales, lower bound it at $40k or so.

Sorry, WHAT?

>>pportunity cost of other team members (could be coding but are instead
spinning up the new engineer)

Hey I've got news for you. Developers don't just waltz in and start coding
from day 1, they need to be brought up to speed on the systems. Your business-
nosed attitude needs a reality check. Developers are human capital, not
robots.

~~~
napoleond
_> Your business-nosed attitude needs a reality check. Developers are human
capital, not robots._

You're being unnecessarily defensive. Just because people are people does not
change the fact that it costs companies money to onboard them. This whole
subthread is "why is it expensive to hire people?" and one part of the answer
is "because you have to pay them money while you train them, and pay their
colleagues while they do it". It's not a reflection of any unrealistic
expectations--it's the opposite.

 _> Sorry, WHAT?_

Computer, desk, office space: $5k

Job ads: $500-3k per hire is not unrealistic

Time spent sifting through applications: Easily 5 hours per week. If the
posting is up for a month, that's 20 hours. That translates to about $1.5k in
fully loaded costs for an employee with a $100k salary.

Time spent conducting phone screens: Assume 50 phones screens for one
position. 30 min per person (20 minute conversation, 10 minute notes/break).
25 hours. Approximately $1.8k for the same $100k employee.

Further interview rounds: Assume about 10 candidates per position. Assume at
least 4 person-hours per candidate, plus at least 8 hours devising evaluations
(programming tests or what-not). 48 hours = ~$3.6k. Add in $1k of travel costs
per candidate = $10k.

Draw up an employment offer. Assume you've got a stock one, but the new hire
would like to make an amendment. Run it by a lawyer. $500.

We're at about $25k. It's not $40k, but it's not free, either. It would be
easy to spend more time on any of those steps. If you use a recruiter, it will
be higher. If you calculate based on SV salaries and costs, it will be higher.

~~~
throwaway_374
This is almost facetiously hyperbolic. I don't have time right now but I'll be
responding later.

~~~
sethev
The grandparent post was pointing out that once you've decided to hire someone
for one day they'll probably be around for at least 6 months. That's where the
majority of the cost comes from.

------
js8
It's only going to get worse. As automation continues, jobs are going to be
less about "being efficient and useful to society" and more about "proving
other humans that you deserve to get money". And interviews are one
manifestation of the latter.

I think SWE as a profession is in a little bit of denial, because we honestly
(want to) believe we are being efficient. But the reality probably is that
most SW companies don't do very useful work, but rather, struggling to make
ends meet, are fighting tooth and nail to prove (often through deception and
introducing complexity) that somebody needs their software. And this of course
in turn affects the workers in these companies.

So SWEs will have to admit (mostly like everybody else) that it is actually a
game of musical chairs, and if they don't want this game to happen in this
fashion, they will have to institute some other way to play this game (of
proving that you are useful), for example, by having a profession association
and a profession exam.

Think about it. If there would really be that much work to be done in SWE, the
companies would just take everybody. But they don't, they are more and more
picky. There have been other articles linked from HN (such as
[http://spectrum.ieee.org/at-work/education/the-stem-
crisis-i...](http://spectrum.ieee.org/at-work/education/the-stem-crisis-is-a-
myth)) that say the same thing.

~~~
nerdwaller
I don't think it's reasonable to suggest they'd just take everyone if the need
is so great. Culture matters and if you get the wrong type of personalities in
you could jeopardize your team and end up losing the, for lack of a better
term, better bunch of the group.

~~~
js8
I think it boils down to money, which are a manifestation of demand (and thus
existence of jobs). If you have money to spent, you can afford to take risks
(take people in and then throw them away if they turn out to be bad), you can
afford to train people on the job, you can afford to organize the work better
(as a canonical example, look at Facebook Haxl - by building domain-specific
languages that are easy to use to non-CompSci people, which they are then
interpreted on a platform written by a comparatively small group of CompSci
people).

Here in Prague, situation is a little different to US (from my reading). SWEs
are locally in quite high demand, as we are on the other side of the
globalization. So companies often take almost anybody (for a reasonably paid
job).

On the other hand, if the demand is stagnant, you will try to get the best
people by being very picky in attempt to lower the costs.

------
ploggingdev
54 companies? That seems very inefficient.

I like Triplebytes [1] focused approach to hiring engineers. I think they used
to interview candidates to assess their skills rather than depend on
whiteboards or resumes. If the candidate passes the interview, they would be
connected to relevant companies, take up interviews with the companies and
negotiate the offer(s). Now it looks like they changed the process slightly to
introduce online coding tests to make it easier to screen more candidates.
Edit : As pointed out below, the online coding test is the first step followed
by one on one interviews.

[1] [https://triplebyte.com/](https://triplebyte.com/)

~~~
cyorir
He got 14 interviews from 54 companies. As a candidate, that's better than
what you can expect from Triplebyte, which apparently only interviews 1/6th of
applicants (2000 interviewed out of the 12000 who have applied).

[http://blog.triplebyte.com/12-000-engineers-
evaluated](http://blog.triplebyte.com/12-000-engineers-evaluated)

If you don't make it to the interview phase with Triplebyte, then the process
might as well be as opaque to you as any company. You aren't given much
information about how well you tested and the reason you weren't selected to
interview.

It would be great if there were a Triplebyte-like service for those of us in
the lower 10,000, but until then it's back to applying to dozens of companies.

~~~
ryandrake
14 interviews from 54 companies is downright amazing. Better than I've ever
seen. I've probably applied to hundreds of companies throughout my life/career
and gained interviews at less than 20. Next time I'm looking for a job, 54
companies is going to be the minimum to apply to.

------
madamelic
> Interviewing for CTO / VPE

> Still getting programming homework interviews

Kill me.

------
prions
I'm still breaking into a software job and had a homework problem for a
company, with a week deadline. Since I worked full time, I spent the majority
of my free time working on this problem.

I was happy with my solution, and disappointed when I was rejected.

Rejection is fine, but what upset me more was radio silence when asking for
any feedback on my solution. As a young engineer it would have been amazing to
get feedback from professionals.

~~~
hackinthebochs
This is exactly why HW problems without any commitment by the employer is
plainly exploitation.

------
lukejduncan
If you've spent 17 years in industry and haven't written a graph traversal
algorithm... you probably don't recognize when you're writting a graph
traversal algorithm.

------
bit_logic
I remember somewhat recently there was a new job site for older engineers. Is
there one for companies that don't do the bullshit Google style interview?
Something like a noalgorithmdatastructurestechincalinterview.com? It would be
great if not doing these kinds of interviews became a hiring advantage for
companies and a site like that would help greatly.

~~~
andai
This comes to mind

[https://news.ycombinator.com/item?id=13194074](https://news.ycombinator.com/item?id=13194074)

[http://tryoldster.com/](http://tryoldster.com/)

------
adevine
Random question: Did you just hand-cut the svg code for the graph on the left
side of the page? I took a quick look through the source code and didn't see
any evidence of a specific tool.

The reason I ask is that that kind of behavior, where you click on the node
and it highlights the paths to that node but grays out everything else, is
super useful for complicated architecture diagrams where you want to put a ton
of stuff in one diagram, but still be able to see where edges go when you have
a big spider web of connections. I've been looking for diagramming software
that would create these clickable kinds of diagrams for my company, but
haven't found anything that exactly fits the bill (Most tools I've found
generate static diagrams, and some mind mapping software I've seen doesn't
totally fit the bill, either).

~~~
GlennS
For web things, I would recommend the combination of dagre
([https://github.com/cpettitt/dagre](https://github.com/cpettitt/dagre)),
which will calculate node and edge positions, and d3.js
([https://d3js.org/](https://d3js.org/)), which you can use to layout your
nodes as an SVG.

I did some work on something a little bit similar for an EU research project,
which you are welcome to take a look at. It's probably not directly
applicable, but it may give you some thoughts about what does and doesn't work
as a UI: [https://github.com/cse-bristol/process-
model/](https://github.com/cse-bristol/process-model/)
[https://tools.smartsteep.eu/process-
model/?name=actionplanni...](https://tools.smartsteep.eu/process-
model/?name=actionplanning)

------
johnloeber
> In the prior 17 years of professional experience, I have never needed to
> write a graph traversal algorithm.

I don't get this. I'm in my early 20s and have professionally implemented
graph traversal algorithms at least five times. Graphs are extremely powerful
data structures, and if you have them, then you can expect to traverse/search
them.

~~~
lj3
It depends on what your field is. Can you imagine a frontend web developer
writing a graph traversal algorithm in javascript?

~~~
brogrammernot
This.

Funny story(now, wasn't at the time but been a few years now). Made it to a
final interview at one of the "elite" tech companies.

Was interviewing for a web development position, and the second whiteboard
question was about designing a hash table. I of course was confused as I had
no backend knowledge. Next one was about a graph traversal, and again I was
confused.

So, because of that I was scared shitless that I needed to know that stuff and
went out/crammed it.

Ended up interviewing other places, got an offer and didn't have to answer it.

However, because of that "elite" company's questions I went and learned more
about graphs, queues, stacks etc.

So while I was pissed off at them for awhile for wasting my time, in the end
without them I might not have spent the time learning and progressing through
Comp Sci topics.

~~~
lukejduncan
Unless you're designing to spec, how do you not need to understand graphs and
hash tables for front end work? I'd imagine understanding hash tables would be
useful in reasoning about caching, and graphs for dependency management if
nothing else.

~~~
brogrammernot
Great points.

As a front end developer, if you're consuming APIs and building out
interfaces, and passing data back to the APIs you don't have to know much
about graphs or hash tables.

For most web developer/front-end positions, you can be perfectly fine without
knowing much of the "advanced" topics of computer science. You're going to be
designing to the product manager's specs, paired with a back-end programmer
who is going to tell you the structure of the data that will be passed back
down and then you build it from there.

As far as understanding hash tables or graphs, you can really get away with
knowing them.

However, I agree with you after learning these topics. There's incredibly more
efficient ways to build front end pages with the concepts of a hash
table/lookup. Most recently I designed a page that basically uses the URL
slugs as keys in a complex dictionary to grab content from a SQL database to
render the pages.

In addition to that, it's also just wonderful to be part of the conversation
when you go to design APIs or architecture so you can make sure to relay/point
out concerns that may cause a lot of unneeded pressure on the front end.

Tl;dr You can be a web dev or front end without much knowledge of hash tables,
graphs but I can't imagine you advancing your career very far without that
knowledge.

------
sumanthvepa
The problem I have with giving homework assignments, at least with junior
candidates in India, is that very often they just cheat. In one case, the
candidate had his college instructor help him answer the questions over the
phone, and do the homework assignment. When we brought the candidate in, it
took about all of 30sec to realize that the person who had solved the problems
over the phone and the person attending the interview were not the same.

------
jondubois
I also went through something similar over the past month looking for work. My
main problem was that a lot of startups tried to lure me into their teams by
offering a really senior technical management role, then once I had passed all
the technical tests, the role ended up being 'senior engineer' (or similar)
even though they said they were extremely happy with my test results and
interviews.

It's clear to me that they had never intended to offer the senior position and
just used it as bait.

Other times, they said I would be interviewing with the CEO but when I got
there, they put me through some standard recruitment process and I didn't even
see the CEO.

This destroys the startup's credibility in my eyes. I cannot work for liars.
Making me do all these tests before telling me what I was really applying for
shows that they completely disregarded the value of my time.

------
Schwolop
So this is evidently the wrong forum in which to ask, but what's it like
interviewing in other fields? Do chemists have to perform a titration in front
of the panel? Do surgeons have to demonstrate an anatomy lesson on a cadaver?
Do bricklayers have to build a wall in under an hour?

------
theparanoid
The only interview experience I've enjoyed was Google. Mostly because the
interviewers were relaxed. Silicon Valley fosters a stressful environment.

~~~
oriolid
From the many interviews I have been to, Google was one of the three where I
had the feeling that the interviewers had any idea what they were doing.

------
donovanm
This article does a decent job at capturing the grind that is interviewing in
software engineering. The expectations during the interview process are high
and only get higher the longer you've been in the industry. I wonder how much
of this contributes to burnout?

~~~
lj3
I don't think the interview process contributes to burnout. That happens after
you get the job. But, it does make recovering from a burnout a pain in the
ass. You need to catch up with the latest trends and refresh on the basics
like algos and DS. On top of all of that studying you need to come up with
something to fill that 2-3 year gap in your resume.

------
grandalf
I like to give homework assignments too. It's amazing how many candidates will
simply not do it, so it's a great filter.

------
GoToRO
At my company they do a technical test for an hour followed by a technical
interview. It's like an exam. The test is decisive.

I prefer this kind of tests, as they only require an hour of effort, and they
are objective. All the time a technical test was involved I received a quick
and good offer. When I had to convince them about my skills just by talking I
either got no offer or I got an offer that was way to low for my experience
(like half or worse).

As an example, the hardest problem in the test was a C function that receives
two parameters, one by value, another by reference, and it did some
modifications to those parameters. The problem was further complicated by
having two global variables with the exact same names as the parameters that
were used to call the function but with the variables switched (global a went
to parameter b, global b went in parameter a). At the end they asked what's
the value of global a, b?

------
jsemrau
20,000 emails, 1000 phone calls, 100's of presentations to get your product
off the ground. It never stops.

*Disclaimer: All numbers are estimates. Product can be something you work on internally for a big company to battle office politics or externally when doing your own thing.

Convincing people that what you do is righteous takes time.

------
throw2016
I think there will always be mistakes in hiring. There is no way to tell
perfectly from a set of interactions however much one can wish.

We are unpredictable, some are great at deception, we have massive mood swings
and phases where we are not at our best, we can deteriorate rapidly and get
distracted. What is supposed to be a stable reflection is our education
degrees and experience and ideally coupled with a few conversations this
should be enough.

The problem here is companies have convinced themselves they can find the
perfect candidate for every hire and pursue this unicorn relentlessly. Even
with all the ado they will frequently get it wrong. It would be more mature
and productive to loosen up and deal with the risks than subject everyone to
the kind of process.

------
djhworld
I've interviewed with one of the "big 4" before, their interview process was
very structured and very gruelling. Didn't get the job, feedback was that I
wouldn't even meet their junior developer criteria.

I'm not bitter about it, just crossed it off as a learning experience and
moved on, but every time I see one of these articles about interviewing for
tech roles, I'm constantly wondering what the best process is.

The big 4 tend to hire the best they can get, and have enough applications to
pick from a wide talent pool so can afford to spend time doing whiteboard
interviews etc, but for other organisations? I'm not so sure.

------
danblick
How do you measure - measure a job search?

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

~~~
navalsaini
nice

------
bane
A few years ago I decided to leave my job, I was secure but unhappy with the
company, so I took some time to try to find a good fit. Looking for a new job
wasn't a full-time affair, but I'd say I spent about 10 hours a week on it.

I didn't collect metrics like this, but it took about a year and something
north of 170 applications/reachouts. I received zero direct rejections.
Probably actually talked to about 15 different companies. Phone interviewed
with 3 or 4 and interviewed directly with 2.

I ended up not getting any of those positions.

But I don't feel bad about it, the positions where I made it to the interview
rounds weren't even the ones I applied to within those companies. Both of the
interviews were friendly, but almost entirely pointless and were non-
representative of what I would have likely been doing there anyway.

Finally, after really wanting to leave, I just did the time honored thing of
asking a few friends who worked at places I was interested in if they'd refer
me. Two places said they'd like to talk, and I work at one of them now. _This_
process took about 3 weeks and I ended up in as near a perfect fit as you can
get.

Side-effect, after working at this new place for a couple years, those friends
I asked, keep popping up every once in a while to see if I'd be interested in
something where they currently work...so they've kept in mind that I both:

\- switch jobs

\- thought of them when I was looking to do it

I'm not a developer, I'm much more into Technical Project/Program Management,
so YMMV, but I also noticed that the hiring processes for people like me have
almost no steam behind them. Most companies tried real hard to fit me into
developer or engineer pipelines, they had almost no ability to entertain
anybody outside of that kind of hiring experience. Of the few that I phone
interviewed with, at some point the subject of doing a coding assignment came
up and I simply told them that we'd all be sad at events around that idea:

I'm a passable coder, but years out of date. I haven't coded professionally
for probably getting onto 15 years now. The job I wanted didn't involve any
software development, so the exercise wasn't very useful. If I passed it, it
both said something about their engineering maturity (and I wouldn't want to
work there) and again wouldn't be representative of my work.

The actual hiring machine at most companies seems impossibly broken. I ran
into a few good recruiters, but most were just trying to make quota or show
effort.

~~~
lj3
The last time I got a referral from an old co-worker, it got me past the
resume screen and no farther. The rest of the interview was identical to what
you'd face if you had applied cold off the street. YMMV.

~~~
bane
Yeah, I had to do an interview anyways, but the process at that point (for me
at least) was more of a formality than a decider. They were basically checking
to make sure I wasn't a crazy person and that the reference bonus they were
about to pay my friend was worth anything.

This mirrors the experience I've had at several jobs, so I don't think it's
terribly rare.

Where it's _been_ different than this has been when getting referred to your
everyday startup -- and usually those processes are so braindead I end up in a
queue for a programming exchange that won't matter in the end. And I've
interviewed at some of the biggest "startups" that regularly make front-page
here -- so I'm not talking about weird edge cases.

~~~
lj3
> Where it's been different than this has been when getting referred to your
> everyday startup

Yeah, that's the kind of company I was referred to. I assume you don't work in
startups? :)

------
lettersdigits
> Hours spent talking: 224

> Hours doing homeworks: 33

I would prefer this to be the opposite: more homework, less talking . That's
what the job is going to be like, anyway ..

(edit:Formatting)

------
rafiki6
The discussion I'm reading is absurd. Why has no one suggested a credential
yet? Every other profession has it. It's insanely inefficient for our industry
to behave like this. Software development and engineering is mature. We need
candidates to build stuff not spend time reviewing cs101 or hours doing coding
assignments

~~~
thr0waway1239
Credentialing in software probably has a really short half life. I agree with
the comment about how insanely inefficient it is though!

I have this near conspiracy theory about why the interviewing process includes
such ridiculous things as balancing red black trees. Like every other
regulation/tax, the propagation of crazy ideas about interviewing practices is
really self serving for the tech giants. In a large orgy of stupidity,
companies which can neither afford the impedance of nor are particularly good
at these CS type questions mimic the practices because they are probably
trying to show that they have a high bar.

Unfortunately, the multi-billion dollar companies can churn through the
candidate selection process and waste more money in the process than many
other companies' annual revenue. But I am sure they realize the halo effect of
making a great deal of noise about this practice, because this is one of those
strategies with very little downside and all kinds of unintended upside.

If I were a recruiter at one of the top 10 companies, I would spend half my
time creating fictitious accounts on various social platforms to ask about the
CS question du jour at these interviews. It would be the equivalent of click
fraud in tech job search.

On a more serious note, I wonder if companies trying to hire these employees
ever really do a cost analysis of the interview process itself? At what point
does it stop making sense to "just wait till we get that truly exceptional
candidate"?

~~~
rafiki6
Really? Yet it seems that the "standard" CS101 interview is still pretty much
the same. Unless you're talking strictly about credentialing for a specific
language or framework which I would agree would be stupid. Also, as with other
professions we can frequently update the credential to ensure it stays
relevant. The IEEE has already created a software body of knowledge. There are
fundamentals every software engineer should know that aren't the latest
JavaScript framework.

------
uptownfunk
The interview needs to assess skills that will be used in the job. While I can
appreciate the spirit of the homework assignment, our role requires client-
facing capabilities. With that comes the necessity of being able to answer
questions on-the-spot. Sometimes we have meetings with C-level executives with
whom we can only get time once every month or every six weeks, and if
something happens to come up in one of those meetings, "I'll get back to you
in four hours" is rarely an acceptable answer.

I think what would really help transform the hiring process is to assess
skills that would be required on the job. I think that was the spirit of the
original submission here, but I just wanted to explicitly state that I don't
think homework is the solution to remedying the current state of hiring in all
cases insofar as actually assessing the skills that would be required on the
job.

------
user5994461
Surprised noone commented on the layout of that website?

These unaligned 3 screens-long pictures with sections all over the place is a
mess.

I can't tell if the layout is just weird on purpose? the site is buggy? or
adblock/noscript are screwing something?

------
macspoofing
>Use homework assignments to assess the candidate’s engineering skills

That could be abused. If the assignment takes longer than, say, an hour - it's
unfair to have someone waste their time, especially if every prospective job
has one too.

------
505
9 days, 8 hours, and 15 minutes

------
mdip

        With a homework assignment that is not timed, you let the candidate do her best possible work in her ideal environment, and yes, while a work environment is sometimes chaotic, when she needs to get her work done, she is going to make her environment as perfect as possible.
    

I'd like to second this comment as someone who was recently laid off, did a
bunch of interviews[0] and landed a job I'm enjoying very much. The company I
picked had a "homework assignment". It wasn't a _real project_ that had any
useful purpose to them, which I've seen suggestions about doing[1], but a
simple web based app.

At first, I was a little less enthusiastic about the approach -- I have GitHub
repos and other examples of competency out there -- but as I thought about it,
this "test app" was in line with what they were looking for and when they
described the approach, I liked it. The first thing they did correctly was
provide a basic spec sheet. It wasn't overly specific and I think this was _by
design_. It was basically a CRUD web app, with a statement of "feel free to
get creative; do as little or as much as you feel it needs". I provided a
self-hosted CRUD app that worked on multiple devices, syncing state between
them in real-time, documentation, an installer and everything else that was
needed to make it a complete product. _Most_ of that wasn't on the spec sheet,
but in line with thinking about the project as "something I'd deliver", those
were things I'd consider to make it complete and it also gave me an
opportunity to demonstrate competency in different frameworks, provide
examples of functional/OOP design and other areas that gave them an adequate
look at what I could do. The app, itself, was a really minimal web app that
took me a couple of hours to write, but after all of the additions, it landed
in at a day and a half or so -- not a terrible amount of work for someone out
of work and worth it since I landed the job.

Frankly, given the choice between shoulder-surf coding, whiteboard coding[2]
and test projects, I'll take the test project. I hate whiteboard interviews
and thankfully there were none of those this time around. I've had two
whiteboard interviews in the last five years. In one case, I got lucky in that
the first algorithm was one I had written into an app I had on a private
(personal) BitBucket repo, so I pivoted with "I can marker up your board here
or I can show you a good implementation that I did a few weeks ago". We spent
the rest of the interview with them asking questions about my choices and that
was one of the most enjoyable interviews I've had. I didn't take that job. The
other, I didn't get as lucky and actually ended up turning down the job on my
way out of the interview room[2].

I agree with the author about having empathy for the job seeker. This empathy,
though, works both ways. In my case, I had filled in for a dev team in a pinch
-- at the last minute -- to _run_ an interview. They hired the guy on my
recommendation and he ended up being a great employee so I was pulled in to
most of the interviews for several of the dev teams from that point forward.
Never mind that I did development on an ops/security team and didn't work with
_any_ of these teams, making whether or not they hired a particular person --
or anyone at all -- of now benefit to anything I was responsible for. As a guy
who had an already overbooked week, I didn't enjoy being pulled into these and
I really didn't appreciate the massive number of _woefully under-qualified_
candidates or the fact that all of that time was often spent on a _great
candidate_ who turned down the job in the end. Because of this, I express
thanks at various times during the interview process and specifically mention
how grateful I am for the time taken out of their already busy work-life. I
was glad for the opportunity to interview at all of the places that chose to
interview me so I simply made that known. The cool thing about that is later
interviews felt more at-ease with the team as a result[3].

[0] I had quite better luck than the author, but did fewer interviews, and was
seeking a position that was right in line with my experience.

[1] I like this idea, too, provided compensation is provided -- after all, if
you intend to use the product of the work a candidate performs, they're
technically a contractor and I wouldn't do work like this for free.

[2] I actually do pretty well on my toes -- I'm good at rationalizing out
loud, and breaking up the tension with a little humor (to the point that I've
been given hints at answers when I was stuck). Despite turning down this job,
they made a really good offer to me two weeks later that I declined -- the job
itself was in a domain I wasn't excited about, but the whiteboarding didn't
help.

[3] Felt being the operative word -- these were later interviews which means
the team was already more interested in me as a candidate than in the first
interview. I also remember the first time a candidate specifically thanked me
for the time I spent interviewing him and very likely projected that onto my
interviewer. But at the same time, it increased my confidence so if it was all
in my head, I'm OK with that. I also feel that it was "the right thing to do".

------
z3t4
if you cant find out if someone can do a job or not. how do you know if your
current employes are doing their job? how do you evaluate them ?

------
daodedickinson
I wish I could get a job someday. I have degrees and great grades and would
love to work for so many places but I find the job application process so soul
crushing and inhumane and lonely that I've never gotten through it to a job. I
don't really think the process is evil or anything, I just have had a lot of
emotional trauma so it does not work for me because I can't handle rejection
like that. I just wish there was a company where I could go there and work for
free for a few months and if I was able to help out then I can stay. Even if I
got rejected then, at least I would see what work was like and how to get
better and it wouldn't be cramming a bunch of stuff to get through one of
these torture gauntlets. AI makes me so intimidated and depressed and I spend
a lot of time worried that I will never be able to get a job because I can't
keep up with how fast things are progressing. I really really want a job so I
can move out of my parent's basement and I would like to go on a date someday
and have someone to love and be loved by. Does anyone know a way for high
functioning people with developmental disorders to get to where they can have
a job? I admit I don't have a lot of intrinsic motivation for technology
because it's ultimately nonsense to have a such a thing. Technology is means
of achieving goals, not a goal in itself, so I don't believe in technology for
its own sake, I just wish there was something that an employer wanted me to do
for them but I can't motivate myself to do something useless. I want a job so
I can then be able to afford friends and a family, and wish I could find a job
it's just that I'm so depressed about my chances that I'm paralyzed. To me the
statistic that matters, the real measure of quality of life, is seen in how
fewer and fewer people have close friends and I understand how Facebook,
automation, etc. are driving that so I am torn between trying to fight my way
to where at least I can be on top of the machine rather than under it and by
empathy for the way spirits are being destroyed underneath that machine and
the material "wealth" or "stuff" it is producing is not a trade that I can
begin to find worthwhile even if I try to fake it so until I make it so.
Siiiiiiigh. Are any of you problem solvers? Can you help me at all?

It is as from Perlin's foreword to SICP:

"The computers are never large enough or fast enough. Each breakthrough in
hardware technology leads to more massive programming enterprises, new
organizational principles, and an enrichment of abstract models. Every reader
should ask himself periodically ``Toward what end, toward what end?'' \-- but
do not ask it too often lest you pass up the fun of programming for the
constipation of bittersweet philosophy."

I am stuck in this constipation, because I feel lonely, and I feel the
computer is driving us to lonelier and lonelier ends, and, as much as I feel
terrible hatred at my lack of employment, I would rather play with you than
work with you if our work really is making the world lonelier and more and
more dependent on anti-depressants to make up for how we have somehow missed
something precious, perhaps glimpsed by Harry Harlow, in our mad dash to try
to replace terrycloth and humble fare with wire mesh and our cornucopia of
junk.

------
dilemma
>While I do have some ideas of how to improve the process, I do not have a
suggested perfect hiring process. Partially because it is impossible to craft
a single process that will work for all roles, for all candidates, for all
companies. We need to balance being unbiased and impartial with respecting the
experience and background of the candidate. It is relatively easy to do in
one-off situations but very hard to do at scale.

The thing to do is to remove proxies for competence and intermediary parties.
Talk directly to the candidate, about the actual work (don't try to "see how
the handle" odd questions).

However, this requires decentralization of decision making which reduces
control.

------
u_wot_m8
From what I've seen the best hiring process seems to be Automattic's. They do
a short interview over chat then give them a project if they pass the
interview where they pay them $25/hr and then evaluate at the end. Minimal
time wasted for both parties.

~~~
shawn-butler
The 1099 paperwork burden must be a headache.

~~~
agildehaus
Don't need to file 1099s if under $600.

------
pfarnsworth
FYI Unreadable on Chrome, at least for me. The SVG graphic takes up around
half of the text.

~~~
desdiv
FWIW that's the intended presentation, so it's not a browser issue. They're
trying to be "artsy" with the huge ass interactive chart.

I tried zooming in, but even just 110% zoom breaks the text.

------
killbrad
The tldr is: "I wanted a lofty title and a very specific role at some future
company. It took a long time and hard work. That's not good for some reason,
which I won't go into here."

~~~
tyingq
Hmm. The author says:

 _" I found the process to be dehumanizing, stressful, chaotic, inaccurate,
opaque..."_

Then goes on to talk about pigeon holing, other issues, and some suggestions.

You could criticize his conclusions or suggestions, but I don't see how you
would summarize it as "not good for some reason which I won't go into here".

------
coding123
And now that you've posted this article, you can probably choose between 150
different jobs :) (if you wanted to)

------
known
Relevant, relevant and relevant experience/expertize is needed

