News for hackers. Stuff that matters.
Re:How to Hire a Programmer by cletus on Tuesday March 06, 2012 @12:53AM (#3669816)
As much as people like to deride #1 (here and elsewhere) it's one of the most useful filters (in terms of filter value for effort spent). It's not a positive filter (in that a candidate who passes won't necessarily be a great programmer) but it is a great negative filter (a candidate who fails almost certainly isn't).

#2 I have mixed feelings about. A lot of people work on things where the source code (even the product) isn't visible. Having an SO profile is semi-useful but lack of one doesn't really mean anything. Github only makes sense if you work on open source (and frankly I'm tired of the incredibly naive "Github is the new CV" postings that pop up every few weeks).

#5 is what I really object to. At least in this case you've gone through the initial filters. Some companies use an audition project as an initial filter before you've ever spoken to anyone (you know, to see if you'd be a cultural fit and so on). I have zero time for this.

The problem with an audition project is that anyone truly good won't have to jump through those kinds of hoops. They'll have their pick of offers as is. Job seeking through a traditional (non-network) route is relatively low percentage such that there's only so much time worth investing in any particular position.

I'm happy to prove to you know I have a solid enough foundation in data structures and algorithms, I can program my way out of a paper bag and I can problem solve and communicate effectively but as soon as you ask me to spend a week--even a day--on some audition project, forget it.

Honestly, hiring isn't that hard. You just need people who are good at hiring to do it. I've done 10 or so "lunch interviews" at Google this year. This isn't an interview per se. It's simply taking someone to lunch in between their onsite interviews. It's a chance for the candidate to unwind, ask some questions, etc. But there is no feedback element to the process.

Of the 10 after 10 minutes I predicted 8 wouldn't get hired, 1 would and 1 I wasn't sure about. Turns out the "yes" declined an offer and the "maybe" didn't get one and I was otherwise right. And this is simply from going to lunch with them.

My formula is:

1. Filter early. "Hello world" and other simple programming tests;

2. Establish technical foundation and problem-solving ability (with one algorithm-related question that should be coded); and

3. Otherwise ascertaining personality/cultural fit. This you should get just from talking to someone for 10-15 minutes.

It's really not that hard. You just need someone who can actually do it to do it.

Re:How to Hire a Programmer by sireat on Tuesday March 06, 2012 @03:58AM (#3670219)
#2 is indeed a mixed bag. Hopefully the interviewer realized that only source code samples are a good positive indicator of programming prowess, the rest are fluff, nice to have, but fluff none the less.

The best programmer (I estimate he is the 10x at least) that I know, has no SO profile, no tumblr, no twitter. Pretty sure, he has not committed any patches to open source projects in recent years. He comes at work, gets more done in 5 hours than a team of 4-5 people, then he leaves to go home to his family. He is the one who can handle 100k project with ease (and probably 1million project). His knowledge of code and the ability to travel move up/down abstraction chain is astounding, he knows more about my source code than me, and he only has glanced on it a few times.

If he was looking for a new job, he would not be able to show the closed source he is working on, as it is a large embedded project.

Granted this is an edge case, but there are programmers like him out there.

Re:How to Hire a Programmer by kamaal on Tuesday March 06, 2012 @04:21AM (#3670260)
Actually there are a lot of programmers like these. I have a relative of mine, who has around 20+ experience in embedded software/hardware areas.

He has made tons of cash, built amazing stuff. Run and sold a start up and is currently running a small company. He has enough cash to retire, but he is one of the folks to whom retirement doesn't mean not working. He doesn't have a blog, his idea of social network is probably his linkedin profile, nothing more. And he doesn't harp and tweet about every single discovery he is making every two hours(which is pretty common today). He just works like crazy, gets work done, makes his money as silently as he can.

There are a lot of folks like these, but they are hidden, they keep to themselves. Make enough money doing what they like. And are generally at places they want to work at. You can't really interview such people. Because they choose you, you don't get to choose them.

So clearly common interviewing techniques are not for guys like these. And most of these guys don't work at big Web giants.

Re:How to Hire a Programmer by bryanlarsen on Tuesday March 06, 2012 @09:01AM (#3670985)
He has a portfolio, then. For example, here's my portfolio from 2002-2006: http://www.lumenera.com/products/surveillance-cameras/index..... I was solely responsible for version 1.0 of the software and led the team that did version 2.0.
Re:How to Hire a Programmer by bh42222 on Tuesday March 06, 2012 @10:35AM (#3671446)
Sorry, we are now stretching the term "portfolio". Your link is what I would call an item in your resume, with a quick summary about which you would be ready to talk during the interview.

I think when Jeff Atwood says "portfolio" he means not just things you'd put on your resume, but source code and publicly available articles you've written, and for some reason a twitter account.

But not just "I developed that closed source project, over there." That's what everyone has on their resume.

-- Ninja Edit---

Actually I just looked at Jeff's other article, and apparently what he calls a "portfolio", is what I call a well written resume.

Re:How to Hire a Programmer by storborg on Tuesday March 06, 2012 @07:04PM (#3673552)
I think the point is: portfolio = "what did you do?", whereas resume = "where did you work?"
Re:How to Hire a Programmer by bh42222 on Wednesday March 07, 2012 @10:01AM (#3675676)
If all your resume contains is a list of previous employers, that is a horrible resume!

Where/when you worked should be just a company name and a date. That's it. It should be followed by a very brief description of what you did there.

So OP's resume would contain something like:

- Lumera (2002-2006):

I was solely responsible for version 1.0 of the software and led the team that did version 2.0.

Re:How to Hire a Programmer by kamjam on Tuesday March 06, 2012 @01:06PM (#3672087)
I have a relative of mine, who has around 20+ experience in embedded software/hardware areas

How exactly is he going to put up an online portfolio, or a link to a website, when he works in embedded software/hardware. Not everything programming related is done for the web!

Besides, your link that you have provided means nothing since I can't see your source code... unless you are going for a job as a front end coder of course.

Re:How to Hire a Programmer by pgambling on Tuesday March 06, 2012 @10:12AM (#3671319)
Sounds exactly like a senior sw engineer I work with. The guy is incredibly productive and an excellent mentor. He hates social networks, doesn't have a github account, and all his best code (and mine) are locked up in private IP that can't be thrown into a portfolio.

I'd hope that not having a portfolio isn't a deal breaker in Jeff's hiring approach. My co-worker would be able to give any interviewer a very interesting and detailed discussion about past projects.

Re:How to Hire a Programmer by bunderbunder on Tuesday March 06, 2012 @11:54AM (#3671795)
Absolutely there are competent programmers with no hobby code out there. I know, I was one of them when I applied for my current gig.

But if a candidate with the skills for the job really wants it very much, then merely not having any dusty code laying around readily at had should do absolutely nothing to prevent them from being able to deliver a sample, given a few days' notice.

For my part, when they asked for sample code, I said, "Hey, I usually leave my work at work, but if you give me a day I can whip something up for you." And I spent the evening grinding out code, and was able to deliver a tarball the next day.

Re:How to Hire a Programmer by bh42222 on Tuesday March 06, 2012 @10:27AM (#3671405)
#1. Yep, great negative filter. And if I was looking for a job, I would be happy to do this.

#2. Hard. Very good programmers will often be very busy and never get a chance to open source any of their work.

I have so many open source things I'd like to work on, but I am full time employed and when I am done with work I go running, reading books, eating out, anything other than sitting in front of a computer. And I think I'm a better programmer for it.

This is why I find claims that this proves "passion" about programming very dubious.

Now I do happen to have a source forge profile, from an old job that paid me to work on an open source but not free product. It was a critical piece of infrastructure and my job was to do some very tricky things to it.

Every time I've given people a link to my profile and my patches or commit history on that project, they realize they in no way shape or form have the time or energy to grok this huge, old and complex C++ code base, to be able to evaluate my changes to it. Oops!

I end up giving them trivial python scripts I've written in an afternoon.

Also, a twitter account is definite positive? Really?

#3. Yes! As a candidate ask lots of questions and carefully listen to the answers. It's not just you who is auditioning for them!

#4. Who doesn't do this?

#5. Oh boy. If that only worked. I've worked often with contractors who have been very impressive. We almost often make then a great offer to join our team as full time employees. They always easily decline with a smile.

Because they are happy being hired guns, and don't want to go back to being employees.

Now suppose a candidate is willing and able to do this, but what happens when some other company makes them a great offer which doesn't require a week long contracting gig first?

I've been given great offers hours after walking out of the first in-person interview. Unless I am passionately, madly in love with the idea of working for your company, I will not bother. I would bother if I had no other offers, but are you hiring the best then?

And what if the candidate is looking to switch jobs, but professional ethics prevent him from slacking at this current time intensive job? Would they do your contracting thing? What if they don't, but they are in fact far and away the best developer?

I've been in that exact siltation, I've taken vacation days to do in-person interviews. But I would not take a week long contracting job just to get to the face to face interview.

#6. Unless sales is part of the job I wouldn't want "pitching". Personal chemistry with the team you'd be joining is important, but pitching does not have to be part of that evaluation.

Re:How to Hire a Programmer by maak on Tuesday March 06, 2012 @03:48AM (#3670206)
I agree with your point on #2. A github or stack overflow profile is a great measure for graduates, but not as a general filter for experienced professionals.
Re:How to Hire a Programmer by brazzy on Tuesday March 06, 2012 @06:58AM (#3670622)
as soon as you ask me to spend a week--even a day--on some audition project, forget it.

Note that he proposes the audition project to be "a regular consulting gig with an hourly rate", spent on-site doing real work.

You don't have time to earn money doing real work? Then why are you applying?

And even for a "truly good" professional who has his pick of a dozen offers, I could see this as a good idea, since they have just as much reason to be interested in the company's "real" work environment than the company has to be interested in their "real" work performance.

Re:How to Hire a Programmer by CodeMage on Tuesday March 06, 2012 @07:06AM (#3670641)
You don't have time to earn money doing real work? Then why are you applying?

False dichotomy. I'm already earning money doing real work. I'm not applying so that you can cut into my family time. I'm applying because I want work that's more interesting or more money or who knows what. If you really want to know, ask, instead of assuming ;)

EDIT: Clarifying the "more interesting work" expression.

Re:How to Hire a Programmer by brazzy on Tuesday March 06, 2012 @07:49AM (#3670753)
I'm applying because I want work that's more interesting or more money or who knows what.

Apart from the money, such a "audition project" could help you a great deal in deciding whether this company actually meets your expectations.

You're of course right in that it will be difficult to do it like that for someone who already has a fulltime job.

Re:How to Hire a Programmer by tsycho on Tuesday March 06, 2012 @09:40AM (#3671168)
For many people, their current job might not allow this (this is true especially for those who are on visas). Also, many people might not want their current employers to know about their job search, and using a week of their vacation time for an audition project with uncertain reward, is just not practical for them.

I think the audition project is a good idea for people who don't have restrictions like the above, but should not be used to reject those for whom it doesn't make sense.

Re:How to Hire a Programmer by glimcat on Tuesday March 06, 2012 @07:02AM (#3670630)
My only real qualm with this is whether to bill them my consulting rate or to put up with something well below the salary I would expect for ongoing stuff.

But if it's short and interesting, it usually falls into "I don't care" and stays there.

Re:How to Hire a Programmer by mjwalshe on Tuesday March 06, 2012 @09:37AM (#3671155)
You may all ready have a job and they do tend to get a bit upset if you take a week off to work for another company.
Re:How to Hire a Programmer by ganley on Wednesday March 07, 2012 @08:11AM (#3675313)
Indeed, at many companies this kind of moonlighting is expressly forbidden.
Re:How to Hire a Programmer by mjwalshe on Wednesday March 07, 2012 @07:28PM (#3678026)
Certainly breaks a number of UK employment laws and is Gross misconduct.
Re:How to Hire a Programmer by jaimzob on Tuesday March 06, 2012 @06:45AM (#3670581)
Agreed. These "assault course" style programmer interviews are getting more ridiculous - and seem nine-parts interviewer ego stroking to one-part ascertaining candidate quality.
Re:How to Hire a Programmer by Raphael_Amiard on Tuesday March 06, 2012 @04:41AM (#3670299)
> I'm happy to prove to you know I have a solid enough foundation in data structures and algorithms, I can program my way out of a paper bag and I can problem solve and communicate effectively but as soon as you ask me to spend a week--even a day--on some audition project, forget it.

I think it's about balance, an who you are talking to. If i were hiring a young programmer without that much prior experience, having some hobby projects for a portfolio, that seems to be a nice fit, but i want some confirmation, the idea of an audition project seems very nice to me.

And to take an extreme example, if you are hiring Peter Norvig (lucky you), you won't even think about that audition project.

I never hired anybody, just seems the way i would do things. Also on my first computing gig, i had an audition project, and i found it very nice. I was young and happy to prove myself (still am :))

Re:How to Hire a Programmer by just_a_question on Tuesday March 06, 2012 @03:52AM (#3670212)
What were the cues that you think influenced your decision on those 10? Would be interesting to know...
Re:How to Hire a Programmer by georgieporgie on Tuesday March 06, 2012 @02:05AM (#3670014)
Of the 10 after 10 minutes I predicted...

Having visited the Google SF campus once (and knowing a number of Googlers), I picked up on a certain monoculture. This makes me question whether you were objectively picking out good and bad candidates, versus intuitively deciding whether someone will fit in the Google clique.

Re:How to Hire a Programmer by larsberg on Tuesday March 06, 2012 @07:55AM (#3670771)
> deciding whether someone will fit in the Google clique

That can be shockingly important. You can be a great developer, but still not a good fit for a company. As an example, I saw several employees top-out at relatively low points at MSFT but then go to Google and have heard back that they have done shockingly well. I would bet that the reverse is also true.

Some of the best interviewers I've had on my loops were people who had a great grasp of whether a person was not only smart, but whether they would be successful long-term (e.g. if this entire division got killed, would they still do great work elsewhere in the company?).

While I can't characterize hire/no-hire decisions for old legal reasons, I can certainly say that many of the people who struggled at MSFT but excelled at Google favored closed-door remote-work style hacking over personal interaction code-design. One style is not necessarily better than the other, but for people who can only work in one mode or the other, they will find themselves career-limited in the long term if they go someplace that does not fit with their work style.

Re:How to Hire a Programmer by xtracto on Tuesday March 06, 2012 @04:23AM (#3670264)
>versus intuitively deciding whether someone will fit in the Google clique.

Which I thing is also very important. Imagine making your current colleagues work with someone that just does not fit! everybody might become miserable.

Also, one point I did not see mentioned, and have not seen in any interview I have taken is code reading. If I were looking for a colleague to work in my project, I would give him two or three pages of code from my system which I think are "interesting" and ask him to tell me what it does and some other stuff he observes.

It is most likely that reading the current code is something he/she will be doing at least in the beginning, I would like to make shure she knows how to read code (extra points if it is a language she does not write in, but can grasp the idea of what happens).

Re:How to Hire a Programmer by Estragon on Tuesday March 06, 2012 @04:29AM (#3670277)

  > a certain monoculture
I'm curious about the common characteristics you saw in people there.