FizzBuzz: From Imran Ghory’s 2007 Hiring Filter to Internet Meme

FizzBuzz is the only interview question that has become a meme outside of programming. People who do not write code know the punchline. The reason is a single 2007 blog post by Imran Ghory called Using FizzBuzz to Find Developers Who Grok Coding, in which he claimed that the majority of computer-science graduates he interviewed could not solve the problem in any reasonable amount of time. The internet, then and ever since, has been arguing about whether that claim was true, what it meant if it was, and what it said about the state of CS education.

The problem

Write a program that prints the integers from 1 to 100. For multiples of three, print “Fizz” instead of the number. For multiples of five, print “Buzz”. For multiples of both three and five, print “FizzBuzz”.

That is the entire question. The reason it is famous is not the problem — the problem is trivial — it is the claim that surrounded it.

The Imran Ghory blog post

Ghory was a London-based developer who, in early 2007, wrote a short post on his personal blog. The argument was not subtle: he had been interviewing candidates with computer-science degrees, and a substantial fraction could not write FizzBuzz on a whiteboard inside a few minutes. He proposed that any technical interview should start with a problem of FizzBuzz-tier difficulty as a gating filter, on the theory that a candidate who could not write FizzBuzz had no business being interviewed for a programming job at all.

The post got picked up by Jeff Atwood on Coding Horror, which was at that time one of the most-read programming blogs on the internet. Atwood’s framing — Why Can’t Programmers… Program? — turned the post into a viral artifact. Within weeks, FizzBuzz was the standard opening question across half of the industry. Within a year, it was a punchline.

The canonical solution

for i in range(1, 101):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

The only trap in the basic version is the order of the checks. If you check i % 3 == 0 first and print “Fizz” without continuing to the next iteration, then a multiple of 15 will print “Fizz” but never “Buzz”. Either check the multiple-of-15 case first, or use a string-concatenation approach that handles both checks independently:

for i in range(1, 101):
    output = ""
    if i % 3 == 0:
        output += "Fizz"
    if i % 5 == 0:
        output += "Buzz"
    print(output if output else i)

The second version is what most experienced engineers write, because it scales naturally to FizzBuzzBazz (add a third divisor) without rewriting the conditional tree.

Variations interviewers actually ask

Once FizzBuzz became famous, asking it as the literal problem stopped working — every candidate had memorized the answer. Interviewers shifted to variations that test the same skill but cannot be looked up:

  • FizzBuzz without modulo. Solve the problem without using %. The answer is to keep two counters that reset to zero when they hit 3 and 5 respectively, and check whether each is zero. This tests whether the candidate understands that modulo is just a shortcut for “remainder after repeated subtraction”.
  • FizzBuzz that scales to a billion. The naive solution is fine for 100, but at a billion the I/O dominates. The right answer is to batch print and avoid string allocation per iteration. This tests whether the candidate has thought about hot loops and allocation.
  • Generalized FizzBuzz. Given a list of (divisor, word) pairs, print the corresponding word. This tests whether the candidate can refactor cleanly without overengineering.
  • FizzBuzz with negative numbers or zero. What does 0 % 3 return in your language? (Zero in most languages, which means index zero would print “FizzBuzz” if the loop included it.) This tests edge-case awareness.
  • FizzBuzz in the language you are weakest in. Some interviewers explicitly ask the candidate to do FizzBuzz in a language they have not used recently. The point is not the algorithm — it is whether the candidate can navigate unfamiliar syntax under pressure.

What FizzBuzz actually tests

The Ghory argument was that FizzBuzz tests whether you can program at all. That is not quite right, because in 2026 every candidate has seen FizzBuzz and has a memorized answer. What FizzBuzz now tests, when interviewers still ask it, is something more subtle: how the candidate handles a problem they consider beneath them. Does the candidate complain that the question is too easy? Skip ahead and miss the multiple-of-15 case in the rush? Write the cleaner string-concatenation version voluntarily, or default to the conditional tree? Talk through their reasoning, or write silently?

An experienced interviewer learns more from how a candidate solves FizzBuzz than from whether they solve it. The five-minute version of FizzBuzz is the warmup; the part where you ask “now what if there are a thousand divisors” is the actual question.

The ongoing debate about Ghory’s claim

The original claim — that most CS graduates could not solve FizzBuzz — is one of the most contested artifacts in industry hiring discourse. Several positions:

  • The original claim was correct in 2007. Many CS programs at the time emphasized theory over implementation. A graduate could pass a CS degree without writing more than a few hundred lines of code, and FizzBuzz exposed that gap immediately.
  • The claim was a sampling artifact. Ghory was interviewing a self-selected pool — candidates who applied to a small London startup — and that pool may not have been representative of CS graduates in general.
  • The claim is no longer correct in 2026. Coding bootcamps, LeetCode prep culture, and the universal availability of online tutorials mean that essentially every candidate who shows up to a programming interview can write FizzBuzz. The candidates who cannot do it never make it past the resume screen.

The debate about whether Ghory was right is itself the reason FizzBuzz is famous. If everyone agreed, the post would have been forgotten. The disagreement — about whether the bar was being lowered, whether CS education was failing, whether interviews were broken — turned FizzBuzz into a permanent reference point in industry conversations about hiring.

Is FizzBuzz still asked in 2026?

Rarely as the literal question, but commonly as a warmup variation. A typical 2026 phone screen at a tier-2 tech company might open with “given a stream of integers, print Fizz for multiples of 3, Buzz for 5, FizzBuzz for both, and skip primes”. The skip-primes addition takes it from 30 seconds to 5 minutes and tests whether the candidate can compose two unrelated checks cleanly.

At FAANG, FizzBuzz proper is gone. The phone screen there is a LeetCode medium. At startups and tier-2 firms, a FizzBuzz variant survives because it is a fast filter against the candidates who genuinely cannot code — and that population, while smaller than in 2007, has not gone to zero. At Wall Street and quant firms, FizzBuzz never showed up because they had their own filter (mental math drills and probability puzzles).

The cultural impact, though, is permanent. FizzBuzz is the question that gave the industry a shared reference for “the simplest possible coding test”. When someone says a problem is “FizzBuzz-tier”, everyone knows what they mean — and that is a level of cultural penetration no other interview question has achieved.

Frequently Asked Questions

Who invented FizzBuzz?

The math game predates programming — it is a children’s game where players count up and substitute “Fizz” for multiples of three and “Buzz” for multiples of five. Imran Ghory adapted it as an interview filter in 2007.

Is FizzBuzz still a useful interview filter?

Less useful than it was in 2007 because every candidate has memorized the answer. Variations of FizzBuzz are still useful — the no-modulo version, the generalized version, or the scale-to-a-billion version. The literal question is mostly a warmup or a confidence-builder for the candidate.

What is the cleanest way to write FizzBuzz?

The string-concatenation version is generally considered cleaner than the four-way conditional tree because it scales to additional divisors without rewriting the logic. Some style guides prefer the conditional tree for readability when there are exactly two divisors. Both are correct.

Why did the FizzBuzz post go so viral?

Three reasons. First, the claim (“most CS graduates can’t do this”) was specific and provocative. Second, Jeff Atwood amplified it through Coding Horror, which had massive industry reach. Third, the question itself is so easy to remember that the post was self-replicating — anyone who read it could repeat the test on their own candidates and post their results, which kept the conversation going for years.

Scroll to Top