This analogy is backwards... Hiring a programmer is an exchange of company money (or equity, benefits, etc) for a service (programming skills). Renting a car is an exchange of one's own money for a service (use of the car).
In this case, the person renting the car would be "interviewing" the car rental company to determine if their service is worth their money.
>> In this case, the person renting the car would be "interviewing" the car rental company to determine if their service is worth their money.
It goes both ways... the rental car agency interviews the person to make sure she is trustworthy of driving the car. The author is asking you to think about the relationship a little more abstractly than simply who is giving money to whom.
Having said, that, I think this is a poor analogy because I don't find it particularly illuminating and the situations just don't seem very... analogous.
Something like "if interviewing carpenters was like interviewing programmers" would work, with various questions regarding trivia about the Mightyman Bansaw 3000, specific experience using square-faced carbon tipped reverse-threaded screws and comparisons between building red versus white cabinets.
That, and cars are interchangeable standardized goods. Programmers vary widely in ability. The process's closest analogy is buying a home. You want to take a walk through, compare multiple properties, get an inspection report, have everything tidy legal-wise, etc.
true but i would hope we all know what hes getting at. And by the way its hilarious because anyone who has been a contractor and gone through a staffing firm knows EXACTLY that same situation
Maybe this is me having spent too much time thinking about econ, but I don't get why the analogy is backwards here. What is special about the person spending money? A car rental company is filling a large number of slots, and the renter would like to fill one. Why is that not as natural an analogy point for you?
Instead of "whoever is giving up money should do the due diligence," I would suggest you consider "both sides should do increasing due diligence as the importance of a decision increases."
From this perspective, the article is pointing out the dumbness of some due diligence methods currently being used at software companies.
Because car rental companies exist to provide a service to the people who walk into them, so we walk in expecting to be served, providing we can pay. It's a simple transaction; they get money, you get use of a car. Everyone is happy. If they start giving you the third degree, you'll be inclined to respond, "Geez, do they want my money or not?".
To walk into a job interview with the same expectation of being "served" is ridiculous. It's true that if they're smart, they will try to entice you and provide a nice experience, but primarily they are trying to decide whether to spend large amounts of time and money on you versus someone else. Most companies are not in the business of quickly and efficiently hiring as many people off the street as possible. You can be flustered by an interviewer's poor technique, but don't be impatient to receive the job offer you feel entitled to.
The analogy is backwards if it is a direct hire by the company. The article used an agency, which gets money from the hiring company for placing the candidate. If you look it at like that then the programmer is the car and the hiring company is the driver.
Maybe it's because I just made the egregious mistake of getting drawn into a gun-control debate with a friend and his friends on Facebook, but hyperbolic arguments by analogy feel really silly, cheap, and disingenuous to me right now...
I find that analogies are a poor argumentation technique overall, even if they are not hyperbolic. It's always possible to find similarities between wildly different and even opposing ideas. The details matter.
I find analogies very good for explaining concepts (to make the details easier to understand), but absolutely horrible for debates. Analogies generally over simplify issues, and hackers are particularly bad at arguing the analogy to an absurd extent instead of arguing the main premise behind it. It happens here all the time.
It seems like this example helps highlight the absurdity of requiring experience in $Language for $Years (or other similar too-constrained metrics) when an Able Programmer can just learn that stuff. The general populace views what we do as magic, but understands being able to drive very well. This effectively says that programming is a general skill, and that a good programmer should be able to learn it if they already know something similar. So, your Visual Studio 2012-only shop can hire people w/ 15 years of embedded C experience, and probably get a pretty solid programmer.
We all seem to consider this as true about being a Good Programmer ("Sure, I can learn $language_that_you_use"), but are frustrated by HR departments who don't realize it.
For hiring Excellent Programmer, it is true. For hiring Average Programmer, experience matters a lot - average programmers become proficient slower than excellent ones, so it is better to hire somebody that has already passed most of the learning curve. OTOH, hiring by tool usually doesn't make any sense unless this tool has really steep learning curve (in which case why use it anyway? yes, I know there are exceptions, but generally it's true).
Analogies, if constructed carefully, have a limited use in explaining concepts. The more closely the analogized items resemble each-other, the longer you can hold onto the analogy. To really understand something, you can't be using analogies.
This analogy can hold together for half a sentence at most. The concerns involved in hiring a programmer and selecting a customer to rent cars to have almost nothing in common.
And if you want to use an analogy in an argument, you first have to argue that the analogy is valid.
Articles like this contribute nothing to my understanding of hiring.
Analogies aren't an argumentation technique at all. Analogies are only useful for explaining stuff. They are utterly useless for forming an argument, despite what many people would like to think.
Interviewer#3: How long you been driving your 2010 Escort?
Applicant: About 3 years.
Interviewer#3: Sorry, but we are looking for someone with
experience of driving 2010 Escort for at
least 10 years.
Interviewer#3: We are looking for someone who knows how
operate the navigation screen on the 2010 Escort.
Applicant: My car does not have the navigation option
installed.
Interviewer: Then you do not qualify. Knowing how to
work the navigation system is a priority.
Applicant: I know how to work navigation systems in
general. My car before this one had a navigation system
and I learned it pretty quickly.
Interviewer#3: No. We need people with 10 years of
experience with the actual navigation system on the 2010
Escort.
Note: Ford no longer sells the Escort in the USA. They sell the Focus and the Fiesta. Both terrific little cars.
Interviewer#3: We are willing to accept 8 years of education with a Master's or equivalent on the subject of 2010 Escort navigation systems in lieu of 10 years driving experience, for otherwise qualified candidates
Completely off-topic response to your note, but I loved my 2000 Focus and I was almost sad to sell it. It went through air intake hoses on the transmission about as fast as it did gasoline (hyperbole, but the Arizona heat was hell on that little rubber elbow. Fixing it took 5 minutes and cost $3 once a year, though, so as far as chronic car problems went it was pretty mild). It was still running strong after 12 years, and got my wife from Tucson to Seattle as safe as could be :3
> got my wife from Tucson to Seattle as safe as could be
It's a lot safer, I would have thought, per mile to do long highway drives than lots of short urban journeys, particularly on the separated highways in the USA.
I was witness to the sending of a request for candidates with 3 years of Android experience to HR at 2011 at Intel. They just insisted that two or one isn't enough.
First Android phones were release at 2008.
In other news - I thank god I never were in as bad as interviews as some of you. My worst experience was the interviewer giving up and starting to ask me personal and professional stuff about another candidate to the same position. I guess I did a good job because the other candidate got it, company shutdown withing a year.
My own personal, small sample size experience has shown that if I start questioning things early on in the interview, I can predict fairly well whether or not the company will be a good fit or not. I try not to jump to conclusions but even initial emails and phone calls can make for pretty strong clues.
If I sense during an interview that things aren't going to be a good fit, I still try and finish the interview graciously. There is no use burning any bridge, even if it's one you're 100% certain you'll never use. One trick I do to keep myself from seeming aloof or displeased is to start asking questions about the industry. At this point, I know I don't want the job and probably don't care about the culture, but learning something about an industry you may not know much about could be useful down the line.
Well, if you buy instead of rent, especially used car, that's what 99.99% of salesmen would do. "How much is that car?" - "well, how much can you pay?" They have sometimes prices posted but everybody knows these have little meaning except generic signal of "we consider it an expensive car" or "this one is cheap".
For future interviews, I've collected similar questions to ask of them (questions that I have conveniently worked out or looked up the answer to beforehand), my rationale being, "I want to make sure I would be working with competent peers." And I don't give a fuck if it rubs them the wrong way.
If your rationale is to find out if you're going to work with competent peers, why not asK a question that leads into a proper, deeper technical discussion?
He meant his stated rationale. I'm sure his actual rationale is to try and help the interviewer achieve enlightenment by turning his own pointless methods back on him.
I became unreasonably angry while reading this. I guess it struck a nerve with me for some reason.
During my interviews, I was very charismatic, confident in my skills, was asked technical question that were things I would need day in day out. I landed the job on 100% of those interviews.
There was this one time were the guy kept asking me crap I would never EVER need while working for his company.
Binary tree's, linked lists, pointer arithmatic. "What the fuck?", I thought to myself. This was for a C# developer position for a small 20 person company. Anyways, I thanked him for his time and left. He called me with an offer two weeks later, and I declined. Not going to waste my time with that crap.
---
99% of us will never work for Google, or Amazon, or Twitter - but for your run of the mill software shops. And that's ok.
Out of curiosity, why do you consider binary trees, linked lists, and pointer arithmetic to be so out of the bounds of possibility for work at a job? Those strike me as skills I might find invaluable in one of my software engineers depending on the job.
You probably won't be doing pointer arithmetic in C#. It's been about 5 years since I wrote any C#, but I don't remember any... mostly I remember it as a Java clone, which would preclude pointer arithmetic.
The only time I've ever used them is to speed up drawing. Bitmap.SetPixel is super slow compared to taking a pointer to the raw image data and writing there directly.
Let me offer an explanation: maybe the job he was applying for asked for knowledge and experience in Java, Spring, Hibernate, Grails, Javascript, SQL, CSS, writing stored procs with PL/SQL, performance tuning, node.js, and Git...and the binary trees/linked lists portion only pertains to Java (and maybe Javascript?). More specifically, maybe the guy just hasn't had the need, for whatever reason, to use a binary tree or a linked list recently. I doubt he runs around saying "it's April, I haven't used a TreeMap in a while, let me use one now so it's fresh in my mind for next year's interview".
The point I'm trying to make is that some requirements are very, very wide/broad. And then they'll take one piece of that broad pie and decide to go very, very deep.
And then there's the death knell...you spent time developing deep expertise in something no longer actively used. This applies more to frameworks than languages (i.e. Struts, Prototype, Dojo, etc.)
While I can't speak for the OP, in that situation, I would take this to mean that they aren't sure of the skills they actually need so they're asking general questions that may or may not reveal whether or not we (the company and myself) are a good match.
Granted, if they ask a few of those and then jump right in with more specific questions I would just count that as the qualifier/anti-BS filter.
If I was only given general softball 100 series CS course questions I'd probably end up trying to wrestle more info about the position out of the interviewer unless I was really hard up for a job and was willing to put up with potentially unfulfilling work for a while.
I'm actually insanely jealous of you if a "What the fuck" interview was about binary trees and linked lists. All my interviews have /started/ at that point and gotten way worse. I still get anxiety thinking about some of my job interviews.
Don't want to throw anyone under the bus, many of them are actually YC funded! I respect the companies a lot, but their interviews are incredibly stressful.
I'd be inclined to side with the interviewer on this one. Data structures such as binary trees and linked lists may be abstracted away by many modern frameworks, but every abstraction is leaky and if you aren't aware of what's going on behind the scenes, you can absolutely crucify your application's performance. Binary trees, linked lists, hashtables and so on have very different performance characteristics, and if you choose the wrong one for the wrong situation, you can end up with code that gets unbearably slow surprisingly quickly. The difference between O(n^2), O(n) and O(log n) can be massive on datasets of only a few thousand, and even small 20 person companies can end up having to deal with datasets much larger than that.
This is all fairly basic stuff that should be a core competency for every software developer, and the fact that it isn't is the reason why so many Flash- and JavaScript-intensive websites are such resource hogs. The kind of things that Google, Amazon and Twitter are into that you'll never EVER need in a small 20 person run of the mill software shop are things such as machine learning, compiler theory, Bayesian statistics, image recognition, and so on.
I don't disagree with your decision to leave, but it is possible that your interviewer was just a crappy interviewer and might not be a crappy colleague.
As a hiring manager, the thing I find most interesting on posts like this (ignoring that the analogy is TERRIBLE) are the comments of people used to being on the other side of the desk. I don't think we (as interviewers) do a good job of explaining why we ask the questions we ask. And I don't think we do a good job of communicating what our job is.
Our job is to stop you getting hired.
If we get 100 people applying for the job, then our job is to not employ at least 99. So we are looking for anything that identifies you as being one of the 99.
That you could go away and learn what color the middle wire is is great. But the guy next to you has been fixing wiring in distributor caps for years. And right now, I need people that know what color the middle wire is.
The point is that the guy who can fix wiring in distributor caps might be able to do that specific task. But maybe it took him 5 years to learn that and a much better candidate who has no clue how to do that could master it in a week and will be fixing those caps at a higher quality.
It's also that it's incredibly short-sighted to seek such specific skills in the technology industry with the rate of change in tech.
Further, maybe the guy who can fix distributor caps came from an agency that coached him on writing his resume to emphasize this and what to prep for in the interview. I've experienced that first-hand.
The problem with the analogy is that it's too specific. But I'm still hiring for right now. That you can easily learn next year's technology is something I'd rather you don't do on my time.
Then you are the one being short-sighted here. A good engineer is a good engineer is a good engineer, someone with great learning aptitude is a great asset for any company. Say you hire someone for today's task, but next year the technology changes and the guy you hired is horrible at learning new things. What do you do? Do you fire him and hire someone for next year's task? What if the old technology still requires backward support, do you keep the old guy on payroll as well? What if the same thing happens the year after next?
You don't want people to learn on your time? That's incredibly short sighted. Real engineering is about learning all the time, whether it's taking a formal training session or just reading a long post on StackOverflow. If you don't want to pay your engineer to learn things then you simply don't care about the engineering quality of your company and all you care about is short term payroll bottom-line.
I feel sorry for the engineers who work under you.
Of course I'm looking for people who can learn. I'm looking for people who will jump onto Stack Overflow and Google before spending a week reinventing the wheel. I'm looking for someone who writes in a dozen languages (like human languages, someone who knows a couple can pick up more very easily).
But I don't want people learning the "right now" skill on my time.
If I need a PHP developer right now, then I'm going to hire someone who knows it right now. I'll preference someone with C skills and I'll preference someone who participates in an open source project. And I'll preference someone who reads Hacker News. And I'll preference someone who has a great profile on Stack Overflow. And I'll preference someone who attends or presents at conferences.
But if they don't know PHP, they're not going to be learning it on my time as I need someone who knows it right now.
There's no need to feel sorry for my team. The things you read on a Hacker News comment reply aren't the entirety of working for me. Maybe you'll be sitting across the desk from me one day and you'll get to work with an awesome team of talented engineers. Carefully selected.
A lot of engineers will gladly work overtime or at home to pick up a skill. Often you don't start a new job for a few weeks or month.
And any good engineer can work blind on a new technology and still produce decent results. If a great engineer with no knowledge of PHP is required to build a PHP website they can sit down with a PHP book open on their desk and crank it out. They fact that they're mentally superior to other engineers (whose expertise on a narrow subject might be better) and know programming inherently better means there's a good chance their output on something they don't know could be comparable to the PHP coder.
The best managers always build skills in teams. It's part of compensation. Every engineer views bullet points on resumes as a form of income. "If they don't know PHP, they're not going to be learning it on my time" means that you're going to be paying higher salaries with higher turnover and much higher recruiting costs. And if that's not true then something scarier is true: you're actually hiring low-quality engineers who don't realize you're a bad manager with a bad team (or who have no other options than to pimp out their 8 years of SharePoint 2003 experience).
Maybe you wouldn't have such an urgent need to hire experts in narrow subjects if you had staffed your team with intelligent quick learners in the first place! Tip: next time you need an expert in subject X try telling your best engineer: hey I have a project coming up for an X project and I'd like you to play a key part, so can you study up on that as it'd really impress me.
Then don't complain that you can't find any candidates.
That's what you employers do: you filter out everybody, so there are left like 3 people in the same continent who fit your arbitrary criteria. Then all of you get into a bidding war over those 3, and most of you find that you can't afford to hire.
Finally, you start whinging about a "talent crisis" and blaming the universities for not producing people with the right skills.
Where did I complain about not finding candidates? Where did I whinge about a 'talent crisis'. Nowhere I'm aware of.
At a guess you're projecting other managers complaints on to me. I'm not in the U.S. and don't have these problems.
So you've got actual words from actual me:
* Those three people are worth the bidding war. They're worth 10 times the next rung down.
* I need to fill the position with the best possible person. It doesn't matter that Google et al have take the top people, I still need a new engineer.
* Universities generally suck time and deliver little. Spend the three or four years getting a ton of experience and participating in the community and you'll jump ahead of someone who's passed university, but doesn't have their own project.
So you will pay 10 times more salary, rather than waiting a couple of months for a new engineer to get up to speed?
You must be in a hurry. What about all those other employers doing enterprise CRUD apps, are they in a similar hurry?
"I need to fill the position with the best possible person"
I assume then you are not working on enterprise CRUD or dinky mobile apps like everybody else. Are you competing with Unreal's next game engine? Or working on a rocket to Mars? Because your peer employers are NOT.
Yeah, those guys who complain about not finding candidates.
OK so the way to deal with you is to lie on the resume and in the interview, and start cramming right before the interview just enough to keep fooling you. Got it.
"That you could go away and learn what color the middle wire is is great. But the guy next to you has been fixing wiring in distributor caps for years. And right now, I need people that know what color the middle wire is."
If you're hiring a mechanic, yes. However, the analogy was pointing out that the person being asked the question was a potential car renter. That specific knowledge is not relevant as a car renter.
Now you're torturing the analogy. The equivalent programmer translation is "What is the middle parameter to this library method?" I'm sure most people competent at using Google can tell you in 60 seconds what that parameter is. In a large enough company you can afford to take the productivity hit as someone who is "smart and gets things done" gets up to speed on a new technology or with new libraries. However, if you're in a small team and you need to execute on your business fast without holding up development, you want someone who is "smart and gets things done" and also knows that library inside out.
Actually, I think you misunderstand the analogy. The color of the middle wire on the distributor is something you'd like a prospective mechanic to know, so he isn't learning on your time. It isn't, however, something that is in any way relevant to driving a car. I think this is why your comment provoked such hostile responses.
The programmer equivalent of the middle wire color question is something like, "Is the 3-phase power supply on XYZ mainframe wired in a delta or wye configuration? As a followup, what is the input frequency tolerance?" A sysadmin might need to know that, and an electrician certainly would, but it is far, far outside the purview of a programmer. [Edit: I'm assuming the programmer to be someone writing software running on the mainframe, not the firmware for a microcontroller in the power supply]
Maybe you're just a very good interviewer and haven't had to deal with the 90% that are crap? :+)
This illustrates why it's a terrible idea to work in a large corporation where the hiring process is managed by an HR department. The process is optimized for filtering out people. The reason why the job postings and interview questions seem to expect unrealistically high standards has nothing to do with the actual jobs requiring any of those high standards. In reality those jobs tend to be very dull and standard.
Tech start-ups and good engineering teams ask a different question: "What value this talented engineer can provide to our team or product?" Their job is not to stop people getting hired. Their job is to convert the available Human Resource to economic value as much as they can.
As far as I know hiring decisions made only by HR departments don't perform any better than randomly hiring one of those 100 candidates. Actually random is better if you really need the absolute best candidates because HR process has a high risk of filtering them out at the initial stage carried out by a clueless junior HR staff. But it's OK for the HR's sake since their actual purpose is to stop people getting hired.
"Our job is to stop you getting hired. If we get 100 people applying for the job, then our job is to not employ at least 99. So we are looking for anything that identifies you as being one of the 99."
If you have only position to fill and 100 people applied for that position, yes, your position makes sense. But if you have 100 positions to fill, will you still insist that you must interview 10000 people to fill those positions?
If you're hiring 100 people, you still only get the same number of applicants. If you get 100 applicants, you're not going to fill your 100 positions. (Note the "at least 99" in my post)
If I'm desperate to hire 100 people and I can't get 100 qualified applicants, that's when I start looking to people who could be the right people in very quick order. I've done that and ended up with some true super stars. But that was a three month investment that could have failed. I'd rather hire someone who already has the skills I need.
Whether you're hiring 1 person or 100, you're still looking for reasons to cull them.
I think this reveals some of the root of the problem. The interviewers have no incentive for hiring good or great people ("superstars"), but absolutely cannot let crappy applicants inside, under no circumstances, under the risk of losing their jobs.
So they just don't care if you are good at what you do, if you can learn fast, etc -- all they care if whether you are not shit and can certainly fulfill the specific requirements for the job they were instructed to fulfill.
How to change this? Well, one way would be to get people interested in the applicant's abilities and long term capacity and commitment. It's good to find this kind of people inside a company which are not in the higher ups.
Another alternative would be to attach the long term success of the applicant to the ones responsible for hiring somehow. Those are all very difficult problems, but ones that can be managed with good will and commitment from the guys inside the company.
"Not shit" is the way we get rid of 90% of people. "Superstar" is how we hire from the remaining.
We absolutely cannot bring in someone crap. Our job is to hire, so if we're hiring crap people, we're crap at our job.
See my comments elsewhere in this thread regarding learning fast, but basically I'm going to hire someone who can learn fast. But primarily I'm going to hire someone who doesn't need to learn the 'right now' skill.
I'd love to see a system that tied each of my hire's success to my success. It happens for the first three months: "Hey lessnonymous: this guy is brilliant! Good job!".
But I want to see a system where each pay-rise or promotion the engineer ever gets is recorded against my success too.
"We see your hires got a salary increase of 10% on average. Here's your 10% increase." (It would need to be waaaay more complex than that to look at churn, promotions, firings etc.)
First off, not sure how your company does it, but I've had companies ask me to interview when I wasn't even looking, and then not extend an offer. So interviews are not always to separate the wheat from the chaff.
Second, the gist I got from the "color of the wire" question was it was an analogy for asking someone to write code for a linked list. It's banal and been done before, so it seems ludicrous to ask, but many places use it as a FizzBuzz filter. I can think of very few places that would actually pay someone to "fix the wiring distributor cap" (write linked lists).
First point has nothing to do with my company in particular. Talent interviews are just different from vacancy interviews. In a talent interview I really am looking for someone who meets our future needs. And without my crystal ball, that means I'm looking for someone with the currently require skill set, but who has the ability to pick up wherever we go in the future.
Agree with you on the second point. This comes into us not explaining ourselves very well. Questions like this ARE banal and ludicrous. But FizzBuzz filters are a great first screening. People lie (shock! horror!) on their resumes all the time. So asking them to write something banal in front of you is annoying for the people who can do it, but quickly finds the pretenders and lets me cut an interview short.
(Oh, and before anyone calls out 'interview pressure', I'll work through the problem with people who struggle. The difference between nerves and talent is blatantly obvious)
> That you could go away and learn what color the middle wire is is great. But the guy next to you has been fixing wiring in distributor caps for years. And right now, I need people that know what color the middle wire is.
And more often than not there is absolutely no relationship between the color of the middle wire and knowning how to fix the distributor cap.
So then, by definition, you have perfect employees. Congrats. I'm sure this extends to the perfect sales team, perfect product team, etc. That is impressive.
So this means you hire people for specific tasks, and when new task comes, you fire them and go looking for new people for the next specific task. seems like a very good strategy...
Just like having a drivers license is no guarantee you are a good driver, having many years of job experience programming is no guarantee you are a programmer.
On the other hand, you are liable for any damage you do to a car you rent, plus the company is fully insured in the case you do any damage and can't pay. Hiring and firing someone (which is the only real way to know if someone is a good developer) is very expensive.
Here's what it would be like if we hired programmers like we rent cars:
You walk in to a software company and are immediately hired under these conditions: "We'll take you on for 6 months, but if it doesn't work out you need to pay us back all of your salary, plus benefits and payroll tax"
He's not saying "don't find a good programmer." He's saying that the questions they ask get them no closer to finding out whether he is a good programmer.
He's saying that the questions they ask get them no closer to finding out whether he is a good programmer.
A lot of the time they're not meant to. They're meant to figure out whether he's a bad programmer (or bad cultural fit, or something else bad).
The cost of hiring someone bad is way higher than most people would guess. I've come to believe that in many cases the questions asked in an interview almost don't matter - they're just there to give you an opportunity to fail, or to say something incredibly dumb or ignorant or obnoxious so that the interviewer can quickly reject you and avoid an expensive mistake.
If you hire someone who is boring and has no obvious problem but isn't very productive, you have your ass covered. His lack of productivity is his fault. If you hire someone exceptionally useful with some notable problem, or even just some notable flavor someone doesn't like, it is something you should have noticed and you are liable. A lot of companies want an unblemished calf more than they want a Zed Shaw.
As long as the interviewer treats it like that I'd be fine with it. If they are playing things the way you describe then answering a question with "why does it matter?" would be a viable response and you'd be open to discussion about it.
The real world problem is that too many interviews follow the model because that's what they know from past experience themselves. They may not know why they ask such baseless questions, all they know is the answer they want and damn you if you don't give it to them.
I've given enough interviews to know it's all relative.
To cherry pick one example: "What color has the middle wire feeding into the distributer cap?" implies interviewers ask ridiculously specific questions that you could "look up if and when you needed to know."
The problem is for some applicants that question could be "how would you implement Google's PageRank" and for other applicants it can be something as simple as "what's the difference between an interface and an abstract class." Think what you want but if you don't think you need to be able to answer the latter, it's probably not going to work out between us.
To be honest, of the few interviews where I've been the applicant, the questions have always been fair and I've never been treated with the level of disrespect that was demonstrated in this scenario. That said, I'm completely willing to believe I've just been lucky so far.
The problem I perceive is that that question gets asked to people who will never need to know it. I too often see people interviewing for front end web or javascript positions asked questions about binary search trees or something that totally doesn't relate to front end development, instead of asking about closures or what they think about coffeescript. Honestly, I think at this point if you're asking about various search algorithm big o timings to find out if a programmer can build an iOS app or do Rails dev, you're doing it wrong.
The poor interview process is one thing, but what irks me most is that almost nobody offers you a chance to meet the team, even when they make you an offer. That's been my general experience so far anyway. It sucks, because your only exposure to anyone was the hiring manager, and maybe a lead, and all they did was ask questions about what you memorized about whatever language(s).
My pet peeve is that you are interviewed as though you should be God, and you would be so lucky and privileged to work on this pristine, perfect codebase...only to find out that the codebase is not all that perfect, and the development processes are not scrum or agile or XP, but instead "run around like chicken with your head cut off, just get it done!"
Perhaps this is the queue for someone to suggest "that's why we try so hard to prevent bad people from getting hired". :-)
I hate those interviews and interviewees that have that attitude too. Especially since the opposite is actually the case. It's so incredibly easy to find work as a developer right now, you need to tell me why I should come work for you. Remind me why I'm sitting here talking to you instead of somewhere else that could be more exciting.
That's odd; at every tech company where I've interviewed, the majority of the interviewers were potential peers on the team (or from another team, to have an "outside voice"). The hiring manager is usually mainly there to judge culture fit and, if they like you, to help sell the company.
At the companies where I've worked and have interviewed people, the hiring manager would of course have veto power, but would never hire someone without the agreement of the team.
At my current company (Twilio), even the first phone screen (after a possible initial recruiter call) is done by a team lead or member of the team. But often the candidate doesn't end up on the same team as the phone screener, since we don't always know what team would be the best fit until after the screen.
I think of hiring as everyone's job, as it's right up at the top of the list of things that will determine the course of company culture over time.
(Shameless plug: having said all that, if you're an Android developer who enjoys building frameworks and APIs, email me at my HN username at twilio.com.)
> I think of hiring as everyone's job, as it's right up at the top of the list of things that will determine the course of company culture over time.
That's what bothers me so much about it. The team and the culture is hugely important. I appreciate that the interviewer has determined culture fit, and that's fine I guess, but I want to know that I'll like the team I'll be working with too.
Sure. It goes both ways. As the interviewee, it's your job to ask your interviewer questions that will help you learn whether or not you'll like the team.
Friendly advice ... don't settle for an offer, make a request. The team is too important in helping determine if you'll be happy working at a given company.
When I'm interviewed, I take it as a bad sign if I'm not allowed to meet other members of the team. Typically they're included in interviews, in which case it's a non-issue. In other cases, I make a friendly request to meet 2-3 members of the team for a short conversation. I've only had to do that once though.
That's definitely what I should be doing. Usually though, I've gone through 2 or 3 interviews already for this position, one of many I am interviewing for, and I'm tired and want to be done with it all. The last round, one 1 company sat me down in front of their team, and that's the job I took, because the team seemed cool and I enjoyed that part of the process a lot.
It's just surprising that this is consistently a problem. I shouldn't have to make the extra effort, it should be part of the process.
It's very easy to decry company hiring procedures. That happens all the time here on HN, and for a very good reason--most company hiring procedures are not based on research and are demonstrably suboptimal for hiring the best people. We discuss this a lot on Hacker News because many of us have been looking for jobs or looking for people to hire some time in our adult lives. From participants in earlier discussions I have learned about many useful references on the subject, which I have gathered here in a FAQ file. The review article by Frank L. Schmidt and John E. Hunter, "The Validity and Utility of Selection Models in Personnel Psychology: Practical and Theoretical Implications of 85 Years of Research Findings," Psychological Bulletin, Vol. 124, No. 2, 262-274
sums up, current to 1998, a meta-analysis of much of the HUGE peer-reviewed professional literature on the industrial and organizational psychology devoted to business hiring procedures. There are many kinds of hiring criteria, such as in-person interviews, telephone interviews, resume reviews for job experience, checks for academic credentials, personality tests, and so on. There is much published study research on how job applicants perform after they are hired in a wide variety of occupations.
EXECUTIVE SUMMARY: If you are hiring for any kind of job in the United States, prefer a work-sample test as your hiring procedure. If you are hiring in most other parts of the world, use a work-sample test in combination with a general mental ability test.
The overall summary of the industrial psychology research in reliable secondary sources is that two kinds of job screening procedures work reasonably well. One is a general mental ability (GMA) test (an IQ-like test, such as the Wonderlic personnel screening test). Another is a work-sample test, where the applicant does an actual task or group of tasks like what the applicant will do on the job if hired. (But the calculated validity of each of the two best kinds of procedures, standing alone, is only 0.54 for work sample tests and 0.51 for general mental ability tests.) Each of these kinds of tests has about the same validity in screening applicants for jobs, with the general mental ability test better predicting success for applicants who will be trained into a new job. Neither is perfect (both miss some good performers on the job, and select some bad performers on the job), but both are better than any other single-factor hiring procedure that has been tested in rigorous research, across a wide variety of occupations. So if you are hiring for your company, it's a good idea to think about how to build a work-sample test into all of your hiring processes.
Because of a Supreme Court decision in the United States (the decision does not apply in other countries, which have different statutes about employment), it is legally risky to give job applicants general mental ability tests such as a straight-up IQ test (as was commonplace in my parents' generation) as a routine part of hiring procedures. The Griggs v. Duke Power, 401 U.S. 424 (1971) case
interpreted a federal statute about employment discrimination and held that a general intelligence test used in hiring that could have a "disparate impact" on applicants of some protected classes must "bear a demonstrable relationship to successful performance of the jobs for which it was used." In other words, a company that wants to use a test like the Wonderlic, or like the SAT, or like the current WAIS or Stanford-Binet IQ tests, in a hiring procedure had best conduct a specific validation study of the test related to performance on the job in question. Some companies do the validation study, and use IQ-like tests in hiring. Other companies use IQ-like tests in hiring and hope that no one sues (which is not what I would advise any company). Note that a brain-teaser-type test used in a hiring procedure could be challenged as illegal if it can be shown to have disparate impact on some job applicants. A company defending a brain-teaser test for hiring would have to defend it by showing it is supported by a validation study demonstrating that the test is related to successful performance on the job. Such validation studies can be quite expensive. (Companies outside the United States are regulated by different laws. One other big difference between the United States and other countries is the relative ease with which workers may be fired in the United States, allowing companies to correct hiring mistakes by terminating the employment of the workers they hired mistakenly. The more legal protections a worker has from being fired, the more reluctant companies will be about hiring in the first place.)
The social background to the legal environment in the United States is explained in many books about hiring procedures
Previous discussion on HN pointed out that the Schmidt & Hunter (1998) article showed that multi-factor procedures work better than single-factor procedures, a summary of that article we can find in the current professional literature, for example "Reasons for being selective when choosing personnel selection procedures" (2010) by Cornelius J. König, Ute-Christine Klehe, Matthias Berchtold, and Martin Kleinmann:
"Choosing personnel selection procedures could be so simple: Grab your copy of Schmidt and Hunter (1998) and read their Table 1 (again). This should remind you to use a general mental ability (GMA) test in combination with an integrity test, a structured interview, a work sample test, and/or a conscientiousness measure."
But the 2010 article notes, looking at actual practice of companies around the world, "However, this idea does not seem to capture what is actually happening in organizations, as practitioners worldwide often use procedures with low predictive validity and regularly ignore procedures that are more valid (e.g., Di Milia, 2004; Lievens & De Paepe, 2004; Ryan, McFarland, Baron, & Page, 1999; Scholarios & Lockyer, 1999; Schuler, Hell, Trapmann, Schaar, & Boramir, 2007; Taylor, Keelty, & McDonnell, 2002). For example, the highly valid work sample tests are hardly used in the US, and the potentially rather useless procedure of graphology (Dean, 1992; Neter & Ben-Shakhar, 1989) is applied somewhere between occasionally and often in France (Ryan et al., 1999). In Germany, the use of GMA tests is reported to be low and to be decreasing (i.e., only 30% of the companies surveyed by Schuler et al., 2007, now use them)."
Integrity tests have limited validity standing alone, but appear to have significant incremental validity when added to a general mental ability test or work-sample test.
I don't think posting the same information again and again is welcome. The people who might be inspired to debate it simply can't have a discussion about it every time it appears - and it goes beyond wanting to engage with the community and share something and becomes an attempt to manipulate. I'd certainly encourage tokenadult to stop posting it.
If this were a wiki or answers site, where you want one easy-to-find location for a given piece of relevant content, I think you'd be correct.
On a link stream + discussion style site (which HN appears to be), though, you don't really have any idea who's participating at any given moment, or who's seen/absorbed material from previous discussions. I've been reading HN on/off for about 3 years, I can only recall having seen this once before, and seeing it again is an interesting reminder.
Apparently others have seen it a few times and are tired of it, but by and large, I'd think the scoring system could handle the general opinion of the community pretty sell: if enough readers still find it to be new/interesting information, it'll stay highly visible. If readers are tired of seeing it, presumably it'll sink to the bottom.
I haven't seen this comment before and took something useful from it, so it seems ok to repost it. Your suggestion to link to the previous posting and it's discussion seems like the best approach.
Yes, but like that comment, his profile could probably do with some editing and a different form of publication, like in a proper site/blog article.
There's a whole paragraph duplicated in the profile, starting with "I'm founding director". If nobody has ever noticed that, the info is probably not in the best place to be read.
> EXECUTIVE SUMMARY: If you are hiring for any kind of job in the United States, prefer a work-sample test as your hiring procedure. If you are hiring in most other parts of the world, use a work-sample test in combination with a general mental ability test.
I like how American employers think everyone in the US is sane, smart, and educated, unlike the rest of the world.
In the above proposed methodology, Americans are exempt from the mental tests because those types of tests have questionable legality in the US, not because Americans do not need to be screened.
Better analogy would be shipping company hiring a truck driver and asking him those questions. And also requiring experience piloting Formula One cars for at least three years, knowledge of how to operate large construction equipment and ability to replace the tire on a truck with bare hands.
Maybe applicants need insurance. If they don't work out, their insurance company refunds the employer their salary and the opportunity cost of their bad commits. This way, applicants get muscled out of the job market gradually by high insurance rates, rather than with a brick wall filter.
That's not a bad idea at all. But it's unlikely to be very useful for specialized work, unless the insurance is highly specialized, and in that case it is likely to be as expensive as malpractice insurance.
While this seems "spot on" at first glance, I can tell you that when I interviewed at Google and Amazon (two years ago), it wasn't anywhere near this bad. Both places asked what might seem like contrived technical questions, but the thing is, you have to pick something that can be tested in an hour (or less). That, and it's not the answer that matters, but more your process of working a problem. They didn't seem to care too much about experience with specific tools. I guess it depends on the organization, and I can see how many places would be much worse. My question is, if they care so much about experience with specific tools, why do they even get to an in-person interview with someone who doesn't have it on their resume?
Hiring practices of Google and Amazon are very unrepresentative of smaller companies and more heavily emphasize general intelligence, prestigious background and background in computer science. As you say, it's about the process of working a problem more than experience with specific tools.
However, most companies are smaller than Google and Amazon and have different practices. Sometimes, stupid practices, because the interviewers don't really know how to do it, just want to get it over with, or really care about things which aren't important.
But since they are in the hiring position and assume they and their company are awesome, they are not so likely to question their own technical or interviewing abilities and certainly don't want to hear what interviewees have to say about it.
You need additional insights beyond just doing the job to understand what makes someone else useful in that job. And if you don't even have that much, you are guaranteed to ask stupid questions and end up with people selected for how good they are at selling and how much you think they're cool.
My experience with Amazon was similar but at the end I was led to ask: "if the 1hr filter process isn't efficient at finding the best candidates, why do they do it?"
I think in the end its a balance of basic filtering vs. HR requirements. The process has to be objective and quantifiable so they're covered in the event of anyone calling foul play. Everyone gets the same treatment and there is a paper trail of reasons for why they turned you down.
The process only has to look objective and quantifiable. Everyone doesn't get the same treatment, but it's not actionable if the differences are all deniable and have rationalizations like 'culture fit'. People can and do still hire who they want for whatever reason, they just claim some objective reason for it.
Ah yes, I completely agree. I really should have clarified by the HR part in that it is meant for HR's use and not the actual hiring manager/interviewer. If they want to sabotage the interview or otherwise they still can; its just harder to prove-if at all
I agree with parts of it, but I disagree with the basic premise that hiring programmers is like renting cars. When you hire a programmer, it is like hiring a car mechanic, not a car driver. Some of the questions do seem appropriate to ask to a car mechanic.
Car Mechanics dont build the car parts or research into how to build the most efficient engine, but do need to know how to apply the knowledge of those parts. The best car mechanics can apply the science but may not be the best car researchers. Thats why in my opinion, some questions do make sense for a car mechanic.
If you were using the photoshop analogy, then I think to interview someone, you need to ask them how different features of Photoshop work, not how Photoshop was built but also not how they draw in general, IMO. You may be a great artist, but if you can't understand Photoshop features and what they mean you will fail to create a great digital painting.
The car mechanic analogy is an interesting one that I came across while touring universities to find one that I liked. A parent at one of the Q&A sessions asked what the difference was between Computing and IT (in a UK education context). The degree director replied that an IT course is like learning to drive a car, whereas Computing is like learning to be a mechanic.
(Context: IT classes pre-university used to consist of learning to use Word, Excel and Powerpoint.)
So I suppose whether the analogy works depends whether you want your programmer to find and plug a hole in your exhaust pipe, or to work out how to make a more efficient catalytic converter.
Ah yes, another person describing their Google interview experience. They do leave a lot of solid candidates out but in their defense, when I was there, being able to survive the non-intuitive interview process was a good indicator you could survive the non-intuitive business dynamics.
"E se me nona gavesse e rode sarìa na carioea", as they say here in the Veneto, which, literally translated, means "if my grandmother had wheels, she'd be be a wheelbarrow".
The literal translation is pretty clear, actually. If [something ridiculous/impossible] then [something else ridiculous/impossible]. In other words the comparison is a bit of a stretch.
I'm actually interested to know what kind of developer gets the job. And also, what was he/she thinking when accepting the job, was it out of necessity? because he/she liked the interview process? (I'm asking seriously)
I think it's funny when the recruiters try and lie at the beginning by saying a later interviewer may or may not be out sick and there is the possibility for some interviews to be cancelled and the day cut short. We all know they want to send you home if you screw up in the beginning. It's not a secret.
Now, maybe I've gotten lucky, and I've only interviewed at a few companies (well-known ones include: Google, Amazon, Facebook), but I've never had an experience as bad as that painted by this analogy.
In general, the interview questions I've gotten are designed to test general CS knowledge and the ability to translate an algorithm into code. This is important, and as an interviewer myself, a lot of candidates fail at the translating to code step.
Design questions are (at a high level) maybe even closer to "how would you do your job?" than coding questions.
I have yet to see a company ask for specific experience with VB.net 2012 edition and exclude candidates like myself who are only familiar with C/Python/Java. If they do, I'd recommend straight out lying (for languages). You can pick languages up really quickly. For platforms, maybe you really should know it and it is actually relevant to your potential job.
I have yet to see a company ask for specific experience with VB.net 2012 edition and exclude candidates like myself who are only familiar with C/Python/Java
I've absolutely seen it, but I've stopped looking at it as an injustice that must be mocked, but rather a useful indicator of an organization that isn't a good fit for what I have to bring. If the economy were worse, I may have a different perspective.
If the job you are applying for is to work on a rails site or develop a mobile app, I would argue that it is pretty important that you are already familiar with those technologies (and their pitfalls)…
I wouldn't exclude someone unfamiliar with a specific framework, but as an employer you understand that ramping them up to speed is going to take a significant amount of time.
The problem with this article (and nearly every attempt at analogous argumentation by anybody, ever) is that the writer cannot construct a homologous argument, which ultimately relegates the entire attempt to, at best, being mildly entertaining, but otherwise unhelpful. I've attempted many times to draw analogies in argument, but when your audience by and large shares the experience, they're useless. When attempting to dispute a point, or bring notice to something that you'd like to see changed, it's better to stick with homologous arguments and eschew analogies. Otherwise, you're just going to get mired down in quibbling over how the analogy doesn't hold, and completely sidetrack any attempts to discuss what you're really wanting to discuss.
What I think candidates tend to miss is some of the potential ulterior motives that employers have when asking esoteric questions or certain task requests. The list of what candidates label as 'inappropriate' for interviews has become longer, or perhaps candidates have simply become more vocal about it. I wrote another article in response to this, in order to outline why certain lines of questioning (esoteric, riddle, impossible, inane) may be used to try and learn something deeper about the candidate. Candidates need to understand that it isn't always just about your ability to answer a question. http://news.ycombinator.com/item?id=5073791
The only times I have been asked language specific questions are when I was selling myself as a language expert to fix some particular problem in some particular language.
I will however say that 90% of the interview questions I have been asked are heavily biased towards C type answers, although I did manage to use Scheme once!
Sure a linked list problems don't technically have to be written with pointers, but we all know what the interviewer is asking for.
Actually that brings up a good idea, I am going to come up with a bunch of contrived answers to the "find a loop in a linked list" problem, memorize them all, and next time someone asks me that question I'm going to give 5 weird answers in the course of 30 minutes.
I've been through a lot of hiring processes, on both sides of the desk, and I don't know what the article is trying to satirize. The worst, most bizarre hiring process I've ever been involved with bore no resemblance to anything in this little drama, and the analogy is bad. (My immediate reaction to the title was that car rental is based on what's available and how spiffy the car is (fairly rational) whereas programmer hiring is abased on jumping through hoops (e.g. Dumb C trick questions or programming challenges or certifications), who's available, and some weird perception of value almost guaranteed to be out of whack with reality.
It's funny in an absurd way. It is absurd because software technology grow significantly faster than car technology. Asking someone to write something with 1998 technology versus 2012 technology is different than asking someone to drive a 1998 model car and a 2012 model car.
It's true, if you have a solid foundation software, you can catch up to the 2012 platform. It will take some time.
So I think it is less that software changed so fast that solid programmers are unable to catch up so much that software changed so fast that recruiters have been unable to keep up.
I just had to interview people for a (non-tech) job who didn't even want it, and who we had no intention of hiring, because of our company's rules about how many people you have to interview before hiring. At least the hiring process described in the post has some sort of point, however badly executed.
What's with this "only Subaru" analogy? What I've found is more along these lines:
"Are you sure I'm qualified? I don't feel like I'd be very useful. I've never done Java, only C++ and JS and lisp"
"No, you'll be perfect. We don't hire people for specific languages"
Of course, my experience is with Python, and trying to get hired by a Ruby shop (no matter my experience outside of work with Ruby or any other language, or my experience with the rest of the stack) is impossible.
Perhaps it's a different world the lower down the language abstraction level you look.
I've found a mixed bag, for sure, with extensive C and C++ experience. Of course, recruiters love sending things that don't even make sense - bringing me in as a permanent employee in a language I don't know well is probably fine; I'm smart, I learn well, I won't have bad habits. Bringing me in on a 3 month contract on a language I haven't touched, not so much...
Regarding your Ruby-outside-work experience, is it on publicly visible projects?
Question since I'm in the middle of interview sright now (I haven't experienced anything like this other than the last part of negotiations): how and what do you look for in terms of team and company for? for some reason in not sure myself.
Hiring feels broken in many businesses, typically because it is executed by people who do not understand the target position, especially with technology. And, like the author tried to focus on, it doesn't help when the focus is far too heavily on a specific piece of the tech puzzle, and not on the overall talent and aptitude of the candidate her/himself.
I've both participated in and executed hiring processes in a mid-size (~500 emps) corporation where just about everyone wears ties or biz-casual (gross).
I sat in on one department's hiring rounds with about six candidates. What the dept was looking for was a programmer who had MS/.NET experience to develop on the MediaRoom platform (I managed the internal development team, hence my sitting in; responsibility for operating MediaRoom was under the other dept, however, so this candidate was not going to be able to be part of my team (stupid corporate organizational bullshit where dept mgrs squabble and scramble for stupid feelings of control and shit)). The questions the dept came up with and spent 1-2 hrs torturing the candidates with included zero questions about programming experience and aptitude-gauging type of inquiries. No questions about past projects, current interests, or anything remotely helpful. All the questions that were technical revolved around sysadmin tasks or how many damn acronyms the candidate was familiar with from MS's alphabet soup of platforms & products--literally asking if the candidate knew what they meant, not if they understood purpose or anything else like that. For a fucking programming job. The position stayed open for a year-and-a-half without being filled.
Biggest problem I saw? The interview was designed by a guy with zero programming experience trying to hire a programmer. Why the questions he chose? Best I can tell, servers and sysadmin tasks were something his dept had long done, and something he semi-understood (but didn't do himself).
In contrast, when I ran hiring for my dept, I requested explicit permission to direct the interviews myself, instead of having them led by HR (though an HR rep was still there). Before setting up an interview, my team and I would meet the candidate for lunch just to get to know them a bit. It was sort of our version of testing- or phone-based screening processes. We could figure out more in an hour lunch that we could trust than automated tests or other devices.
After the first candidate's official interview, I heard HR was talking about it. By the second candidate's interview two days later, the SVP of HR sat in on the process with the other HR person who was always there. What was most interesting to HR, apparently, was that candidates didn't display any of the typical nervous behaviors that are so common. About 10 minutes in, we had them relaxed, talking and smiling and laughing like normal, discussing things they did in their free time to take a break from programming, talking about the projects they'd loved and hated the most--even talking about times they'd fucked up. That last bit was really fun to watch HR react to, as they hadn't ever experienced anyone talking about times they'd done something wrong in an interview.
There were no bullshit how-would-you-resolve-a-stupid-conflict-with-a-coworker questions. We asked some general tech and programming questions, shot the shit about open source projects that impressed the candidate. The focus, though, was on collaborative tasks where the entire dev team went through a couple exercises with the candidate as if s/he was part of the team already, letting the candidate lead, but basically serving as a normal team would--asking questions, raising objections, saying what a good idea or novel approach something was. It was a great way to get a feel for what it'd be like to work through a problem together.
By the time we'd interviewed 4 people, we'd already hired 2 of them and I had to push pretty hard to get a very competitive offer out immediately before finishing all the rounds. I nagged the hell out of them till they were willing to break their own rules of waiting till all interviews were done. Our positions did not stay open even one month before we hired three new people. But making them successful required a lot of effort on my part to plead and nag and bargain to get processes bent so we could pull it off.
Hiring feels broken in many businesses. But it doesn't have to be.
Disclaimer: This was a mid-size company. I'm not saying that companies who receive hundreds or thousands of applicants can afford to take the time to do things this way. I can say that every interview that has ever meant a damn to me were the ones where the people interviewing actually took the time to be relaxed, get to know me a bit, and just make interviewing more like having a conversation. It's not coincidence that each one of those happened to be over coffee or lunch or somewhere away from a conference room and table as the first meeting.
Right so to ace the interview all one needs is some white racing overalls and a white simpson Daimondback helemt accessorized with a vintage HP calculator and a set of steam tables.
Some say that his not only the man-in-the-middle, he's at both ends and has wiretaps on Alice, Bob, Carol and Dave. and that he once crashed a 10 way IBM sysplex by staring at at it all we know is hes the stigs nerdy cousin.
Absolutely correct. I was thinking of things along the lines of "use JDK 1.2, which still lets you turn off the garbage collector, and then spend 100% of your time after startup in a JNI module." That's the least scary version.
From an interviewer's perspective, that answer wouldn't really help me gauge your familiarity and depth of understanding with regards to the JVM (which is, presumably, something I'd be very interested in knowing).
Why not type your problems flat out. Trying to "abstract" the problem by transferring it to a completely different and reverse analogy just makes the whole post artificial.
I was actually wondering if this was written by a programmer or a man that hires programmers at first...
In this case, the person renting the car would be "interviewing" the car rental company to determine if their service is worth their money.