5 ms·
Trick questions, or questions with some kind of gottcha have no place in interviews, However, simple, straightforward programming exercises are essential. I've
by jamess 18y ago
Trick questions, or questions with some kind of gottcha have no place in interviews, However, simple, straightforward programming exercises are essential. I've seen people who claim to have X years of industry experience who can talk a good game, but literally can't write a switch statement without reference to the internet.
I also like to ask people to peer review some code with both obvious and more subtle errors in it. That's a pretty important skill to me too. Anyway, ask them to code some fairly simple algorithm and then critique their own work. If there are several ways to solve the same problem, some more efficient than others, all the better.
- ericb 18y agoHmm... I know > 10 languages. I'm not sure I could remember the exact syntax in several of those languages on the spot. Is it case, is it switch, etc. If you do this, your test is on rote memorization. Give them a novel problem and have them solve it with a real computer and in tact syntax lookup. Then see what and how they did it and go over their reasoning. I'll hire the guy with the wisdom over the guy who can spit out syntax trivia flawlessly. Those are different skill-sets that do not predict each other.
- astrec 18y agoAgreed. My first job they gave me a copy of Deitel & Deitel's "C How to program" along with the test. You actually lost points if you didn't open it!
- ntoshev 18y agoYou know the syntax of switch in the language you have been using in the last three months. If you don't, something's wrong!
- astrec 18y agoSure, but we're talking about testing ability vs. memory - switch is incidental.
- ntoshev 18y agoAbility requires memory, at least for basic things. You can't be a good programmer and forget the syntax of the language you are working in. If you need to look up something as fundamental as switch statement in the internet, it's like a writer looking up words in the dictionary before writing them down in his novel.
- jcromartie 18y agoI think switch is a particularly bad example here. Honestly, I can't (accurately) tell you the last time I used one. It's not an every-day construct for a lot of people.
- eru 18y agoNeither Python nor Haskell have it - as far as I know. Perhaps you can create one out of monads though.
- lsb 18y agoActually, case is built into Haskell: it's the evaluation primitive in Haskell Core; see Don Stewart's blog post http://cgi.cse.unsw.edu.au/~dons/blog/2008/05/16 http://cgi.cse.unsw.edu.au/~dons/blog/2008/05/16 .
- eru 18y agoYes, there it is. Sorry, I did not research my claim. Actually pattern matching can also be described as something like a case-switch.
- jonknee 18y agoWriters very frequently use the dictionary. There is no problem with it, that's why we have dictionaries.
- eru 18y ago
- raganwald 18y agoI never use Ruby's case or switch or whatever-it's-called. I could make up some mumbo-jumbo about case being a code smell and that it should actually be refactored to a method dispatch over polymorphic objects, but the truth is that I have no idea why I don't write case statements, I just don't.
- hugh 18y agoAdd me to the "never uses switch statements" list. I've never seen the point in learning the syntax in any of the languages I know, since a bunch of else ifs (or elseifs, or elsifs, or elifs, depending on the language) does the same thing. If I waste a few keystrokes, but save a few brain cells, I think it's a worthwhile bargain. Of course if I had to write that kind of construction often I'd probably learn the syntax of the case statement, but in the kind of work I do it hardly ever actually comes up.
- etal 18y agoIt's really just a performance optimization for C, in situations where the switching value can be hashed. In languages that make method dispatch easy, and the overhead of a function call is not something you're terribly concerned about, it makes sense to just roll your own as needed -- that's why Python never bothered with a switch statement.
- stcredzero 18y agoActually, if you never use switch, then that's a symptom of being good at OO.
- sanswork 18y agoIf you don't know the basic features of a language you don't know that language anymore. You maybe once knew it really well, and you still know the general syntax, but you aren't a insert language programmer anymore. I do agree though that testing specific language skills is mostly pointless. The only time I've been given a programming test as part of an interview I was given a basic language spec that filled a couple pages then a book of problems to solve in the new language. Thats the way you should test programming skill in my opinion.
- TFrancis 18y agoI don't think that I would ever hire a insert language programmer. When looking for someone to program, I'm just looking for a programmer; language isn't important.
- sanswork 18y agoA lot of people get hired in for emergencies. In such cases waiting for person to learn your offices language of choice isn't ideal.
- TFrancis 18y agoThough they aren't always possible to avoid, I consider "emergencies" examples of poor business decisions and try to avoid them.
- Xichekolas 18y agoWhile I can see some merit in this argument, I'd also point out that I've never met a decent programmer that can't pick up a new language at least passingly in a day or two.
- paulhart 18y agoI agree wholeheartedly with the above. Gotcha questions are nice if you value having a sense of superiority over your candidates. Seeing how someone approaches a simple coding exercise tells you a lot about their techniques. Two examples stand out: 1) A guy who had more Java certifications than had eaten hot dinners couldn't complete the simple exercise after three or four hours of effort. 2) Guy initially attempted to hit Google up for examples (why not!), and on finding that the net connection was disabled for that user account, wrote the best solution to the exercise I've received. Overall, my interviewing process has had two stages. First, talk to the candidate and get a sense of what kind of person they are, and if they'll fit in with the culture. Second, if they seem reasonable, give them the test and see what their code is like. It's not foolproof, but it does weed out most of the weaker candidates.
- bmj 18y agoThis is exactly how I was hired at my current employer. The VP of product dev interviewed me, and asked very general tech questions regarding work I've done. Then I was hammered by my now-direct manager. I didn't have any resources, but his questions often evaluated my thought processes as well as my coding skillz. I should add that I thought I bombed the technical interview. So much so that I wanted to ask the VP if he had the right guy when he called with the offer.
- dangoldin 18y agoSome questions do let you guage how the person responds to stress and unknown environments - that may be helpful.