
I will not hack on your codebase for free in an interview - groundCode
http://hownottohireadeveloper.blogspot.co.uk/2013/11/no-i-will-not-hack-on-your-codebase-for-free.html
======
tokenadult
Too aggressive in tone for what the gripe is here. I wouldn't hire this guy.
Several of you long-time participants on Hacker News have noticed various
iterations of my FAQ post on company hiring procedures,[1] and if you haven't
read that, I invite you to follow the link and read it. Genuine work-sample
tests are a GOOD idea in hiring, as most of the comments already here have
said. Perhaps a full-day work sample feels too long to most job applicants,
compared to a one-hour work sample (but how much would paying each applicant
help with that?). There are also intellectual property issues here (but
doesn't freedom of contract in most countries allow a way to resolve that
issue?). But he doth protest too much, methinks.

In any job application situation, the company's concern is "can this applicant
really do the job and do it well?" The applicant's concern is "will I really
find a good fit in this company and advance my career here?" In general, a
work-sample test is a very good idea for answering both kinds of questions,
and anyway research shows that a work-sample test is a far more valid hiring
procedure than most other hiring procedures that have been tried. Check my FAQ
link for research citations on that topic.

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

P.S. Yes, I intend to touch up my FAQ draft some more and then post it to my
personal website. I just bookmarked the blog post kindly submitted here as
another resource to refer to as I update my FAQ.

AFTER EDIT: I'd be happy to discuss with readers who disagree with this
comment what the nature of your disagreement is. That helps me learn to make
the FAQ better for its next posting on my website.

~~~
RyanZAG
Surely the disagreement should be obvious? If they interview 50 candidates and
get each candidate to do a free day of work, they're exploiting the candidates
and the market.

As others have said, there is no reason not to let the candidate work on
related OSS projects or on already solved tasks. Adding new features to a code
base for free is not on. This is like hiring labor for your bridge building
company, getting 50 people and having them drag rocks around all day and then
not paying them. Feels close to illegal.

~~~
columbo
> Surely the disagreement should be obvious? If they interview 50 candidates
> and get each candidate to do a free day of work, they're exploiting the
> candidates and the market.

If the application is so simple that you can get actual productivity in
someone in the first couple hours then stop trying to hire candidates and
outsource the entire thing to India for a fraction of the cost.

Otherwise it's a pair-programming test with massive hand-holding from another
developer which is ridiculously more expensive for the company.

I'd choose to spend a few hours on the employer's actual application over any
other form interview.

Obviously there are extreme cases (hey we'd like you to spend a few weeks
working on this API, you know, for the interview), but I don't get that vibe
from this article.

~~~
danielweber
Right. If the application is easy enough to define that someone completely new
can code it up in a day, they can just send it to India and be done with it.

This isn't like a comic book company asking job candidates to submit a page of
a script, where they can just use it as is. Software is a very living product
and you need live people maintaining it.

I do think that companies should consider paying a candidate a few hundred
bucks to spend his whole day with you. This doesn't change whether he's
working on "open source stuff" or the company's product they are selling for
money.

 _EDIT_ tldr: they should have paid him for his _time_ not for his _product_

~~~
normalocity
On what planet is there a tradition of paying for the time spent in an
interview? The writer of the article knew it was an interview, and presumably
knew approximately how long the interview would be.

~~~
nakovet
He knew he was in an interview for sure, however the terms have changes as
soon as the lead developer asked him to code in the current application in
order to test his skills.

Lets put this way, you are interviewing for a Car Sales position, you get to
the my store and I ask you: Hey, today you gonna spend the day selling cars,
it will be our test, and then you sell as many cars as you can for free.

Do you still consider this, part of the interview? Keep in mind that you are
bringing profit to my store.

------
wldlyinaccurate
You know what? I _wish_ companies let me play with their codebase in an
interview. At least then I could see how much truth there is to all the "yeah
we totally have a great automated test suite and build process" I get told
during interviews.

A whole day is unreasonable, but I'd jump at the chance to do what TFA
describes as "free work" for an hour or so.

~~~
leokun
I wish I could have gone back in time to look at a codebase before saying yes
to a job. I wouldn't have taken it had I seen it.

~~~
rrich
I would hate to find myself in a situation like that, but bad code isn't the
only thing to look out for. I would dread finding out 80% of their code came
from open source and that they made it a point to not contribute the changes
back to the community. This would really rile my feathers. Particularly if
they asked applicants about their open source contributions.

------
jawns
So here's the problem:

1) A great way to assess your technical chops is to watch you code.

2) A great way to see if you can do the actual work that you'll be expected to
do on a day-to-day basis is to work on a real-world task on the team's actual
codebase.

3) If you have what it takes, then it's crappy to have you "work for free" for
a day. But if, after the day's over, it's clear that you don't have what it
takes ... then have you really "worked for free"? (Remember, freelancers don't
get paid unless they deliver.)

Here are some ways to address this problem:

1) Do paired programming on the actual codebase -- but on an old problem, the
solution to which has already been implemented in production. This makes it
clearer that the exercise is merely to assess your skills and not to get free
labor out of you.

2) Pay all in-person interviews for their time. Once they've passed the phone
screen and whatever other preliminary hurdles you've set up, you should feel
pretty good that they're not just wasting your time. So compensate them.

3) If you don't have the budget to do #2, which -- let's face it -- is
uncommon, then perhaps you could offer a signing bonus to anyone you end up
hiring that essentially repays them for their time.

~~~
bane
This topic comes up here all the time and I'm always shocked to see that this
is even considered as a hiring practice and I'm surprised it's not outright
illegal.

This problem exists in every field and for every kind of job. Nobody takes
seriously the notion that a book-keeper candidate should do your accounting
for a day to see if they should be hired, or have a contract manager negotiate
a contract for a day for free, or a designer design for you for a day. So why
are developers freed from this?

Because it's feasible for a developer to sit down in front of a terminal for a
few hours and start hacking away?

