15 ms·
There is at least one serious misconception in this article. > The famous fizzbuzz test simply asks "are you aware of the modulo operator?" Nope. The famous f
by gjm11 7y ago
There is at least one serious misconception in this article.
> The famous fizzbuzz test simply asks "are you aware of the modulo operator?"
Nope. The famous fizzbuzz test simply asks "can you actually write code at all?", because it turns out that some people applying for software development jobs basically can't. Even people with relevant-looking experience on their CV/resume. Even people who talk convincingly about what they've done.
(If you don't know about your preferred language's modulo operator but can do truncating integer division, you can do FizzBuzz that way instead. If you don't know how to do division, you can do it by having counters that count up mod 3 and mod 5, or one counter that counts up mod 15, and you don't need "mod" in your vocabulary to do any of that.)
Now, whether a candidate can write code -- like whether they know their language's modulo operator -- is also just one bit of information, but it's a really important bit of information that turns out to be tricky to get. This is also one reason for the "code on a whiteboard" tasks that many interviews use, which the author also doesn't like.
It may be that those are bad ways to get that one bit of information. But the author doesn't seem to appreciate what problem those things he criticizes are trying to solve.
- acjohnson55 7y agoIn my experience, this just isn't a real problem. If someone has any sort of track record in the industry, I've been able to correctly conclude that they can code. The only time I've found sample code useful is for people who are brand new.
- q3k 7y agoIn my experience, it is. I've done technical screens with _failed_ fizzbuzz-grade problems to people whose CV said that they have been coding for years, and those people were looking for (Senior) developer roles (not management, 'architect', just plain developer).
- ScottFree 7y agoIf you can't screen those people out in the introductory phone call then your hiring process is broken.
- q3k 7y agoHow would you structure such a call so that this candidate would be filtered out?
- whatshisface 7y agoAsk them to write fizzbuzz over the phone?
- q3k 7y agoThis was over a phone/internet call (first technical screen after a non-technical recruitment call). Or are you saying our non-technical recruiter should be asking potential candidates to write a fizzbuzz?
- turk73 7y agoI am interviewing candidates in the Fortune 10. We get a lot of fraudsters that have found a way to lip sync Webex interviews and do all manner of silly things to get marginal people hired into roles they aren't suitable for. After 25+ interviews, and hundreds over the last nearly 20 years of my career, I can tell you in just a few minutes whether I want to work with that developer or not. I don't have to ask them to code, I just have to ask them things about our day to day work that only real developers know, for example: If you're writing Spring Boot applications, tell me about which jars you include in your build to do that. Oh you only use Spring initializr? Okay, well, then tell me about which jars you added to your project after that initial setup. You say you use Kafka in your current role, tell me what jars allow you to set up Spring Boot Data for that. Oh, you don't use that approach? Interesting. We looked at doing that, too. And then, hopefully, you get to understand what they are doing and what they know. Interviewing for Angular: What is your least favorite thing about working with Angular? What packages are you using in your application? Have you had trouble with your CI builds in Jenkins (or whatever they say they use?) I listen to them and I ask questions that ought to be relevant to them. I typically start "hard" and then if I don't get anywhere, I ease back. You stated that you write REST services? Tell me, what Java library do you use for making a REST call from inside your application? Oh, okay, another team did that, I see... And so on. It becomes very obvious whether the person is bullshitting you. I recently interviewed someone for a tech lead role who says he had been a tech lead at another company but I was astounded by not only how bad his answers were but also by how little he appeared to know about the business of coding. Either the guy was lying to use completely or he was in a real creampuff kind of lead role where you don't need to know anything about coding, anything about the architecture of the system you are responsible for, or anything useful at all, really. How do I get that job?
- reallydontask 7y agoIn what way did they fail? The first time I was given this problem on an interview it took me two attempts to get it right. That is, I wrote the code, ran it and it failed to do multiples of 15 properly I went back and fixed it. Would you count that as a failure?
- chrisseaton 7y agoI’ve spoken to people who get about as far as writing a loop and printing the number but just have no idea how to go any further with the fizz and buzz logic at all, even with lots of hinting. I think it’s because many developers just call one API and send the result to another API - they never have to write any actual logic themselves, so they don’t know how.
- q3k 7y ago> In what way did they fail? One example: Declared themselves to be an experienced Pythonista of N+ years. Couldn't write a `for i in range(100)` loop in Python without hints. They probably could've done it in a different language, but I didn't want to have anything to someone who misrepresents experience in their CV. It's fine to say you don't know it and instead show me that you can learn it.
- zentiggr 7y agoOMG can I come work for you? Been coding for my entire life, just don't have the resume text to back up the fact that I can learn just about any language/tool/framework/gizmo that I come across, so trying to get hired to any particular place, who all require "proven track record, 1+ years in X,Y,Z,ZZ and ZZZ", is almost impossible. I'd love to see more openings saying "we use these tools, but we're open to work with anyone who can show they can learn them and be a solid team member".
- q3k 7y agoOne of the customers I work with is currently looking for backendy/devopsy people who want to work with Go/Python/Kubernetes/Bazel and make things better. There also exists also some frontend stuff that needs work. Basically, we're looking for generalists. Get in touch if this sounds like your sort of jazz :).
- avip 7y agoSo either you’re in a niche or someone is phone screening before your interview. Or we live in different worlds.
- acjohnson55 7y agoSometimes I do the initial screening, sometimes someone else does it. Generally, I find if I do a good job of explaining what we do and need, people tend to resonate, or not. Most people don't want to show up to a job they can't do successfully.
- khendron 7y agoI've worked with people who had been working in programming jobs for some years, and didn't have any instinct for coding. Give them a detailed spec, or some detailed business logic, and they could write code to match it. But when left to their own initiative they would fail completely. I am curious as to how they would do with fizzbuzz.
- tjpnz 7y agoI actually interviewed a candidate once who regularly spoke at tech conferences. This person certainly had an industry track record, yet they failed spectacularly with FizzBuzz and did even worse on the questions about simple data structures. It's possible they were having a bad day, but it's equally plausible that we had encountered someone who could just talk really convincingly about things in very general terms.
- acjohnson55 7y agoI believe you. It's just that assuming they made it through the whole process, showed up, and couldn't do the work, I think the thing to do is just sit down and say "this isn't working", part ways, and on to the next one.
- mlthoughts2018 7y agoTo me, this says more about the failure of interview questions about data structures than about that (probably perfectly competent) candidate.
- JustSomeNobody 7y agoEvery substantial program uses at least one data structure. The problem isn’t asking about data structures or even algorithms. It’s about asking leetcode.
- mlthoughts2018 7y agoI agree. Maybe to a limited extent I’d also say not accommodating the candidate’s working requirements (introvert vs extravert, choice of editor, time pressure) is another big part of it.
- mieseratte 7y agoI've met and had the misfortune of working with folks who have gotten jobs via beers-and-handshakes interviews. Supposed "lead" and "senior" engineers who couldn't comprehend basic control flow, who wanted, and attempted(!), to write their own Rails clone, Flux clone, etc. Just like leadership and managerial tasks are not related to actual coding, talking about and evangelizing some library or technology does not mean you're a competent software engineer. They are very different skills.
- tlb 7y agoI've interviewed many people with years of impressive-looking developer experience on their resumes who couldn't write FizzBuzz. There are lots of them out there. They do other kinds of developer work: speccing middleware, designing database schemas, negotiating APIs with customers, organizing data assets, leading scrum meetings. Valuable work in its context. But if you want to hire people who can actually code you should test for it.
- LoSboccacc 7y agoalso, it show if a candidate is actually a gung-ho code monkey or has some methods in his coding. our fizzbuz variant asks to print numbers from 1-100, and basically everyone among the few that did the fizzbuz part right got that part wrong, mostly printing 0-99 but also had one 0-100 printed. this doesn't immediately disqualify a candidate of course, because the are a lot of reasons behind the mistake including the interview stress, but on requisite driven project attention to details is a major benefit.
- JustSomeNobody 7y agoIt’s also a good warm up for those who can code but have a few interview jitters.
- bitL 7y agoOK, I'll write your desired fizzbuzz in Haskell in a way that you won't be able to understand it for the next 30 years. You'll moreover piss me off and get a placement on my blacklist of companies to never work for and me actively spreading the news about your interview to anyone capable I know, hoping nobody is going to waste time interviewing for your jobs. Happy now?
- taneq 7y agoI think in your case the test worked perfectly.
- bitL 7y agoHelp me to decode your statement please. Your point was ...?
- taneq 7y agoThat your response to the question revealed multiple important facts about your attitude and inclinations (many of which have been pointed out by sibling comments to mine) which would give me serious pause before hiring you.
- bitL 7y agoCould it be that I am simply fed up with the infantilization creeping into our business everywhere, pushing everyone to standardize on the lowest common denominator, yet I am capable of "building rockets" in metaphorical sense and refuse to play this insane game? Maybe I wouldn't want to work for a person like you and am assessing your abilities during interview, coming to a conclusion that we aren't compatible and I would be just massively slowed down by your attitude instead of unleashing my full potential? I've wasted too much time on these types of people, it never led to anything, and my filters are now calibrated to identify and reject them quickly.
- taneq 7y ago
- seer 7y agoYou are correct, you do get the "can this person actually write _any_ code" info. More than that I think you get the "is this person good at writing trivial code". I'm not sure the groups of people that "write good production quality code" and "write trivial interview code" intersect all that well. Worse it would push for people that _excel_ at writing trivial interview code, which in my experience is inversely proportional to how much they are going to contribute to the success of the company. Though this is admittedly anecdotal. Worse still you're going to be sending a signal to the interviewee that you are a kind of company that values trivial code. It's an interview both ways, the company gets evaluated too. The better the dev, the more offers they have so they might just not pick you based on stuff like this. They'll just get a _gut feeling_ that it's not a place they're going to like - that kind of thing. As an interviewer, I personally don't think it's worth that bit of information, both in a game theory best outcome sense and just as a basic human decency.
- gizmo686 7y agoHow can you be good at writing production quality code, but bad at trivial code? No one is looking for people who can write fizzbuzz the fastest, or optimal in any way. They are looking for you to clear a low bar filter.
- vinay_ys 7y agoLet's say you are an awesome C/C++ systems engineer. Interviewer can pose a programming problem expecting an answer using recursion. But as you are C/C++ systems programmer, you know recursion is inefficient and you have never used it in production code. So, it will not naturally occur to you to use recursion. You will go down the path of coming with a clever iterative solution with complex hand-crafted data structures etc. If the interviewer isn't well-versed in these low-level techniques then they may end up judging incorrectly. And usually such a low-level solution won't be easy to complete in a short 20-minute interview setting. whereas a recursive solve would be doable. which would lead to the interviewer feeling justified in judging negatively. That's how you can be good at production code and bad at trivial code :)
- seer 7y ago
- boblebricoleur 7y agoAbout technical interview questions : I am not against it at all. It opens the conversation to some technical aspects that can be very intersesting to talk about. As a candidate I love getting technical in interviews because It allows me to see how my prospective manager thinks. If we have radically different ways of taking care of a technical problem it's a red flag for me. In the same area, I like the "let's talk about your last project" question too. So, I've had my share of technical interviews and here what I observed : I am usually unable to produce good software when the specs I'm supposed to use are not precise enough. I don't mean not complete enough. I mean not precise enough. Be it on the job or in interviews I seriously question the ability of some interviewers to produce good technical interview questions. By good I mean precise, using the right vocabulary. I do not mean complete. You can knowingly give an incomplete spec to the candidate to see what kind of questions he/she would ask to try and get the whole picture. (or if he/she goes head first into an unsolvable problem) But the details that are given need to be explained in precise terms. Not in a shadowy weird dialect based on a model that only the interviewer understand. I've had my share of technical interviews and most of my fail attempts at live coding were due to (my lack of skill but also) questions not precise enough or misusing technical terms (sometimes even not grammatically correct questions). The latter usually make me feel awkward because I wonder if those interviewers simply lack the minimum intelligence to explain a simple feature with precise words. Good engineers I have worked with always use precise words to describe precise concepts. Using wrong or imprecise vocabulary is proof of a lack of understanding of the job and/or a will to try and sound "smart" or "tech-savvy" to compensate for some kind of inferiority complex. So maybe a good advice to interviewers would be : technical questions on interviews yes. But good technical questions.
- jasonlotito 7y agoIt's kind of amusing you spend a lot of time trying to define the work precise. =) I understand what you mean though. Have you ever considered that part of this is hoping that interviewees will ask questions seeking more precision? A lot of times on the job, you don't get such precision. There are unknowns you have to answer for yourself, and sometimes the right questions are more important than the technical approach.
- etxm 7y agoFizzBuzz is good for one of two things: 1. Interviewing interns or new engineers while telegraphing the fact that your interviewers are absolutely uncreative. 2. Showing mid-senior interviewees that are a good fit that there is either a glaring hole in the recruitment team’s ability to filter out unfit candidates or that the interviewer thinks everyone is a dumbass but themselves.
- perl4ever 7y ago"If you don't know about your preferred language's modulo operator..." Do you know your language's modulo operator? I went down a rabbit hole the other day porting some Python code to another language and discovered that modulo acts differently in different languages for rather subtle reasons.[1] It took me, frankly, more time and iteration to implement Python style modulo correctly than I would have in an interview, or be able to muster while conversing with someone. [1] https://en.wikipedia.org/wiki/Modulo_operation https://en.wikipedia.org/wiki/Modulo_operation (see the table on the right)
- gjm11 7y agoFor Fizzbuzz purposes, you only need to know what happens when both numbers involved are nonnegative, which so far as I know is consistent everywhere. (I deal with the other cases by making sure only to use % or similar on nonnegative numbers. If I ever encounter a case where I need to take remainders and performance is so important that I can't afford to do that, I'll double-check with the language documentation and leave a comment saying what the actual behaviour is. That's never happened yet.)
- perl4ever 7y agoIt's pretty common for people to be very focused on the trivia they know as a litmus test for judging other people, while dismissing trivia they don't know as irrelevant. I don't have concrete reasons for thinking so, but my general impression is that this attitude is significantly more common in IT than other environments.
- Doxin 7y agoIf I was interviewing someone I'd not count a mildly buggy fizzbuzz against them, especially if it's a whiteboard interview. Really all I'm looking for is for someone to conclude based on the problem description they at the very least need a for loop and a couple if statements. It's not a test to see if you can program well, it's a test to see if you can program at all.
- perl4ever 7y ago