Sep 022009

At CAST2009, I took James Bach’s “Teach Yourself Testing” course. Part of his course was to have the testers play a deduction game with a variety of dice. The testers present a set of dice to the instructor, who responds verbally. The object is to figure out what the instructor’s response is going to be, and write down the algorithm that you deduce is being used to generate the response. The rules are you have to present a set of 5 dice, which you have rolled so their values are random.

I was paired up with another tester. Paul Holland, acting as Jim’s assistant, gave us our pack of dice. There were regular old 6-sided dice with dots, and also 4-, 6-, 12-, and 20-sided dice with Arabic numerals, and 6-sided dice with symbols such as exclamation point, spiral, explosion, skull, flower. One likely glowed in the dark.

My partner and I grabbed a random handful of dice, and rolled them, and asked Paul for his response. “Red blinking zero,” he said. We rolled again. “Red blinking zero,” he said. We rolled another set of dice. “Red blinking zero,” he said. Slowly, I began to detect a pattern…


My partner and I spent the next 30 minutes or so trying all kinds of ways to get Paul to say something other than “Red blinking zero.” We knew it was possible because he would offer other responses to other teams, but we could not find a combination of dice that led us out of that particular leg of the algorithm into some other response. I got pretty peeved and cussed at Paul a couple of times (if you read this, Paul, I’m sorry about that).

Finally, after a couple of hints from Paul, we hit on a strategy that started to give us some traction – though to do so we had to break the rules of the game – and within another 5 minutes had worked out the algorithm to Paul’s satisfaction. My partner and I gave the others a little retrospective on the game and our path to the solution, and decided that though it had started out frustrating it had ended up fun, and so it was a good mirror of our normal experience with testing.

******************

I was pretty excited about the dice game. It exercises some important testing skills: generating hypotheses, surfacing assumptions, gathering data, carefully keeping records of variables and outcomes, deducing cause and effect, putting abstract concepts into words, and perhaps most important, questioning the premise. I thought it would be cool to try it out with some coworkers. First I approached my testing teammate Anoop and explained the rules and the object of the game. He spent about 20 minutes with me, going down some of the same deadends that I did, and finally hit on the correct algorithm. He thought it was fun.

Next I asked a developer to play. I explained the rules and the object of the game to him, and he started showing me sets of dice. Within 2 minutes he quit. “I’m a coder. I don’t guess what the code is, I read the code.” He was polite enough to stick around to find out what the algorithm was, and to hear why I thought it was a useful testing game, but I could tell his heart wasn’t in it. He simply didn’t care to guess.

Then I asked another coder to play. He told me he had a couple minutes, so I set up the dice and told him the rules and the object. In response to his first couple sets I told him “zero”. The third time he rolled the dice I said, “Red blinking zero.” He immediately quit, throwing up his hands into the air and exclaiming, “What kind of crazy game is this? What other responses are in this algorithm, purple… people-eating… zeroes? And what’s the point of having rules if all they do is make it impossible to win?” He was pretty worked up (I’m pretty sure he mentioned sunspots as a possible variable in the algorithm, a good indicator of his worked-up-ness). We talked it over for a while, and the gist of his argument was that the puzzle was just way too hard for the couple minutes he had to devote to it. (To recap: He quit the game because he could see that it was a pretty open-ended problem that he did not want to devote the time it would take since he only had a couple minutes, then we immediately had a twenty-minute discussion on why the game would have taken too long. People are fascinating.)

He compared the dice game to the children’s game “Aunt Bertie Fish”, the object of which is to figure out what category of things Aunt Bertie Fish loves by being told a litany of things she loves and things she hates. An example I just made up: “Aunt Bertie Fish loves apples and hates bananas. Aunt Bertie Fish loves stop signs and hates street signs. Aunt Bertie Fish loves Boston baseball and hates Chicago baseball.” I’m outlining a pair of mutually-exclusive sets, X and Not-X, using tropes and examples which are common in my cultural context. In this case, Aunt Bertie Fish loves things that are red and hates anything that is not red.