Here's part of the problem from the candidate PoV

1) It's slave labor (obvious) and opens you up for a never ending series of
small, but annoying lawsuits if you don't hire the candidates.

2) Candidate doesn't know if you're serious about hiring, or just doing a
cattle call. There's a lot of reasons companies do this, but it's a practice
used by some very well funded startups that wastes unbelievable amounts of
people's time and is like a cancer in the industry.

3) Candidate likely has plenty of other irons in the fire, and your company
isn't a special snowflake. If they're currently employed it's even worse as
they have to figure out how to take time off of work to waste doing free work
for somebody else. Now let's say they have to do this for the 20 companies
they applied to, that's a month off of work!

4) Development on complex codebases is hard, most engineering companies don't
really expect a new hire to be very productive on their codebase for a few
months at best. It doesn't actually test them on their day-to-day as much as
anybody might think, because their day-to-day job function will rapidly change
over their first six months as they start to wrap their brains around the
work.

What _is_ appropriate?

1) Ask for a portfolio, open source projects, other work they've done, etc.
Hopefully they have some kind of work history they can show off.

2) Irritating, but ask them to complete basic development tasks -- fizzbuzz is
a good example. Surprisingly, most bad engineers will be stumped by
surprisingly simple questions like "write a for loop" or "write a basic SQL
query". If they pass that, ask more and more complex questions until they're
at the level you need. You can usually figure out a candidate's skillset
within 10 questions. But please, don't waste anybody's time with brain teasers
and puzzles and other nonsense. Keep it focused and keep it real.

3) Actually have a conversation with the candidate. Plumb their knowledge. Ask
them about various frameworks they've used, or languages they've experimented
with or whatever. People who know their stuff can usually talk endlessly about
their past experiences, people who don't can't and you end up with
"well....C++ is nice, but Lisp is a great language!". Too many hiring
processes forget this part of interviewing because it takes practice to get
good at "interrogating". But it gets you so much soft information about a
person as well.

4) With questionable candidates that you're 50-50 on, be open to offering
probationary employment. 30-days, or 90-days or something. It must be well
structured (weekly check-points, options to leave after the first 30 days,
etc.), and you have to take it seriously. It's up-to the candidate if they
want to take this or move on to other opportunities. If they move on, nobody's
time was wasted. If they _really_ need something right now and they take it,
you have some exit valves if they stink, and if they're promising you can
adjust final employment one-way or the other.

5) Something I hated at first, but have come around to a bit is the idea of a
take-home problem they can work on at their leisure. Perhaps a problem that
wouldn't take more than 2-4 hours to work on. Why is this different then
having them hack on your code? Because you can make it not-your actual code,
and can use it to concisely test exactly what you're looking for. Plus they're
not taking time off of work to do this. They can spit-shine and polish their
response as much as possible and really show off if they want.

~~~
antjanus
A voice of reason. I've had too much personal experience with bad companies
and bad interviewing processes for my own good.

I think that #3 is spot on. Most companies AREN'T that special snowflake. Just
like I would not tolerate a company with ridiculous demands, I imagine a
company would not tolerate me. I'm not a snowflake, neither are they. This is
a business negotiation between two parties.

As far as "what _is_ appropriate", you're spot on, too. I'd just like to add
on some details per point from what I've seen:

1\. you can easily tell when a project is just NOT theirs. I've heard of
people (from hiring managers that interviewed them) that copy (not fork!)
someone else's projects and slap their name on it. If you're a programmer, you
should see these stick out. If you're still concerned, go talk to them about
the project. You'll learn a lot about their knowledge.

2\. Exactly. Just like you would not ask a mathematician to calculate if a
train with thirty tons of coal is going at the speed of 70mph from NY to LA,
and another train with sixty tons of radioactive material is going the
opposite direction at 230 mph but accelerating at 3 mph...you know what I
mean.

3\. This is the best point. You'll quickly find if someone IS or IS NOT
knowledgeable about a subject. Not just by talking about the "top article on
HN!" or some brand new framework, but having a conversation about work,
problems they've encountered and how they've solved them, how they like to
work etc. You learn not just about the person but a lot about their
experience.

4\. i've never really seen probationary employment in practice but companies
seem willing to do contract work or contract-to-full-time type deals. Sounds
very similar

5\. Spot on. I find these annoying however, because I've been in a situation
where I had 3 projects like these to finish. All of them small 2-4 hour
projects but all to do over the weekend. I guess it wasn't that much of a big
deal in the end and I do prefer this to any other type of "test".

~~~
girvo
Probationary employment is guaranteed for the most part here in Aus. Takes the
risk out somewhat for both parties, especially considering it's harder to
fire.

~~~
antjanus
Well, there is a probationary period here (US) too but it doesn't make much
sense employing 20 developers just to figure out which one you want to join
full time.

~~~
infinite8s
Probationary also pretty much guarantees that you won't find the best
programmers.

