5 ms·
If you want to find out if a programmer can actually do the job, then it seems to me that the way forward is to have them do something that actually resembles t
by jarcane 10y ago
If you want to find out if a programmer can actually do the job, then it seems to me that the way forward is to have them do something that actually resembles the job.
In the high-end cooking world, it's not uncommon to do one of two things when looking to hire a new cook:
1) Make me a dish. Present the chef with the kitchen, and possibly a specific main ingredient(s), and have them make the best dish they can with that ingredient. Sometimes this is also under some kind of time constraint, to test pressure under fire, but doesn't have to be (great chefs might take weeks to develop a new recipe after all).
2) The "stage". The kitchen takes on the chef temporarily for a short period, where they will actually work on different portions of the line, so that the employer can see both how they perform in real time and where their strengths lie. This can be as little as a single shift, or up to a month or more at some very, very high end kitchens like Thomas Keller's. Crucially as well, this is generally paid (it'd actually be illegal otherwise), so the prospective hiree can actually afford to dedicate that kind of time.
Now some of this is similar to stuff that some tech companies do already. But I think they often miss crucial elements that makes this actually work in a way that's not painful for both parties.
The "make me a dish" method for instance, superficially resembles the infamous "sit down at our computer and code a thing" tests I've read of many times. But there are key differences. Tooling is a pain point in programming that doesn't so much exist in cooking (in fact part of this test can be making sure the prospective cook is familiar with all the basic tools). Sitting in at a foreign editor/IDE/language etc. is likely to be more stressful than is really accurate to how one can expect a new coder to perform in the real world. The simple solution is "bring your own knives." Let the coder use their own machine, or at least give them time to set up a basic version of their favorite tools.
The other thing about "make me a dish" that's missing from programming equivalents that is I think most important is creativity. "Make me a dish" isn't about just proving you can cook, it's about proving you can create. And isn't that something we want from great programmers as well? Generally when I see and read about these tasks their very proscribed: there's a specific spec/demand/puzzle, and often with the expectation it will be solved in a particular way. One test task I was given once actually even specified what data format I was supposed to use to communicate between back and front ends. What about a mini-hackathon/jam approach instead? Give me a subject or a data source and a bit of time, and see what I can come with?
The "stage" as well is something I think is underconsidered with tech companies. Companies spend thousands of dollars on hiring practices and recruiters and advertising, but they can't just do a paid trial period instead? It makes no sense. If you think you've got a promising candidate, just take them on for a couple weeks, point them at a relatively low-hanging fruit task on the issues board, and see how they do.
Alternately, maybe just accept a fucking risk now and again. If the candidate seems to know what they're talking about in the interview, maybe just hire the fucking person, and if they suck, fire them. This is the same stricture and risk 90% of hiring practices are under, and somehow the economy hasn't collapsed yet so I am gonna tentatively suggest it seems to work.
Sometimes the path of least resistance is the easier, cheaper way.
- laichzeit0 10y ago> If the candidate seems to know what they're talking about in the interview, maybe just hire the fucking person, and if they suck, fire them. In some countries, employment laws are so crazy, that it's almost impossible to fire someone willy nilly because they "suck". You have to give them written warnings, re-"skill" them, move them to different departments, etc. It's such a pain in the ass and then they still take you to court for unfair dismissal.
- seren 10y agoEven in countries with labor laws, people usually have a 3 to 6 months trial periods where they can be fired at will. I think the true deterrent is not the law, but that it is rather expensive to train someone for 2 months then have to fire him/her, and find someone else.
- majewsky 10y agoIn Germany, new employees typically have a trial period where they can be fired on short notice. Usually 3-6 months, depending on the wording of the contract. Dismissal protection only kicks in after the trial period.
- tehrei 10y agoEven socialist utopia Europe has month-long (sometimes up to three) "probation period" baked in our employment contracts which states "employer can fire employee at any point during that time with zero notice for any reason". As far as I know, the Americas use "at-will" employment, meaning you can be fired at any point with zero notice. I believe you that some countries exist with crazy(er) employment laws, but your argument doesn't hold water for Europe and the Americas.
- pm215 10y agoOne problem with "take on people for a trial period" is that it's more risky for the candidate too. If you happen to be unemployed then doing a trial-work-period is obviously an improvement on not working at all, but otherwise I'm going to be reluctant to quit my current job for an "after a couple of months we may say sorry, didn't work out" setup. (That's different from the current standard '3-6 months is a probationary period' because right now the assumption is that unless you actually screw up you get the job, so it's not an in-practice risk for a competent employee. With a more definite "trial period" approach the employer is going to be more likely to say 'no' at the end -- otherwise the "pick who to trial" question is still just as high-stakes as "who do we hire" was and they haven't gained anything from the change.)