Well, I’m afraid to say I disagree with a lot of the detractors who’ve posted here. Great post Jeff.
I’ve done a fair bit of interviewing in my time and what I’ve noticed from people who’ve been hired is that there are a lot of people who can solve most problems, but there are a few people that can solve any problem, no matter how hard it is.
Example of “any” : There’s a customer on the phone who’s fed up because once every two months the app we sold them intermittently trashes a bit of data and causes their system to be unusable, but testing can’t reproduce the problem in house. It happens.
The “average” developer will throw their arms up in despair at this and hope somebody else will come along to rescue them. Now this isn’t actually a bad thing itself, if the developer is in a junior position, provided they can then learn and get better as a result of somebody higher up helping them out. (Focus on the first derivative!)
The “superstar” developer might not know exactly what the problem is, and may well not be able to reproduce it in testing, but they’ll be able to look at the code, and think about the symptom, and come up with some ideas. It might take a while, but they’ll never give up.
As a business, you need people who can solve all the problems that get thrown at you. It’s no good having developers who can solve 95% of the problems if the last 5% means you have to loose your largest and longest standing customer.
Yes, I don’t need to worry about writing my own code to reverse a string in my day job. I don’t use regexs that often, and I rarely need to worry about bits and bytes, and when to use a binary tree over a list. I don’t deal with these things for 95% of my working time. But you know what, sometimes, you’ve just got to know about these things to solve a really hard problem.
And, all else being equal, people who’ve at least heard of the sort of areas Jeff and Steve are talking about in their phone screen are more likely than not to be the sort of people who can tackle the really hard problems when the business needs them to.
From reading Steve’s original post, I don’t think he’s even expecting competence in these areas during the phone screen. You might not know the exact regex to extract phone numbers from HTML, but you’ve at least heard of grep, right? And you know it can be used to filter output on a file? I think that’s enough to get through the phone screen.
Also, bear in mind Steve’s phone questions are tailored towards a job at Amazon. If your business is 100% ASP.NET development and is never going to diverse away from that (and how sure are you that’s the case), you might want to ask some different questions instead. Ask the candidate if they’ve heard of view state and session state. Don’t necessarily worry about if they know the difference between them during the phone screen, chances are if they recognise the names they might be able to do a bit more than just drag and drop!
I’m sorry if I’ve antagonised anybody by saying this, or you think I’m looking down on you, but sometimes the “superstar” things are what you need to do to do your job! Maybe working as an internal dev in a bank’s different and you don’t get these problems - I dunno.
Rejecting a candidate is not personal (or at least shouldn’t be). I’ve interviewed for places and been rejected. It happens. Get over it.