It's not about whether they can do it or not. It's about why knowing a skill that will take even a non-developer ten seconds to Google makes someone incapable of functioning as a developer.
More often than not the people that spout that kind of nonsense are twenty-something junior developers that read a bit of HN and have decided that they know better than everyone else about what makes a good programmer.
Why would you test if someone can reverse a string if you're hiring someone to maintain and build on some shitty web app?
It takes someone who doesn't speak English ten seconds to look up the past tense of the verb "bring" - this doesn't mean you'd want to hire as a journalist someone who seems to think the answer is "bringed"
Doing a string reverse is so trivial that it's not about needing that skill, but rather what not being able to do that speaks about the candidate's general aptitude and skill level.
"Why would you test if someone can reverse a string if you're hiring someone to maintain and build on some shitty web app?"
If that question can't be answered then your opinion on someones skill level is irrelevant. Also, if you've got time, answer the questions in my first post:
"How old are you? Have you hired developers before? Truthfully, have you ever had to reverse a string under pressure at your current job."
Because anyone who can't do this almost certainly doesn't have the ability to program any software system well, some shitty web app or otherwise. You're not trying to fill out a remedial CS course in community college, you're trying to get someone to program real things real people use.
The only way this question wouldn't be useful is if you had a good filter such that almost everyone who gets to that point would answer that question correctly. But apparently, this is not the case. There are people who fail such tests (despite apparently good paper qualifications and ability to talk BS). It's fairly important that you not let through such imposters.
And yes I've hired people and all of them have had to answer much more complex algorithmic questions to get the job and all of them turned out to be competent. And "have you ever had to" questions are ingenuous - interview settings are never going to be replicated exactly in a work setting, unless your job is to go around to be interviewed for different jobs. Good interview questions don't simulate work setting - they extract most critical work-relevant information about the candidate without wasting time.
"Because anyone who can't do this almost certainly doesn't have the ability to program any software system well, some shitty web app or otherwise. You're not trying to fill out a remedial CS course in community college, you're trying to get someone to program real things real people use."
So...I'm hiring someone that can reverse a string because this demonstrates that they can program real things that real people use?
"And yes I've hired people and all of them have had to answer much more complex algorithmic questions to get the job and all of them turned out to be competent."
Out of interest, what did this job entail? I assume that you quizzed them on their knowledge of basic algorithms because they are required to write them, right?
String reversal, and all the other common interview questions are simply a microcosm of what a developer does day to day. Programming is about comprehending abstractions and composing them into a greater whole that solves a specified business problem. Reversing a string is exercising those same mental faculties. There is literally no difference between working out the steps to reversing a string and working out the steps to pulling data from a database, transforming it, and displaying it on the screen, except that for the second example one can Google then copy/paste about 90% of it. Asking "reverse a string" type questions will weed out the Google-jockies (obviously there's nothing wrong with Googling for an answer, but if you have to Google for everything you're in the wrong line of work).
Bullshit. The only reason why people ask these things is because big software houses do so, and for some reason they think that their shitty web app needs a Google quality "rockstar developer".
The difference between reversing a string and pulling data from a database are, literally, completely different tasks. The killer is that the latter is something that a candidate will do in a job.
You're more than welcome to ask those questions, and you're probably likely to weed out the lowest common denominator types. In my experience, they're a waste of time and the best possible interview you can give to a developer is a frank face-to-face discussion about programming, and then getting them to work on a test project for two hours from your own code base. If they can do that much they can program.
>The difference between reversing a string and pulling data from a database are, literally, completely different tasks. The killer is that the latter is something that a candidate will do in a job.
And this is where you misunderstand the purpose of these types of questions. Programming is a very dynamic field where you're likely be required to solve novel problems daily (not novel in the grand scheme of programming, but novel to you). You need the mental flexibility and fluidity to solve problems you haven't entirely encountered before. Testing specifically what you do at the job is the wrong approach. You need to test the required mental faculties to solve novel problems. Programming is not pulling data from a database, writing glue code, and shoving it to the screen. It's solving new problems every day.
> The difference between reversing a string and pulling data from a database are, literally, completely different tasks. The killer is that the latter is something that a candidate will do in a job.
Why can't you do both? Seriously? Pulling data from a database is orders of magnitude harder to get right than reversing a string.
That's not the point. You have a finite amount of time in an interview, so why on earth would you ask a question regarding a meaningless skill that the candidate will use maybe once in their entire time at the company when you can ask something that, you know, might actually tell you if they're a good programmer or not.
Being able to recognise the correct answer in the sea of dross that is search engine results pages is better.
Being able to take the correct answer, and adapt it to what you need, and plugging it into what you already have, is best.
Do you really want to employ people who say they have X years of experience doing something but who cannot do a very simple task in the choice of their language? That's not a stupid trick gimmick question - there's no "gotcha" there. Perhaps we're getting caught up on the specific "reverse a string". Substitute that for something relevant to maintaining and building on a shitty web app.
More often than not the people that spout that kind of nonsense are twenty-something junior developers that read a bit of HN and have decided that they know better than everyone else about what makes a good programmer.
Why would you test if someone can reverse a string if you're hiring someone to maintain and build on some shitty web app?