Welcome to The FizzWife Project!
The goal of the experiment is to teach my wife Dena, a law clerk with little technical/scientific background, enough about the bare essentials of computer programming so that she is able to successfully implement FizzBuzz on her own.
FizzBuzz, of course, is a problem that Jeff Atwood (Internet) famously summarized as a test of programming ability (and not programming proficiency). FizzBuzz boils down to the following problem statement:
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”.
The problem is trivial for experienced programmers, but may present a challenge to non-programmers such as Dena.
A note to all coders out there: please don’t post your own solutions to FizzBuzz in the comments; I will delete them.
The impetus for this experiment actually had little influence from yours truly. In August, Dena and I visited her brother in Kotzebue, Alaska. For the long trip, I packed some books (GASP! real dead-tree versions) to pass the time, and one of those books was Coders at Work. At various points during the trip, Dena – completely of her own volition – picked up and read some of Coders at Work; its conversational nature (and lack of any actual code) proved interesting to her. So much so, that she approached me with interest in learning something relating to what the interviewees in Coders at Work spoke about. I didn’t think she was serious, but she continued to broach the subject even after we returned.
My dilemma was to determine a project or a set of projects that would help her gain understanding of the bare essentials, while at the same time keeping her interest high. The project had to avoid dependencies on computer science-y things like data structures and algorithms, engineering topics like methodologies/paradigms/architectures, and any sort of APIs. Robert “Uncle Bob” Martin recently highlighted that programming, regardless of the language and environment boils down to three things; sequence, selection and iteration. And I think FizzBuzz, while being simple, is an excellent example of these three principles. I also settled on Python as the language she’ll use, to avoid strongly typed languages for the time being and the benefit of using IDLE for REPL purposes. Immediate feedback is a good thing! Also, I feel Python’s syntax is easy for a beginner to understand.
Join Dena and I as she’s introduced to the essence of programming, with the goal of her creating her own FizzBuzz implementation. I’ll post updates on her progress and code snippets, so stay tuned!