According to my colleague, the dice game is like Aunt Bertie Fish except without the X. All he is getting is not-X, in which case X could be anything. Or else he is getting X and Y and Z, rather than a simple X – Not-X universe. It is impossible to bound the game using logic a priori, and it is in fact kind of unfair that the instructor does not offer the complete set of possible responses. And don’t get him started on how wrong it is to set up rules that have to be broken to succeed at the game. If someone played Aunt Bertie Fish with him that way, it wouldn’t be any fun at all.

******************

Slowly, I began to detect a pattern. Tester plays dice game: works through it, thinks it is fun, and recognizes it is relevant to day-to-day testing work. Developer plays dice game: gets upset or bored, quits.

It’s tempting to write off the first developer as a bad tester, but actually he is a fabulous tester who writes code in which it is very difficult to find problems.

It’s tempting to feel insulted that the second developer thought the dice game wasn’t any fun, but he has obvious respect for the tester’s willingness to jump into the game, sink or swim. My theory: this developer has a very healthy respect for the vastness of the testing problem space, and he hopes that games like this do not teach testers to be glib in the face of it, and to jump to conclusions too quickly, just because you figured out /this/ algorithm doesn’t mean that the /next one/ won’t depend on sunspots, and can never be solved.

How do your colleagues react to the dice game?

******************

Epilogue: I also played the game with my wife Sarah (who evidently loves me very much). Her advice on using the game to introduce testing to non-testers, was to take it slow. Start with a super-simple algorithm and 2 dice, and no “rules”. Then play again and incrementally add complexity: harder algorithms, more dice, more types of dice, various “rules”. If anyone has an opportunity to try this tactic on a set of interested non-testers, I’d like to get your thoughts.

Tell your friends about this post:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • E-mail this story to a friend!
  • LinkedIn
  • Reddit
  • StumbleUpon
  • Technorati
  • Twitter

7 Responses to “Playing the dice game with developers”

  1. Anne-Marie says:

    Hi Geordie,

    Your post brought me right back to Jame’s class a couple of years ago. I remember this ‘game’ as the person I was paired with refused to let me near the dice, or let me know what he was thinking.

    He was one of those testers who liked to work independently. I busied myself my taking notes and reporting….

    It was a great class though.

  2. Hi Anne-Marie – What an interesting story of a pair of testers with very different styles. Was he a good tester? I wonder if the concept of a “tester mindset” is flawed, that there is an equal amount variation between any given testers as between a tester and a developer.

  3. Anne-Marie says:

    Hi Geordie,
    He was a great tester! Just liked working by himself, he was doing so well, it seemed a shame to interrupt him, so maybe it says something about me too!

  4. Niresh says:

    Hey Geordie,
    I had fun playing Dice game at James Tutorial with you @ CAST 2009. I was planning to have my team the game and i currently learning the dice game. I might need you help leaning the game. Rest is fine with me.

    Geordie’s reply: If you need help remembering how to play or how to be the overseer, then drop me a line.

  5. Dawn says:

    Hi Geordie,

    I found your blog entry while searching for the rules for Jame’s dice game. I played it at PNSQC last fall and can’t fully remember the rules. I had such a great time playing it and wanted to share it with my team next week. Could you drop me a line with help/advice on how to present the game to my team? Thanks in advance!

    Geordie’s reply – I’ll catch you on email, Dawn. Thanks for stopping by.

  6. [...] The Dice Game Dice game: Key life skills for testers Playing the dice game with developers [...]

  7. 1. Could you write out the words to the Rapid tester song for me?

    OK, will do.

    2. The dice game sounds like fun. Is it written up anywhere with guidelines for the overseer?

    I don’t know. I suspect not, since that would let people read up on it before experiencing it. I can check with Paul Holland and see.

Leave a Reply

(required)

(required)