Maybe effective programmer hiring is just an unsolved problem.
Maybe effective programmer hiring is just an unsolved problem.
I'm not defending whiteboarding the knapsack problem so much as I'm defending the difficulty of hiring skilled workers from different walks of life. Tech isn't special, hiring is just hard, and a lot of other industries are actually worse.
* You hire people who end up not being able to do the work (I hear my wife complain about this problem in accounting just about every three days)
* You end up needing more stringent certifications than exist in comp sci land (you mentioned lawyers, so that's one with bar exams, but also accounts with CPA exams, professional engineers, doctors, etc)
* You get proof of prior work
* You rely heavily on recommendations, with all the pros and cons there
Funnily enough, I've heard the same thing from some friends who worked at companies with algorithmic interviews.
> You end up needing more stringent certifications than exist in comp sci land
That sounds great. You just have to study up and take a very hard exam at the beginning of your career instead of having to study up and take a hard exam every few years.
> You get proof of prior work
And what about Github? Most employers want to see proof of prior work unless you've got a very good excuse.
> You rely heavily on recommendations, with all the pros and cons there
This may be the only decent argument against the accounting/engineering/medicine interview. Even with good performance, recommendations are a crap shoot (did you get along well w/your boss, are they pissed you're leaving, do they refuse to give out references to anyone like one contract employer I worked for for a year a long time ago).
But then again, puzzle interviews are also a crap shoot.
Have others had a different experience?
Related, in blog form: https://www.joelonsoftware.com/2006/09/06/finding-great-deve...
It's pretty terrible. There's no other profession that's quite as snobby as the legal profession. If you want to go work for a top firm you need to have gone to one of a handful of law schools. While there you need to have gotten good grades in your first years' classes so that when on campus recruiting happens at the start of the second year you get an interview. These OCI interviews are almost entirely what the tech industry would call culture fit, with all the implications of bias that implies. One a summer position is obtained, the job is yours to lose. Do reasonable work, don't get drunk and vomit on a partner's spouse or blow off your third year classes and you will probably get a job offer with the firm you summered for.
I don't think this is a process any other field should try to emulate. Whiteboard interviews may have their flaw but it's a lot better than:
Did you go to Harvard Law &&
Did you get top 1/3 grades as a 1L &&
Do you remind the partner you are interviewing with of himself and/or his kidThat said, I think all interviews have an element of silliness to them. I know a financial consultant who was quizzed over articles published in the days financial times newspaper. Also know one of our analysts makes candidates do long division on paper! Don't forget the infamous how many golf balls can you fit in a jumbo jet kind of thing.
Friends in more general office jobs like HR, managers, etc, it doesn’t seem much better. It’s different than how to get a software dev job, but to say it’s been better would be a bit much.
This approach is straightforward, real-world, and you can find out about a person this way in as little as 15 minutes.
For code, the key is to find a recent problem your team's have recently had to actually solve. Distill it down. As a interview question designer, give yourself 1/4 to 1/3 the coding interview time and see how far you get implementing the solution. That is the bar: don't expect a candidate to be able to get further than that in the whole time block. You also want to budget time to talk about productionizing the code (metrics, logging, monitoring, etc).
I had a question that I wanted to give and required a couple passing unit tests. After applying the 1/3 time rule, I realized that my question was unfair and I had to alter what I started with.
I've come to the conclusion that one (or both) of the following might be best:
- a small take home project with a reasonable due date (say 5-8 days) that is representative of the kinds of work that is expected on the job. Then, a 1-2 hour code walk through and presentation. Candidate should expect to build, run, debug and describe the code and architecture, tools choices, show source control use etc.
- a 3 month probationary period with a fairly narrow starting role that all new hires expected to be able to code are required to go through; ex: fixing bugs on project X; ramp-up and demonstrate _______ and _______ on project Y.
Doing the take-home project is certainly difficult for some candidates who may have a hard time carving out time to do it - but the hiring manager can offer some flexibility here - and this seems like a much better approach than taking online code quizzes.
The 3 month probationary period seems like a way to detect other on the job performance or interpersonal skills issues that may be a cause for disqualification.
The problem with this is that talented developers generally do not want to work for free on someone else's proprietary software and there is a very real risk of companies trying to abuse this practice to extract free labour from candidates the closer you get to "work that is representative of the kinds of work that is expected."
I do not want to spend hours of my life on unpaid labour for a company that may or may not hire me. Give me the 45-minute algorithmic challenge that puts me on the spot every time.
I also strongly suspect your 3 month probationary period would be an effective anti-signal as well, useful for attracting desperate candidates rather than the ones you really want. You can't reasonably expect a senior engineer to jump at leaving a secure position for a 50/50 shot they might be unemployed in 3 months because they're "not a good cultural fit."
Financial security is important, and I would put up with a lot of shit from my company before I'd consider taking a chance on another one like that.
Although I know some companies (my current one included) have a 3 month "probationary period" where they've only ever let 1 person go at the end out of approximately 150 since I've been there. It's just to make sure you're not a complete goon.
Problem is, it could be really hard to tell apart a company that has a "probationary period" like mine, or a real time that they judge you at the end.
This may happen in some places, but in practice I've never seen a task which actually could be applied anywhere. Most of the time these were toy projects, or simple exercises.
I think you'd easily notice if giving you the test was worth more to the company than all the recruitment time spent on taking to you. It's not free labour if you end up spending hours with each candidate, splitting up real work into "exercise chunks", integrating wildly different styles, validating results, etc.
Especially in the US, asking an employee to give up even more rights is a hard bargain. You run the risk of naturally selecting for employees that can't get hired anywhere else (which tend to either worse, or at the very least require more investment; something you're not willing to do or why have you made them use their time to do a take home and start this contract to hire business)
In my appraisal, more firms just need to recognize that they don't need half the technical skill they think they do. Building a CRUD back end or a mobile app doesn't take deep algorithmic horse power and the engineers you've managed to retain to administer the interview probably aren't qualified to do so anyway.
Also, I find that take home projects in particular are biased against people without free time, eg, parents.
might work at one place, but the next will ask completely different questions. You can’t know everything.