~~~
antjanus
not necessarily. I completely expect the initial 30-60 days to be in that
transitional/probationary timeframe (could also mean I'm not among the `best
programmers`).

But to each his own.

------
eshvk
So I have gathered that these are some of the populations of developers:

1\. There is a class of people who will not do algorithmic interviews, who
think they are puzzles and not exactly what a programmer does on a day to day
basis.

2\. There is a class of people who think doing homework assignments makes no
sense, especially if you have a full time job and this eats into your
evenings.

3\. There is another class of programmers who won't work on coding projects
because you may potentially be exploited.

For a group of people with highly specialized skills (who get underpaid when
compared to lawyers and doctors), we do tend to complain a lot.

~~~
yummyfajitas
Don't forget the 4'th group, the class of programmers who refuse to put code
on github.

I've gathered there is a population of "developers" who refuse to demonstrate
the ability to code at any stage of the interview process.

(The OP is definitely not part of that crowd, given his willingness to submit
a pull req to some open source project.)

~~~
static_typed
Really? I am required to have an account with Github, to prove something?

In the real world, some of us work on highly proprietary code bases, where
putting any code up online could expose the risk of future lawsuits or
prosecutions, certainly this has already happened to individuals in the
industry.

Thankfully in the real world there are some sensible and mature interviewers
who are able to look beyond the heinous crime of not having a Github presence.

~~~
yummyfajitas
People who can't easily demonstrate their skills are always at a disadvantage
relative to people who can.

For every one person who is great but can't publicize any of the good code
they write, there are a lot of people who simply suck. Differentiating between
them is expensive (read: hours interviewing the good candidate, many more
hours interviewing bad candidates) which is why the people with a good
github/bitbucket/ftp server full of code are at the top of my list. If they
all bomb the interview, maybe I'll move down the list to the people who's
skills are unknown.

This simple reality is why one should demand more money from employers who
impose restrictions on what one does outside of work.

~~~
eshvk
On the flip side, I have very rarely found an interviewer who has actually
read through my github code. It is more like they are scanning through an
imaginary checklist of 'has github account, has repositories in it' etc. The
other day I got asked by an interviewer if I knew python. This was rather
strange to me because we had just talked about one of my github projects
...which was an ml library for python.

My point is that if having a github account becomes a silly barrier like
having an education from top school, it kind of defeats the point of being
fair whilst also acquiring good people.

~~~
emidln
When I was the interviewer, the most useful lines to determining competency
tended to be find github code, ask pointed questions.

As someone who is now interviewing for a new job. I've had three interviews
this week ask pointed questions on github contributions including requests for
me to change things on the spot ( or talk through a change that might occur).

------
mschuster91
Hey, I'd take the offer - you get to see if the coding style and the
procedures used are even remotely what you expect.

I personally would never join a place still using CVS for source code
management, even SVN is something I'd like to have a night of good sleep
before accepting. Same for not having proper bug tracker systems.

Edit: Also, as the introduction to How Stuff Works will likely be done by a
dev team member, this presents you with the ability to ask the _dev guys_ how
the job really is, and not what a clueless HR idiot tries to sell you.

~~~
Gusfoo_2
> even SVN is something I'd like to have a night of good sleep before
> accepting.

Why's that? SVN may not be fashionable, but it's centralised, has ACLs and a
hook system.

~~~
mschuster91
Because it will be a huge mess once you hit your first merge conflict or want
to use proper branches. SVN is usable for source code management, but not
really for efficient collaboration.

edit: And if the SVN server goes down / messed up by someone, you're
essentially forced to sit around and staring into the sky. With git, all you
may have to do is fiddle a bit with merging if someone did a git push --force.
And if the server is down, you still are able to work on your own.

------
stinkytaco
Both of the posts on that blog just read as sort of bitter and sad to me. I'm
sorry you can't find a job, dude, but maybe your anger management is getting
in the way.

~~~
tbrake
If the author was really being asked to implement features in a codebase that
were expected to go live at end of day that's just exploitative and they have
every right to be upset at being asked to do that for free.

~~~
cpayne
But who offers to do a technical test for the entire day? For me, any
interview going longer than an hour has some serious issues...

~~~
VLM
Compare to some actual technical tests.

A CCIE test has varied thru the ages but seems to have stabilized at an hour.
I have no idea what an entry level dotcom would need with someone operating at
that level, but it probably happens. The problem is at a CCIE lab test you're
being evaluated by people more or less as good as you, but your average dotcom
will be hiring you because you know more than them in a specific area not
because they're smarter than you and they need to staff a team of underlings.
probably. Maybe A / B teams or rotating pager duty with another CCIE. Maybe.

Look into the length of an oral PHD thesis defense. That's usually not a full
day.

I would agree that in comparison to existing standards a full day is way too
long.

~~~
danielweber
Those are once-off tests. I didn't have to take an SAT for every college I
applied to 5 million years ago, but I took one, and all the schools used the
test.

If I'm looking at three places and each of them want me to sacrifice a day for
the interview, that's a lot of my time, especially if I am currently employed.

------
PaulJoslin
Just looking at his two blog posts, I think that the company's hiring practice
worked perfectly and weeded out someone who _may_ be technically competent,
but is toxic to the work environment.

His tone is aggressive and completely self centred - imagine trying to have a
meeting with him where he sticks stubbornly to his opinion, refusing to listen
to other opinions and potentially throws tantrums whenever he doesn't get his
own way.

Secondly, the fact he refuses to pair program with a developer on the existing
code base ' to see how he works within a team / on code - suggests that he
probably would equally be unlikely to do anything outside of what he is
technically being paid for.

I'm not saying anyone should work for free, but sometimes you have to help
out, whether it's working a bit later or helping during a crunch time. He
comes across like he only would want to work on things that interest him,
during the hours he's paid and then be out the door.

I think the company that was hiring did a good job of filtering him out.

~~~
peteretep
+1

Part of being a developer is there's going to be some crap I can't shield you
from as your manager, despite my best intentions. If I think you are going to
suddenly turn barrack-room lawyer on me, or tell me it's not part of your job,
or anything other than deal with it professionally and helpfully, you're a
poor team fit.

And if you understand so little about how programming teams work, and think
that you are going to - with no context of the codebase or problem space -
significantly improve my Senior Developer's work such that you're worth your
contracting day-rate for the interview (and are paranoid to think that the
interview is a big scam to get you to work for free) ... you're probably
delusional.

~~~
GVIrish
Thing is, as an employee, yes you should be able to deal with having to spend
unexpected time on something. As a job candidate, the equation is a bit
different. There is no commitment from the company or the candidate to each
other, and the candidate may never get hired by the company in the first
place. So why should the candidate give the company a day of work for free?
And if a day of work for free is fine, why not 2 days, or a week? Clearly
there is some point at which a job candidate should not be doing free work for
a company.

It didn't sound like the company was looking for the interviewee to improve on
the Senior Developer's work, it sounded like they wanted the interviewee to
develop new features for deployment in a pair with the lead developer. Not the
same thing IMO.

Maybe the company wasn't trying to concoct a grand scam, but there are
certainly companies out there that would think nothing of doing so. And even
if the whole 'write some deployable features' for us exercise was not devised
as a scam, it doesn't change the fact that it is a bit unreasonable to ask a
job candidate to spend a day writing code for you.

The guy even offered to write code for an open source project but the
interviewer refused. What does that say about the company?

------
mburst
I had a similar thing happen to me when I was interviewing at companies right
before graduating. One of the companies sounded like an awesome opportunity.
They were willing to fly me out to San Francisco to interview me. However, the
interview consisted of me doing 3 days of pair programming on their
application.

After the initial shock of excitement I realized the cost to fly me out there
was much cheaper than they could hire a dev for. I actually thought it was a
pretty ingenious way for for a startup to get cheap work while raising money.

As some people have already suggested I think there are some good ways to
avoid having to do this while still getting an idea for the candidate. You can
offer to pay for their time, you can have them reimplement a feature you
already have, or as the article suggests work on an open source project that
one of the parties are familiar with.

------
BuildTheRobots
The last place I interviewed with set the bar pretty high as far as I was
concerned.

After a pretty standard interview one afternoon, I got asked if I'd be willing
to come back in for a couple of days to see if I got on OK with their current
team. They made it extremely clear that as they'd be taking up a couple of my
days, they'd pay me pro-rata for them whether I got the job (and chose to take
it) or not.

If you're interviewing with a company that actually cares about the happiness
of their employees, then they tend to make this pretty obvious pretty quickly.
I would suggest that the ones who make it obvious are the ones you want to be
working for.

------
6d0debc071
> _LD (frustrated): "But I need these features out in the field today. Anyway,
> I don't see what the problem is, it's only a day's worth of work."_

"This is meant to be to assess my competence. They're gambling your deadline
on either being extremely sure that I am going to be good at this job, in
which case they're trying to get a free day's work out of me. Or they're
taking a worse gamble on someone they're not really sure of, in which case
they have no respect for you and by extension their workers.

Either way, you shouldn't be using work that actually matters to test new
entrants; in the former case it exploits me, in the latter case it abuses you.
So, given it's clear I'm not a good cultural fit to this company, I'm going to
have to decline."

~~~
mcv
When they say "I need these features out in the field today", my response
would be: "shall we reschedule the interview then?"

Don't waste your time on an interview when you've got a tight deadline. Make
some time for the interviewee.

------
awjr
I can see how he would be annoyed to do a day's work, however I would
potentially have compromised on an hour or two. I have _discussed_ , in
detail, solutions to a company's technical issues as part of the interview
process.

The interviewer may also have had no other way that they felt they could
evaluate a candidate effectively.

However in defence of the OP, if somebody asked me to work with them for a
full day I would also want paying for my time.

------
err4nt
I have heard that large publishers, like Time magazine, will commission
artists to create covers for multiple stories. They may have up to 5 tentative
cover designs for any publication, then they are free to choose (right up
until press time) which fully-designed cover they wish to run.

The thing is - they PAY for each cover they commission whether they use it or
not.

\----

My career began in graphic design. Many people try to get you to submit work
and only the winner gets paid (or paid in full). I've had other 'take home
assignments' or interview tests that they tell me to block off half a day so
they can 'see my work' to 'tell if I'm a good fit'.

Don't be fooled by any of it - _good work != good workers_ , and it's much
more valuable that they see how you work on their team than how well you
perform in skills that can be taught.

I quickly made a simple rule: I do the work; I get paid.

@Hiring managers: If you want to see a sample of my work, and my past
portfolio isn't good enough for you - pay me for a small freelance project
before offering me a contract. It's low-risk, everybody gets paid and is
happy, and if you don't like what you see, don't give me more work. It's very
simple. Anything less is criminal (where I live).

@Devs: Only have two prices: _Pro_ , and _Pro Bono_. Nothing in-between.

 _Pro_ means there's no such thing as family discount, or friend discount, or
a 'deal' on things. If the person knows you and wants you to be successful in
life the last thing they'll ask you to do is work for less profit. See those
selfish people for what they are. You should be happy to pay full price for
anything, and it just makes it _better_ if you're able to support somebody you
know while paying full price.

 _Pro bono_ means it's $0.00. You should always have at least one project on
your table that you are donating your time back to the community. Ever use
Firefox or Chrome? Linux? OS X? Android? You already understand the benefits
of pro bono work in the open-source software community, but as a worker maybe
there are ways you can give back to the community you live in as well. Find
people who need your skill set and make a habit of learning new things while
helping others.

If you don't do any pro bono work, it's easy to get caught in the 'discount
delusion' and you end up trying to give up all your profit instead. Do pro
bono, and then insist on the full (fair) price for everything else.

------
epaga
This is one of those articles where I more or less agree with the author's
content but absolutely detest the tone and style in which he makes his point.

He could have easily made the same point with far more calm and eloquence -
why the anger and the tone that at least to me comes across as extremely
arrogant?

------
ronaldx
I agree with the principle that you should charge a day rate for a day's work.
However, I don't agree with the author in this case.

For the author, this is an unusually genuine opportunity to see what the work
is actually going to be like.

If the author feels that compensation for this time is necessary, they ought
to confirm the salary would be at a level to cover the time-cost and risk of
interviewing.

Asking for money up-front is (unfortunately) sending a signal that you need to
be compensated early because you expect not to be employed as a result of your
work.

------
S_A_P
I've noticed a trend as of late with developer blogs. It seems that a bull
market for developers has made a bunch of prima donnas of some of these folks.
The point made is valid(dont work for free, and the interview process is
broken), but seems he also felt the need to include all of the essential
holier than thou blog techniques to make this point: \- a "mock" conversation
that leaves the person in charge flummoxed \- use of the word "hipster" using
this word is now kind of self parodying... \- inferences that he shares the
love by contributing to open source \- use of the f word to drive the point
home.

So I came away thinking this guy was a dick and probably difficult to work
with, I wouldnt hire this guy even if he was the best developer Ive ever met.

That said, yes- the interview process is broken, there needs to be a better
way to assess developers in the real world and not resort to trivia and
"working for free". I think its been proposed here pretty often that a small
short term contract is probably about the best way to be fair to both parties.
The developer gets to show off what he/she is capable of, and doesn't have to
give away IP for free. The company is protected by not having to make a
judgement call based on how he/she answers programming trivia. The team gets
to see how this person works and thinks about problems, especially if it is an
in person interview.

------
hoop
Umm, I WISH all of my past employers let me peak at their codebase, experience
their development process, and pair with an employee before asked to accept an
offer.

FWIW, I did a free "starter project" for my current position and it was
completely awesome. Worked with many teams, learned a few codebases, learned
the metrics/logging systems, and learned the true size and formation of the
production environment. A+++, would interview again.

------
alkonaut
A full day is unreasonable for an interview. But "working for free" for a
while isn't. Of course they want to see you working on that particular
codebase rather than some other code. And even more obviously you _want_ to
jump on the opportunity to see the code. An hour or two of pairing is
completely reasonable.

That said: shipping code written by a person being interviewed is nonsense.
Either the person was assigned completely menial tasks which doesn't evaluate
their skill at all, _or_ the manager is a complete nutjob that wants to ship
features written by someone who has never seen the code before.

If the employer can't provide a person to pair with, and says you should spend
an entire day coding features to go live immediately, it would actually seem
like the employer believes interviews can be used as free labour. That idea is
so stupid it is hopefully rare enough that it doesn't even deserve
blogging/discussing. There are tons of useless interview procedures that
actually deserve discussing.

------
swalsh
Personally, i'd be okay pair programming on a base. But there's no way I'd do
it for a WHOLE DAY. If i'm unemployed... maybe, but if i'm just looking for
something different. I'd never have the time to spend a day at an interview.
These guys aren't sharing the risk evenly here. There are 3 scenarios. We both
like each other, i get hired. I don't like them or they don't like me and I
don't get hired. 2 out of the 3 scenarios end in a no hire. They may loose a
small amount of productivity, but I loose a day.

------
Angostura
Personally, if it is a job I'm really interested in I would prefer to show my
chops offering some free consultancy on an interesting problem, rather than
answer daft hypothetical questions for an hour and a half.

But no, I wouldn't do it for a whole day.

------
yeukhon
Imagine you apply for Google or Facebook, you know, a dream job undergraduates
want to be in and they said "dude you can hack on this little ticket with me
today and I will show you the codebase." I am sure in this case majority would
say "fuck yeah let me see how good your codebase is."

Like many have said. One way to find out whether you like to work or not is
whether the code looks interesting, how your co-workers work with you and what
type of problems they are solving.

------
VLM
One missing aspect in the discussion is its pair programming not here's a task
see you again in eight hours.

I'd grill the heck out of my pair partner. Interviews go both ways and I hope
I'd be paired with a real live employee not future supvr. I would probably
learn more about company culture from that guy in 5 minutes than I could from
management in multiple hours of regular interview. Its worth it to me.

I'd also look at it like an intrusion, uh, experiment. How much can I learn
about this place in a day. Not being sneaky about it at all. You're going to
be exploring the dark corners of the environment once/if you're on the job as
a regular employee, so start shining a flashlight in there today. Yeah yeah
they said we'd implement feature XYZ and we are doing that but it doesn't mean
I don't read the surrounding code and verbally grill mr pair partner about his
firewall or DB or caching system or whatever semi-related stuff I can talk
about. Thats interesting. I'll trade labor for "interesting" anytime.

Its a pair event. Maybe I'm just old but I'm assuming I'd pull off a
partnership where I talk about architecture and the pair, if he approves, does
the grunt work (and maybe he intentionally sticks errors in to see if I can
grunt as well as he can). Yes I know thats not exactly traditional pair
programming but then again this isn't pair programming, its an interview of
both sides. On the other hand, if their idea of pair programming is some dude
micromanages me while I do all the work, I agree with the original author, F
that. We just don't have enough detail.

It kind of sounds like if I ran into this dude at a bar or a con and we
started talking shop about life in the biz, we'd have a fun old time talking
and then he'd surprise me by sending me a bill later.

If I show up for a short interview at 9am and they demand me sit around till
5pm they better be feeding and hydrating me, and not cheap mcdonalds either.
This actually happened to me once, and everyone left happy and well fed and
that's exactly how it should be. Maybe I'm a cheap date but I'll "work" for a
day for a $200 steakhouse lunch. Not every day, duh, but...

Finally "if we decide to hire you, your salary starts today" sounds like a
fair deal to me.

~~~
eshvk
I don't mean to knock on the pair programming model. It works amazingly for
some people, there are cults around it disguised as consultancies and I even
had fun with a few pair programming exercises. But... does your company
actually pair program? If not, how do you know that you are not testing pair
programming skills rather than testing whether the person can work on your
stuff?

For example, when I write code, I write it in iterative drafts. I find that my
train of thought breaks when someone points out a trivial piece of
syntactically wrong code that I put in there as a filler for stuff that I am
going to work on once I have finished iteration 1. I think of it more like
solving a math problem where I sketch a picture and then gradually turn it
into a sigma/lambda type proof. It is incredibly distracting if someone stops
you in the middle of the picture and asks you how this has any connection to
the final product.

------
hawkharris
During my recent search for a programming job, two companies gave me tests to
assess my technical skills.

The first company's test was similar to that which the OP describes. A manager
gave me a list of company contacts and asked me to build an interface for
sifting through it. It was a boring, tedious task that benefited the company,
but wasn't particularly representative of my skills or knowledge.

Contrast that with the second firm, which gave me a coding challenge. They
gave me a list of prompts, including interesting ones such as "Build your own
A.I. algorithm that can interpret poker hands."

Not only was the second test more interesting and indicative of my skills, it
made me respect the company a lot more. I ended up accepting a job with the
second company because their creative interviewing approach made me more
excited about their offer.

------
legacy2013
A company I recently interviewed for handled assessing my technical skills in
a way I found acceptable without having to pay me. I was sent a small
Requirements document to program a small app that had nothing to do with their
application, but would show off my technical chops. I was told to use whatever
language and framework I wanted, but it had to be production ready code. I
spent a little over half a day working on it and submitted it. During the on
site interview I was given an hour to update the application with new
requirements, then I went through a Peer Review as if the code was going out
to the customer.

I thought this was completely fair, as I wasn't doing work for them but they
were able to receive a fair assessment of my skills through more than, "Write
a recursive function to calculate the factorial of a number"

Having an interviewee code on a live code base, whether or not they are being
paid, is just a bad idea. They don't know anything about the code or
architecture of the project, and aren't as invested in the product as the
people actually working for the company are. What happens if the person writes
some bad code that works? Do you throw it out? Will it slip through the
cracks? What if they change something that was already coded that they don't
know breaks something else? Do you not allow them access to the rest of the
code base? The questions go on and on, just save yourself the trouble and
don't do it. The fake application idea works great

------
nc
Anything more than an hour or two should be paid for. That's been my
experience interviewing across London and SF.

Completely agree with the author, being asked to create potentially
production-izable work is ethically wrong.

On the flip side, you learn a ton about how the engineering culture by looking
at their codebase.

~~~
ygra
I wonder how the copyright situation would be if you were to write code during
your interview that they continue to use. That's _before_ any sort of contract
that details what rights the company has to your work (since they cannot take
your copyright they usually reserve all other ways of using it). So
technically that's still your work and you have full rights to it.

~~~
nc
IANAL

You're right you'd own full rights to your work. That doesn't make a
difference though - you'd realistically never sue them.

------
jerven
I completely agree with the blog post writer. I have a job, and if I was to
work on some other companies code base while still working for the current
one, all kinds of copyright issues ensue (Swiss).

Having someone, who is not an employee mess around in your codebase before
they are hired is a lawsuit waiting to happen. Not worth it, and if you could
convince me to come into your office for an interview and this is what awaits
me I am leaving in no time.

What happens if you don't hire the guy and sell a 100,000 copies with his work
product in there? Do you own the copyrights or have a license to it? Probably
not, and if it was me coding then my lawyer would have a field day with you
and your company.

So besides the insanity of not hiring a developer like you hire anyone else by
references, reputation and limited work sample tests. Do you think you can
tell some lawyer, please work on this case for 8 hours and then I will tell
you if you get hired is going to go along with this? He will bill you 4000 chf
for the pleasure and so would I.

In Europe you have probation periods, i.e. you hire someone and find out that
they can't do the work you terminate them on the spot. Is that expensive,
relatively yes. But if that happens you already screwed up weeks earlier and
it is time to pay the piper.

This entire consult to hire, or whole day interviews just seems unacceptably
unproductive and ethically as well as legally questionable.

------
iamthepieman
I understand the reluctance to work on the production code for an entire day.
But like others have commented, I would rather do that and get a chance to see
their end-to-end process rather than coming in on the first day and finding
their dev environment is a complete mess.

I've come in as the new guy on a project and been greeted with a zip file of
the code base (already out of date). It was complete with hard links to the
main developers personal test database running on his machine.

------
johnchristopher
I do not fully understand some of the negative comments from HN in that case.

If the same story had happened to a graphic designer then most would agree,as
usual in that case, that you have to set limits and not work for free "just to
see what you can do".

~~~
eshvk
> If the same story had happened to a graphic designer then most would
> agree,as usual in that case, that you have to set limits and not work for
> free "just to see what you can do".

On the flip side, literally every interesting answer that you give folks in an
interview process could potentially be considered to be free work. I used to
work on recommendation systems. Say, I go interview at another company in the
same space, literally any potential what-if machine learning problem can
eventually get into the situation where it goes off text book fairly quickly.
At that point, any information that I talk about has two values: 1) it helps
the people understand that I can do this shit. 2) it also helps them maybe
solve the problem based on my experiences from my previous job. In the case of
2), they are essentially getting free work. How do you resolve such a
situation? Should we have an industry wide standard where people pay you a
market rate for every hour you interview?

~~~
lucasnemeth
[http://dilbert.com/strips/comic/2010-04-02/](http://dilbert.com/strips/comic/2010-04-02/)

------
staticelf
After reading on that page and coming back, I felt a bit blind.

But I agree with the post. Very well written.

------
lifeisstillgood
1\. I will hack on _my_ codebase for an interview. Look at my github account
and choose say three issues. I will fix one and you can see the pull request.

2\. Otherwise, fuck you, hire me. I am available on a day rate for heavens
sake. You can throw me a project that will tart up your site, improve your
jenkins flow, add 100 test cases. Whatever.

This is a massively scalable approach, an the way you should be parcelling out
work most of the time.

------
throwaway0094
That's fine. We'll try to evaluate your abilities in some other way, with the
initial impression that you're a prick. :-/

A day is a pretty unreasonable request. Maybe an hour would be more
reasonable?

------
mapleoin
It seems everyone has their own opinion on what a tech interview should look
like on both sides of the barricades. I think it would be great for companies
to advertise the interview process in the job ad. Just three lines on the
various steps in the process would help a lot.

FWIW, I really like it when I can hack or even see their codebase upfront.

------
tocomment
A whole day is a little excessive but other wise that's exactly what an
interview should be. I'd like nothing better than to see the actual code I'd
be working with and see how I work together with others on the team.

In fact I once passed on a job offer because they wouldn't let me see the code
until I accepted.

------
ctz
I don't see what the problem is: it's clearly not work for hire, and he
doesn't mention any explicit copyright assignment. At the end of the day the
candidate retains copyright, and the company has no right to the changes.

(Of course, the idea of a day-long technical interview exercise is truly
insane.)

~~~
6d0debc071
The code was going out at the end of the day. Whether they had the copyright
or not, they clearly intended to use it. What's he going to do; take them to
court over it?

~~~
jerven
I would, and if it wasn't me my current employer might...

------
rilindo
The developer does came across as a prick. The thing is, does the company
allow anybody to access the code? Probably not, because that code is very
likely proprietary company information that only certain people are allow to
view and modify.

So from that standpoint, validating the skill set using opensource tools would
be the way to go. Having an outsider view and modify internal company code
demonstrates poor judgement on the part of the interview, as that code is not
her/his to just expose to anybody. I would be wary of even considering that
role if interviewer is willing to expose their code without considering the
legal and ethical consequences of that action.

------
greenyoda
Do you really need to take up an entire day of somebody's time just to see how
they code? Is there something that you can see in eight hours of coding with
someone that you can't see in one or two hours?

Also, if you're going to require full-day interviews from your job candidates,
it's not likely that someone who already has a job that they like will be
interested in interviewing with your company. And if you're looking for highly
qualified, experienced developers, they do already have jobs that your company
is trying to lure them away from. You don't want to artificially limit your
candidate pool to students and the unemployed.

------
noonespecial
Hint: A really good way to hire is to actually pay candidates as short term
consultants and see how they do. It's real work, on your real product, likely
for less than you'd spend to "interview" anyway.

------
acorkery
I hope the guy who wrote this is 15.

[http://hownottohireadeveloper.blogspot.co.uk/2013/10/no-
im-g...](http://hownottohireadeveloper.blogspot.co.uk/2013/10/no-im-going-to-
test-you.html)

------
lucasnemeth
Well, I've made a interview at a company that asked for pair programming in
their codebase, but actually paid for it. Since it was just 2 hours, it was
cheap for them, and I didn't felt exploited. I felt it was a great way to get
to know the company and discuss real code. I really don't like algorithmic
interviews, they normally just test you CS 101 memory under pressure.

------
codingdave
I get his point, but this is the wrong way to express it.

For high-pay, high-impact jobs, 8 hours of time to get through the hiring
process is not unreasonable. My current job had a few hours of interviews even
after they had narrowed the candidate pool down to just myself, to be sure I
was a fit for the company culture. VP/C-level positions in large companies
will put you through the ringer with multiple days worth of discussions.

I would gladly pair program for a day vs. 20 hours of interviews, tests, and
other evaluations. One day, get it all done, and get a decision. Sounds great,
especially if I had already set my day aside for the interview.

So my guess is that aside from the obvious attitude problems, this guy has
never held a truly senior level position, because he clearly does not
understand the time that goes into hiring. I highly doubt this company had 50
people pair program with them. This guy was probably their final candidate,
and probably would have had a job offer by the end of the day if he had chosen
to be cooperative.

------
bsg75
> we've got some features I want to implement and push live by the end of the
> day

This is not an interview.

The interviewer is focused on his "regular" job, not the candidate. Plus, the
candidate can't possibly become fluent enough in the company's
app/API/codebase to actually accomplish the task in a day.

Interfail.

------
cdata
On the one hand, TFA is obviously put off by both the tech stack and the
hiring procedure. This suggests to me the possibility of a poor cultural fit,
so the outcome is probably for the best.

On the other hand, it is reasonable to have a backup plan for situations where
someone is adament about not working on your proprietary code for free. Any
legal issues aside, as someone familiar with the existing code base, a lead
should be able to conceive of a contrived scenario that closely maps to work
that will be done on a day to day basis.

While I am personally an advocate for contributing to open source projects as
part of a company's cultural, that is not something that all companies are
okay with, or that all leads see as valuable. Without judging one way or
another, this is another factor that should be considered for cultural fit.

------
alisnic
well, at least they didn't give you puzzles

------
meshko
As flawed as the interviews are, whatever you do that makes you filter out a
person with an attitude of this type, it is probably working.

------
QuantumGood
If they _are_ really hiring, the interviewee should do it. If he can't sense
whether they are really hiring, he shouldn't do it. But it should be preceded
by _something_ else first, such as fizzbuzz.

And that said, it should be shorter than a day, but still, if they're hiring
he's there because he wants the position, and this is an excellent test.

------
rschooley
Pair programming on a company's app is the single easiest way to know what you
are getting yourself into.

I recently did a full day of this and by the end I understood their whole
stack, where the system failed, and managed to find a, "oh shit look at
that... that's awful" part of the code.

I would take 4 hours in a potential employer's codebase in a heartbeat.

------
meerita
Why they can't foresee this instead making work for free? I mean, you get a
technical team who can interview the possible guy, talking code, you can know
what's the guys skill level, if you cannot see how good he is in interview
without making him do puzzles, work for free, then your team's technical skill
is really low.

------
optimiz3
IANAL, but any code written by the interviewee is likely not owned by the
company, thus exposing the company to serious liability if said code is used
in production.

Most employment contracts have a "work for hire" clause with respect to
copyright assignment. In contrast, most interviewees at most sign an NDA.

------
ubercore
We do like real-world assessment when hiring. We always pay the candidate's
contract rate for the hours spent though, and if they don't want to enter that
arrangement, we find some open source or other real-world coding exercise that
doesn't benefit us. Seems only fair.

------
army
I think day-long interviews are fine, and I think real-world work samples are
fine, but the combination is pushing it a bit as far as what is fair to ask
job applicants to do, unless you're going to have some sort of explicit and
upfront agreement about a trial period.

------
mcx
I'm kind of curious, before doing a live coding session or anything like that
has anyone used a snippet of code from the codebase and asked the candidate to
go through the code and see if the candidate understands it / feels
comfortable with their coding style?

------
rkv
This is definitely wrong - legally and morally. I have had companies show me
snippets of their code base to analyze and work on which is fine. Gives me a
better feel about how competent to development team is rather than isolated
puzzles and questions.

------
stcredzero
I would _love_ to see your codebase while interviewing. There's no faster way
of seeing if you're a competent bunch to work with. Also no faster way of
detecting interpersonal and "soft" dysfunctions in your group.

------
gruseom
The cost of having a team member hand-hold a new person through the code is
almost certainly greater than any value the newcomer would add in a day, so if
the OP's argument had any merit, he should have been the one paying them.

------
lxa478
Good lord, does nobody plan before they start hacking away? If someone wanted
to watch me write software, they would see a bunch of scribbling on a notepad
or whiteboard for most of the time.

------
honoredb
I agree here, but I wonder if it'd be kosher to pair program on an open-source
project...that my team totally intends to incorporate into our closed-source
product?

------
hoopism
Perhaps the interviewer could work on the job you had to take PTO just to go
to the interview. Then you can assess his skills and just say you were WFH.
Fair trade?

------
angersock
Just a weird question that occurred to me in the first few paragraphs...

Why is it always a ping-pong table?

I don't get it. Pool tables are way more fun.

------
stox
Silly question: If I hack your code during an interview, don't I own the
changes, and derivatives thereof?

------
ezhil
Too bad! Interviewees are not guinea pigs! High time that interviewers realize
this.

------
aspensmonster
Another article being penalized. On the third page now. I love you, HN
algorithm :)

------
vpatryshev
So you won't see the code until hired? Not very smart, I'm afraid.

------
orenmazor
you charge $56/hr in a daily rate? O_o

~~~
bulatb
High or low?

~~~
orenmazor
low... a good rough base for freelancing should be triple whatever the
salaried hourly rate equivalent would be (i.e. $80k/year => $40/hr, so you
should be charging $120).

I do give a break if I'm charging in bulk (i.e. I have a really long term
ongoing project with you and we negotiate a different rate).

------
jwatte
At end of day: svn revert -r

------
metaphorm
this blog post is bad and the author should feel bad.

------
matiasb
Pretty common!

------
trcollinson
Just a few comments I left on this blog post, maybe someone here will also
find interesting or useful:

I'm sorry, but I must respectfully disagree on a number of points. I think you
make a number of flawed assumptions and miss some great opportunities when you
pass up an interview that allows you to work in their code base.

1) Maybe this company was different, but as for me if I bring in an
interviewee and say "Let's pair on some code for a day, and try to release a
feature" I know up front this will be an up hill battle. Can you really say
that you, an interviewee who has never seen the code base, will suddenly make
amazing production grade code? I am absolutely sure that if I were to grab one
of my other engineers, seasoned in my code base, I would get this task done in
half the time. The point is, I am assessing you to see how you work with me,
what your attitude is while we pair, what your contribution to the process is,
and to a lesser extent how your code looks. Can I get this out of an open
source project enhancement, maybe. But I can certainly get this out of my code
base and it will cost me more than it will cost you in income.

2) You've missed the opportunity to look at my code base for a day. I can't
name the number of times where I have walked into a company after a lovely
interview experience and said to myself "I wish I had seen their code base,
this is horrible". Your other blog post states you want to "test the company"
before you take a job. Test them.

3) I won't discuss how low your day rate is, and how it establishes that you
are an inexpensive engineer (that may have been what you were trying to get
across) but I will discuss investment in future earnings. In my last few jobs
I have received at least a 5 figure signing bonus, and generally a healthy pay
raise (this is generally why I move companies). When I sit down to pair for an
interview "for free" I don't think of it that way. I think of this as an
investment into my future earnings. I am going to get a signing bonus from
this "trendy startup, complete with ping pong table". I am going to get a
healthy pay raise. It will equal far more than my day rate. You might say "But
what if you have to do 5 or 10 of these interviews with companies before you
get a job?" I often do! Getting a job is a numbers game. But I am still highly
compensated for my time, just not right that moment. It is ok to defer
payment. Investments can be quite rewarding. (Not to mention, money isn't
everything. There are other reasons you may want to leave to another company.
Account for that in your equation). If I interview with 10 companies and they
all have me working on their code base, I hope they enjoy the one day of free
work. I won't get paid by all of them. But I will not lose a dime of my own
income in the end. I will make it back when one of those 10 companies hires
me.

I understand from this blog that you would rather not be tested and that you
would rather not work on a companies code base. But a company that wants to
hire you, wants to hand you a pile of cash and a hefty salary and benefits,
needs to assess you somehow. You also need to assess them. I think a day of
pairing on their code base can easily tell you if you are a fit for them and
they are a fit for you. In the case of this interview, maybe they very quickly
figured out you are not for them.

------
tbarbugli
not hired!

------
static_typed
Firstly, I think they wanted to 'assess' not 'asses', well at least I hope so
(spell checking is not optional; even on a blog).

Now, I agree with the blog post: if you want me to code at interview it has to
be open source, pseudocode or a toy library. Not your production app. I don't
want to see you proprietary code till I am hired in case some moron on your
staff later goes on a spree suing people on an open source project where the
code looks 'similar' to what they may have seen in your code-for-free
cheapskate interview process.

------
berntb
Personally, I'd pay money to see the real code _before_ considering a job
offer... :-)

~~~
informatimago
On the other hand, the pingpong table is probably enough hint.

~~~
_jb
I have to disagree there. A workplace that emphasis on fun at work does not
imply bad code quality, nor does it imply good code either. Not sure what the
fuss is about ping pong.

------
stefan_kendall
Does work performed in an interview constitute work for hire? I wonder what
the copyright implications are in the US.

