
Use Project-based Interviews Instead of “GitHub” - slig
http://ejohn.org/blog/project-based-interviews/
======
fishtoaster
I would argue that take-home project-based interviews are one of the better
developer interviewing tools I've encountered. They're realistic work-sample
tests, they're low pressure, and they are very high-signal.

They do have the flaw that they might not weed out candidates that are really
slow (since they can generally take as much time as they want on a take-home
project). They also don't weed out candidates who are willing to have someone
else help them significantly with the project.

As such, I've found take-home projects useful _in addition_ to an onsite
interview. At a previous company, we would follow up a take-home project with
an onsite interview involving a couple 1-hour "code this using any
tools/resources you want with no one looking over your shoulder" questions to
prove that they didn't cheat on the take-home and that they can get things
done in a reasonable timeframe. I always felt it was a pretty useful way of
evaluating programmer skill without stupid whiteboard coding.

~~~
memracom
After the work is submitted the following day, if it looks good then call them
in for an interview and ask them what were the weak points of the solution. If
the developer is good, they will have worked it over in their head for the
next day or two, and will have an answer ready.

Asking questions about the work produced is a good way to identify people who
cheated. Ask questions about why and what was your intent with this.

~~~
fishtoaster
Yep; we did that too. The flow was something like:

\- Phone screen with our HR rep to figure out if you're even remotely what
we're looking for \- Takehome challenge to make sure you can code \- Engineer
reviews the challenge and, if good, calls you to discuss the challenge and
discuss your experience in depth. \- If good, come onsite to meet the team, do
a couple 1-hour use-anything challenges, and answer a few higher level long-
form questions. \- Offer.

------
rayiner
I think it's stupid to reject people who don't have an active Github account.
Lots of very talented programmers work on proprietary code, especially outside
the narrow niche of advertising-driven products where companies tend to
produce closed-source software.

~~~
jeresig
Agreed. (I hope that wasn't in response to the blog post, which was in strong
agreement with you.)

~~~
rayiner
No, just a comment based on Chris Andersen's tweet.

------
colechristensen
I have been approached with the project-interview and it left a bad taste in
my mouth leading to me ultimately turning down the interview. Getting a
candidate to do work for you in their free time for no compensation is perhaps
not the best way to attract and find good talent.

If you want to hire me but want to see some real-world work first, give me an
8 hour contract and a fair wage.

~~~
herge
So you have invested 2+ hours writing a cv and a cover letter, and another 4
to 5 getting ready for, going to and finally attending one or more interviews,
and you balk at investing another 4 hours on a project, where your abilities
can really shine over the competition?

~~~
umsm
I don't think the argument was about the misc. time it takes to do things. It
takes time to commute, it takes time to shower, it even takes time to eat.

The issue is that you're working for a prospective company while not being
compensated for it.

------
pmiller2
The benefits don't stop on the hiring side. I would _gladly_ do this for any
position it looks like I'm qualified for, for two reasons. One is that it
gives at least some idea what the work is like. The other is that I've
discovered I turn into an idiot when asked to code in an interview setting
while someone else is watching. :P

(Shameless plug: I am looking, if anyone is after a decent Python programmer.
Email in profile.)

~~~
spicyj
We're hiring Python programmers at Khan Academy too, not just JS! I can't
promise that you'll get a project-based interview but I promise we'll be
friendly.

------
adamb_
It's interesting to see that employers are essentially requiring more effort
from potential job candidates in order for them to be seriously considered,
when the tech industry is currently a candidate's market.

~~~
saryant
I think tech is definitely a candidate's market but the corollary is that the
tech market attracts a lot of candidates who can't perform. Real programming
exercises are perhaps the only way to weed them out.

~~~
Guvante
While I 100% agree you need some kind of code based part of your interview
practice, there is a large range of exercises that are being spoken about.

It goes roughly from whiteboard problems to sitting at a computer with them
over your shoulder to a couple hours before the interview to a full week of
work. Everyone knows the lightest form is necessary the big question is how
much you can get from increasing the complexity before people get annoyed.

