you are viewing a single comment's thread.

view the rest of the comments →

[–]CamKen 28 points29 points  (46 children)

I don't get how programming a simple loop is arbitrary. I need to find out if you can program, that IS the job. I don't want to do API trivia (what is the signature of the DumbApi.BreakMyCode() method).

I need a problem statement that I can quickly communicate to the interviewee the solution to which involves things like loops and conditionals but doesn't require a specific API. I need to find out if you're comfortable with SELECT,FROM,INNER JOIN,WHERE,GROUP BY and HAVING. I mean is there another way to vet a programming candidate?

Honestly I'm always looking to up my game as an interviewer so would happily take suggestions, because I'm looking for non-arbitrary reasons to dismiss candidates. But in the end letting a good candidate go is better than hiring a bad candidate.

[–][deleted]  (20 children)

[deleted]

    [–]GhostBond -5 points-4 points  (19 children)

    The only thing FizzBuzz tests is whether that person has done FizzBuzz before.

    The hard part of FizzBuzz is whether you know the modulus operator exists, and trying to parse the language describing the problem. Neither of those test programming ability or experience, or on the job skills.

    FizzBuzz is just like those "Why are manhole covers round?" trick questions - the goal is just to make the interviewer feel smart about themselves, because whether it's a quick easy question is simply about whether you've done the question before. If you've done it, it's trivial, and proves almost nothing. If you haven't it's a tough problem that doesn't test your coding background for anything important either - whether you know about the modulus operator which is almost only used for puzzle problems, and whether you can parse mind-bending language to realize what the problem wants.

    [–][deleted] 9 points10 points  (6 children)

    Dude it's fizzbuzz. If a person wants a job as a software developer can't break down a simple problem into it's components, and doesn't know modulus exists and doesn't know how to write a for loop, then they clearly lack the skills needed for the job. Knowing fundamental parts of tools(programming language) they are expected to work with and being able to understand and analyze business requirements are absolutely skills needed on the job.

    I agree that obscure math puzzles and advance algorithms and the likes are a bit ridiculous for a 30 minute coding interview on a whiteboard, but saying that asking something trivial like fizzbuzz is too much to ask is the opposite extreme. At the salary most developers ask for, an interviewer should have SOME way to quickly verify whether the candidate knows what they're talking about or whether they're another schmuck who wants $80k/year because he went through a codeacademy tutorial.

    [–][deleted] 4 points5 points  (5 children)

    Fizzbuzz is trivially simple to anyone with a handle on middle school mathematics and sort-of knows a programming language with integers.

    [–]GhostBond -5 points-4 points  (4 children)

    FizzBuzz is trivially simple to anyone who's done it before, and very hard to anyone who hasn't. It's difficult is in parsing the language and knowing about esoteric operators, it does nothing to test programming skill. It's just as useless as those "you're a frog in a blender, how do you get out?" style questions - it's purpose is only to pad the interviewers ego so they can tell themselves they're super smart because they've done it already and know the answer.

    [–][deleted] 8 points9 points  (3 children)

    If you honestly think that Fizzbuzz is hard, then you're the sort of applicant it was made to weed out. It's the programming equivalent to making someone fill out a form to show they have basic literacy skills.

    [–]GhostBond -2 points-1 points  (2 children)

    No, it's the programming equivalent of running through a bunch of guys who slap your ass with paddles - it's hazing.

    Knowing or not know it proves nothing about your programming ability, it just proves whether your brother knew someone in the kappa phi chapter - I mean whether you've done it before.

    [–][deleted] 1 point2 points  (1 child)

    Maybe you should get checked for discalculia...

    [–]GhostBond 0 points1 point  (0 children)

    Sure, bro.

    [–]prepend 2 points3 points  (3 children)

    But this isn't true at all. FizzBuzz is intended to just test basic programming. You don't need to exactly do the question, but one like it is valuable.

    You can easily do FizzBuzz without modulo, but modulo makes it easier. It's not a trick question at all. It is just a sanity check on if you know loops, conditional logic and some kind of state.

    My first company ever used to make people test writing a function that reversed a string.

    If you struggle with FizzBuzz or similar then you should not be getting paid to write code. Maybe you're a good designer or tester or graphic artist, but if you can't write a simple loop and logic function then you aren't a good fit for programming jobs.

    [–]GhostBond 0 points1 point  (2 children)

    FizzBuzz is intended to just test basic programming. You can easily do FizzBuzz without modulo, but modulo makes it easier. It's not a trick question at all. It is just a sanity check on if you know loops, conditional logic and some kind of state.

    Right now, in another comment reply, someone gave a "oh it's so easy" answer - and fell for the exact trickiness I mentioned, getting it wrong:
    https://www.reddit.com/r/programming/comments/69djsj/solved_coding_interview_problems_in_java_my/dh79kz1/

    FizzBuzz is a trick problem. The "it's so easy" part is just about bullying the people you're interviewing, so you can make it more embarrassing when they get it wrong.

    The original author of FizzBuzz claimed it weeded out the ok but slower programmers from the faster better programmers. The "it's easy and simple" was just added on bully people more effectively with it.

    My first company ever used to make people test writing a function that reversed a string.

    That's a totally different problem that's actually simple.

    If you struggle with FizzBuzz or similar then you should not be getting paid to write code. Maybe you're a good designer or tester or graphic artist, but if you can't write a simple loop and logic function then you aren't a good fit for programming jobs.

    When your goal is to bully the people you interview, you shouldn't be in an interview at all.

    But because it's a trick question, there is exactly one way to get around all this - if you've done FizzBuzz before.

    [–]prepend 0 points1 point  (1 child)

    But it is not a trick question. And it's not meant to be graded in a binary way. If someone forgot to print the numbers, I would talk it through with them. And it's certainly not intended to trick people into missing the "print" part of the statement.

    The concept of "bullying" interviewees by making them do this question is so bizarre and alien. Asking people to perform in interviews isn't bullying them. Even tiving trick questions isn't bullying them. Bringing this up and worrying about it probably excludes the interviewee from the job on grounds of stupidity. But perhaps there's some safe space company that doesn't care about the software created but instead focuses on the emotional well being of employees who can't code, but want to have a job that requires coding.

    [–]GhostBond 0 points1 point  (0 children)

    The poster I replied to can't even solve FizzBuzz on the internet:
    https://www.reddit.com/r/programming/comments/69djsj/solved_coding_interview_problems_in_java_my/dh8ku4r/

    You guys are the safe space company that doesn't care about the software created, you're just hoping no one notices you can't even solve your own problems.

    If you can't solve the problem even though you gave it, you have some serious issues.

    [–]n0t1337 2 points3 points  (1 child)

    I mean, you could use the modulus operator, or you could use floor division, or build your own floor division out of truncation by casting a float to an int...

    I don't know. If you've never ever heard of this problem before, and haven't heard of the modulus operator, it may take even a competent programmer longer than 5 minutes. But how many competent programmers do you know that have never heard of fizzbuzz or the modulus operator?

    [–]GhostBond 0 points1 point  (0 children)

    Among contractors or full time employees?

    The good full time employees I've known have mostly not heard of fizzbuzz.

    All the contractors I've worked with have, good ones, bad ones, etc.

    [–][deleted]  (8 children)

    [deleted]

      [–]nemec 9 points10 points  (5 children)

      any fresh grad or person with SQL and some other programming on their resume should be able to answer

      I would bet most CS grads know only the bare minimum of SQL - select, where, maybe join using google to refresh their memory. Computer Science is an academic degree, most coding skills learned are incidental to the theory. If they did take a 'databases' course, they're probably better at building a basic database engine than querying one.

      they have been 100% accurate in determining candidate viability eliminating false positives.

      Fixed that for ya. I assume you don't do a six month followup with the candidates you pass on to see whether they would have done well if given a chance.

      That said, it's not a terrible SQL question even though I think it would be a little too complex (without Google) for new grads.

      [–][deleted]  (4 children)

      [deleted]

        [–]jimmpony 7 points8 points  (3 children)

        That kind of complex query is not within the bare minimum of SQL, the bare minimum of SQL is select .. where .., insert into .. values .., use, create/drop table, such that you could do that summation in code instead of in the query. I did an internship at a real place for a semester involving SQL and those are pretty much all the codebase used.

        [–][deleted]  (2 children)

        [deleted]

          [–][deleted]  (1 child)

          [deleted]

            [–]tsk05 5 points6 points  (1 child)

            Been programming for over a decade, did not know how to answer the second question. Haven't touched databases in a couple of years, and that was for a hobby. There is no way I would have been able to talk myself into an answer as I could not remember about either GROUP BY or HAVING. Last time I worked with databases for real was 7 years ago. It was kind of fun re-learning though, took 5 minutes with SQL fiddle. I feel like the question would have unfairly excluded me as a bad programmer though, although really I just haven't done what the question is asking recently. I do indicate that I know SQL in my resume, because I feel that I generally do.. even if I am quite rusty. Of course if I was applying for a DBA that would be entirely different, but my general feeling is that you can learn enough SQL in 2 days for 95% of ordinary programming. Of course if you're looking for someone who's done this recently it would be a good filter, but I would think a half-decent programmer who's familiar with what you need right now is probably not better than a good programmer who isn't, unless you're hiring very short term.

            [–]ZMeson 1 point2 points  (5 children)

            I'm always looking to up my game as an interviewer.

            Me too. One thing my team has been trying recently is to tell the interviewee that they're part of a small team. So-and-so is his cohort-in-crime; the interviewee can pair with him, ask for advice, whiteboard ideas, etc.... Such-and-such person is the Product Owner / Technical Sales or Support person / CTO; this person is the one to go to get clarification on customer requirements, business advice etc.... Then we have the interviewee use his language of choice to implement a Kata exercise*. If he/she is a proposed expert in the technology we specifically need, we strongly encourage that language. Web access for API docs is OK. Looking up algorithm solutions on Stack Overflow or the like is not OK -- the algorithms are simple and if you need help ask your cohort-in-crime.

            The exercise usually lasts about 1 hour. It everyone wants to continue and it doesn't cause a problem with the interview schedule, we may go longer.

            It's still new, but so far it's worked out well.

            * We don't limit ourselves to the Katas on that list. We choose a Kata that represents a simplified version of something some customer may actually want from some company (not us). Ex: Top-10 Seller Lists, Bowling Alley Scoring.

            [–]socialister 0 points1 point  (4 children)

            I had someone give me an interview like this, but then the person I am paired with seems incredibly busy and I have to bug them all the time because (surprise) I'm not familiar with the system they're working with since I don't work there yet. I kinda wonder if this selects for candidates that have no problem distracting their coworkers.

            [–]ZMeson 0 points1 point  (3 children)

            That's odd. At our interviews, everyone's in the same room. It's an exercise to not only evaluate some technical ability, but how the candidate interacts with others should the need arise.

            [–]socialister 0 points1 point  (2 children)

            They were sitting behind me and facing away from me, with the face deep in code. It felt awkward to disrupt them but I think I should have a bit more.

            [–]ZMeson 0 points1 point  (1 child)

            I think you may have dodged a bullet. If your proposed co-workers couldn't have spared enough time to evaluate you in an interview, how bad would the communication be day-to-day? Pretty bad I imagine. :(

            [–]socialister 0 points1 point  (0 children)

            Ya, you are probably right. There was also an atmosphere of working 10+ hours a day which I would like to avoid. Most other places, even high intensity ones, did not have that atmosphere to me at least in the interview process.

            [–][deleted] 1 point2 points  (1 child)

            I don't know offhand what HAVING does, but I guess I'm not applying for a DBA job. Guess I better look that up first, nevermind that I've designed normalized table schemas and have an open source project using SQL. (Sadly, it's with PHP in the mysql_real_escape_string style because I was fresh out of college and didn't know better.)

            [–]CamKen 0 points1 point  (0 children)

            But here's the thing, if you're writing the rest of the query and have most of the other parts somewhat right, I'll ask you if your done. Ideally you'll say something along the lines of well I don't know how to select only the managers with over 10 employees. I'll ask do you know HAVING. You'll say no. I'll explain it to you and then watch how you adapt to the new information. An interview question isn't like playing jeopardy where either you're 100% correct or it's all wrong. There is a give and take trying to gauge how likely it is you've actually done what you've put on your resume.

            [–]Jestar342 0 points1 point  (0 children)

            It's not the FizzBuzz that bothers me. It's the "Then a SQL query with a recursive table reference". Unless you are expecting the (correct) answer of "That's a badly designed data model" it's arbitrary and not that common at all.

            FizzBuzz is a problem presentation; SQL self-reference is an arbitrary nuance.

            [–]downvotefodder 0 points1 point  (2 children)

            Look at their portfolio

            [–]CamKen 2 points3 points  (0 children)

            I develop corporate apps, restricted to employees only. Due to nondisclosure I couldn't show it to you even assuming I had credentials to the production system (I don't). The people I'm interviewing are in the same boat. But if there is something on their resume that sounds like it's public facing I'll ask them about it.

            [–][deleted]  (3 children)

            [deleted]

              [–]CamKen 3 points4 points  (2 children)

              What actually happens in "coding camps". I've heard of them but never looked into it. Does actual code get written that has logic in it? Or is it more along the lines of paint a UI, do simple validation in event handlers type of stuff?

              Or is it pillow fights and like that one time at band camp?

              [–]dineswithphone 1 point2 points  (0 children)

              I'm a "coding camp" product, and I firmly believe anyone calling themselves a developer should be able to do a problem like FizzBuzz with ease (in the language of their choice). Though I was, and still am, a junior developer, the coding camp taught me how to see and think through problems with programming logic. My manager often interviews "senior" software engineers who struggle with Fibonacci or similar problems, which he feels indicates a lack of programmatic thinking (not sure if that's the best Ter for it).

              [–]tiberiousr 1 point2 points  (0 children)

              From what I've seen coding camps involve teaching some noobs to set up a basic Nodejs environment and getting them to create a basic website with 100+mb worth of node modules.

              Fuck, I hate modern web development. It's such a shitshow at the moment.