FizzBuzz
I was enjoying Patrick Kalzumeus’ career advice to computer programmers, which in turn linked to an article that states that only 1:200 applicants for computer programming jobs can write a simple FizzBuzz program. FizzBuzz must be something tricky like MapReduce! Not quite:
Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.
Most good programmers should be able to write out on paper a program which does this in under a couple of minutes. Want to know something scary? The majority of comp sci graduates can’t. I’ve also seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution.
Huh? I remember when a CTO explained that a SysAdmin should have at least mediocre programming skills. So, I have always aspired to have at least mediocre programming skills. (More important, SysAdmins are extremely well-served when they can write programs to make their work easier!)
I haven’t written C code in a long while, but I fired up vim and had this compiled and running in a few minutes:
#include <stdio .h> void main() { int i, fb; for( i = 1; i < = 100; i++ ) { fb = 0; if( i % 3 == 0 ) { printf("Fizz"); fb++; } if( i % 5 == 0 ) { printf("Buzz"); fb++; } if( fb == 0 ) { printf("%d", i); } printf("\n"); } } |
I recall at least one interview with Google and probably other companies where I have done something like this on a white board, with the interviewer challenging me with compiler-like errors to help me repair syntax errors.
Patrick’s point is that when you work with excellent people, you see your skills in that context, and will tend to be unduly modest. But when you step back a bit and look at your skills in the context of the industry as a whole, you may well be among the best on the market.
Here in the Silicon Valley, there are plenty of tech jobs, but there is also plenty of competition, which means that the folks you come to associate with will tend to be toward the top of their field.
Patrick’s further point would be that you need to take your skills, and develop the capacity to convey the value that those skills can bring to an organization.