~~~
saryant
We give prospective candidates a take-home programming project that should
take 3-5 hours and is clearly not something we could use in production. We
think that's a fair compromise.

------
bitcrusher
For a long time, the whole 'Github profile' stuck in my craw, but recently my
thinking has changed to more of a 'show us your code portfolio', which isn't
much different than a lot of creative job interviews.

When hiring a designer, part of the interview process is showing things that
you have done. It doesn't matter if they're real or not, only that you were
the one who created them. You also talk about 'your process' when designing
those things.

Much the same, I believe that hiring an engineer should be about showing your
portfolio and talking to your 'process', whatever that may be. It's a far more
interesting way to get to know a person, how they reason and what they're
capable of.

~~~
l0gicpath
Hiring a designer is so much different than hiring a software engineer. And
the process of designing should be the least of your worries.

Design is an artistically creative process. Takes talent, I wouldn't hire a
designer if I don't perceive the work they've made as _beautiful_.

But hiring an engineer, there are certain things you can overlook in favour of
their capacity to actually build something. I can overlook their code quality,
but only because we have a boarding process in which one of the things we make
sure a new engineer understands is our quality standard in writing code, the
systems we use to enforce that standard from code reviews to pre-commit hooks
and lint checking.

An engineer has the capacity to adapt to these changes of both quality and
process.

IMHO, you can't teach a designer who isn't talented how to make beautiful
things. Albeit beauty is subjective, but there's still a common ground upon
which the majority will perceive this piece of art work as beautiful.

~~~
bitcrusher
I agree that they are different, however it sounds like I'm not communicating
my idea correctly.

I'm very much _NOT_ interested in code quality from an engineer. I very much
_AM_ interested in how an engineer thinks and approaches solving a problem.

One way to start that conversation is to have a code portfolio that they can
talk to. Why did you do this? What were thinking about when you did that? Did
you start writing some code then refactor? Did you think about the problem for
3 days before you started writing? Do you diagram on paper? Did you model the
data structures before you modeled the application itself?

These are the sorts of questions I'm interested in when I hire someone;
They're also the sorts of questions I want someone who is hiring me to be
interested in.

Using your words:

To me, writing code is an artistically creative process as well, which takes
talent. I wouldn't hire an engineer if I don't perceive their thinking as
_beautiful_

The process for creativity doesn't change just because the expression changes.
Compare the process of writing code with that of painting and you'll find a
lot more similarities than differences.

PG even wrote a book about it.

~~~
l0gicpath
I'm inclined to agree with you, I'm not saying writing code isn't an
artistically creative process.

If I'm are hiring an engineer, the last thing I'll consider is how well is
their code because that can be enhanced (albeit to a certain level, as per
pionar's comment which I also agree with)

If you are hiring a designer, then that's likely the main aspect you'll be
looking at, how _beautiful_ / _creative_ their work/solutions are.

------
ateevchopra
Bravo.! Let me tell you my story. I have been rejected just because I don't
have enough activity on my github account. I am a young college senior. My
most of "good" projects aren't on GitHub. They are not open source. So does
that mean that I don't add up ? No. How can you expect undergrad college
students to have 1000s of commits in popular repos ?

------
jyothepro
I tried project-based interview, the requirement was very simple build a tic-
tac-toe iphone app (player vs device) sometimes device wins and sometimes
player wins.

I made this iPhone
app([https://github.com/jyothepro/tictactoe](https://github.com/jyothepro/tictactoe))
but they rejected me. Reason for rejection was not very clear. I felt I wasted
my time :(

~~~
visualR
Maybe there were a swarm of applicants. You were obviously qualified but they
just went with someone else for no reason that reflects on you.

~~~
dxbydt
> You were obviously qualified

Not so sure about that. I looked at parent's code submission. In particular,
his game logic looks like this -
[https://github.com/jyothepro/tictactoe/blob/master/TicTacToe...](https://github.com/jyothepro/tictactoe/blob/master/TicTacToe/TicTacToeGameModel.m)

This is unduly verbose & has newbie programmer written all over it.

Here, I just wrote up the same tictactoe over lunch in the repl -
[https://gist.github.com/krishnanraman/7591435](https://gist.github.com/krishnanraman/7591435)

Without much thought into optimiziation, refactoring etc., its about 20 lines
of actual code. Random TicTacToe is a very simple game. Even if you take that
Scala & translate line by line into Objective-C, you shouldn't see an
exponential explosion from 20 lines to 400+ lines for game logic alone.

~~~
jyothepro
When you say "unduly verbose" I am not sure what exactly the interviewer/you
are looking here. I purposefully made it verbose so that anyone who calls
himself a programmer should understand what I am doing.

Even I dint spend any time in refactoring or optimization as this is just a
hack to get past a job interview.

When an interviewer gives you tasks like this do they expect optimized and
refactored code?

------
erobbins
I am very much in favor of a low time commitment project interview, something
that takes maybe 3-4 hours to complete.

I've written a ton of code in my career, and 99% of it is wholly owned by the
companies who I wrote it in the employ of, and I don't have the legal right to
show it to anyone much less put it on public display. Some people would say
the answer to that is doing OSS/other projects in my spare time... but I have
hobbies, and other interests, and don't want to spend my whole life writing
code.

Give me an opportunity at no cost to you and low (time) cost to me to show
what I can do, and we will both be in a better position to evaluate each
other.

~~~
aaronblohowiak
the intensity of the project should ramp with the seriousness of both sides;
we start with a 30 minute phone screen then a very simple 30 minute "make
these tests pass" and then bring people in for a day of coding/chatting.
requiring a project as a first-pass filter is a bit much to ask of candidates
and interviewers.

~~~
erobbins
Yeah, that's essentially what I meant. A coding challenge that takes a handful
of hours as a post phone screen/pre onsite screen.. not the first step in the
process :)

------
haney
If AT ALL possible I prefer to contract developers. We pay a candidate for
their time and pair program with them for a week. This lets us evaluate not
only their ability to code but also their desire to learn and their team
culture fit. Since I've started doing this with a new team it's been a lot
easier to manage the people that I work with. All the existing developers get
to know someone and they all get veto power over whether its someone that
they'd want to work with AFTER they're worked with them.

~~~
rtfeldman
It's hard enough trying to find good people; as pleasant as that sounds, I
can't imagine narrowing my criteria to "good people who can take a week off
their current job to do contract work while we decide whether to make them a
full offer."

~~~
flashblu
That definitely seems tough. Maybe shortening the project time to a couple
days (over a weekend?) or a few weeknights would help. From the hiring side at
least, the time investment would seem worthwhile, considering you're
evaluating a potential team member.

------
nobodysfool
Come on, a place like Khan academy, who is creating virtual, anywhere
classroom, and they don't have remote positions?

~~~
jeresig
Sure we go! At least 3 people on our dev team are remote, myself included.

~~~
zerr
World-wide?

------
memracom
For all these types of coding interviews I think that the company should state
up front how they evaluate it. Is that clicking keyboard in the background
someone typing in the code to run it and see if it works? Are they looking for
clear communications, do they want you to just solve the problem or is it more
important to lay out that whiteboard code exactly the way you would in a
source code file?

And what about unit tests? If they give you a problem to code on a whiteboard,
do they want to see TDD red green refactor cycles?

And is this the only problem they want you to work on in the hour or is there
another one coming when you finish?

------
visualR
What if I have a Bitbucket profile? Or is that not hipster enough?

~~~
jeresig
You should probably read the blog post. "And to clarify, some people seem to
be getting caught up in the terminology – I see many people using ‘Github’ as
a placeholder for ‘any OSS activity’, I hope no one is being that literal."

~~~
visualR
I know, I'm referring to the tweet you are responding to. But let's be honest,
Bitbucket and hg do get some irrational hate in certain hacker circles.

