Tag Archives: games

Tests from a Hat

How does the order of tests affect the design of software?


  • Write a bunch of plausible unit test descriptions.
  • Slice them into strips and put them in a hat.
  • Repeat until the hat is empty:
    • Pull tests one at a time from a hat.
    • Write the indicated test
    • Write the code to make the last test pass, TDD style.
    • If you absolutely must create a prerequisite test, do so.
    • Refactor as you go.
  • Set aside your implementation, shuffle the tests back into the hat, and repeat once or twice.

Exercise ideas:

  • spreadsheet (domain objects, parsing, representation of storage),
  • auction sniper (from Freeman and Pryce’s Growing Object-Oriented Software),
  • video rental store (from Fowler et al’s Refactoring),
  • currency (from Beck’s Test-Driven Development),

Sample Tests for a Spreadsheet:

  1. New sheet is empty
  2. Inserting into a sheet stores a value
  3. Numeric cells are formatted as numbers
  4. Cells retain literal values (for editing) Ex: 007 is edited as 007 but displays as 7.
  5. Cells starting with = are formulas.
  6. Constant formula Ex. =7
  7. Parentheses in formulas
  8. Multiplication in formulas
  9. Addition in formulas
  10. Precedence in formulas

Reflection Points:

  • Did you encode your tests the same each time?
  • Did the solutions come out basically the same? Why or why not?
  • Did you see alternative solution paths when you went through again?

Bill Wake, 2010. Inspired by "Scenes From a Hat" in improv.

Movie Retrospective

When I'm teaching about retrospectives, there has always been a challenge: a simulated retrospective wants a shared experience. But what shared experience to use?

  • The one experience I know we share is the session we're in, but using a retrospective on the class sets up an awkward "meta" and recursive dynamic, as we try to do something and think about doing it at the same time.
  • A class often shares another experience (or set of experiences): the projects they're working on. Everybody may not be on the same project, but even if they are, real projects have real issues, and using real issues for an example almost instantly violates safety and takes away the magic circle aspect where it's safe to try new behaviors.


1. Identify a movie as the shared experience. I've been using Star Wars, Episode IV, with the part of the movie from the rescue of Leia until Obi-Wan dies and the protagonists escape. (Sorry if that's a spoiler:)

(I'm sure other well-known movies would work as well but I haven't tried any; perhaps The Wizard of Oz or The Godfather or something more modern?)

It's possible a person or two hasn't seen the movie; I'm willing to take that chance. If I thought the background of the group was so diverse that a substantial part of the group would not have a shared movie, I'd try a different approach.

2. Ask people to imagine they were the protagonists, to recollect for a moment what happened in the relevant part of the movie.
[A couple times I tried to show the movie clip in fast-forward. From a technology standpoint, it was painful. But from the perspective of the simulation, it's a better simulation NOT to show anything. As in real life, people will have different memories of what happened and different perceptions of what's important.]

3. Use the recalled scenes as the basis for a retrospective.
I like Esther Derby and Diana Larsen's approach in Agile Retrospectives, and I use an abbreviated sample exercise addressing each of their sections. For example:

A. Set the stage: Check-In – "In a word or two, what's on your mind?"

B. Gather data: Timeline – "Recall the memorable, meaningful, and/or significant events; write one per sticky note, then put it on the timeline."

C. Generate Insights – Patterns and Shifts – "Look for patterns. What links? What shifts? Which are most important?". Or perhaps do a "Worked Well / Do Differently" analysis.

D. Decide What to Do – Dot Voting – Give everybody 3 dots to vote for what to focus on as a group over the near term. (They can put their dots on 3 different things, or all on the same one if they feel strongly.) Agree on the immediate (concrete) next steps, who will lead them, and how and when progress will be reported.

E. Close the Retrospective – Appreciations – Identify how others have contributed. "Bob, I appreciate you for ___." ("Thank you.")

Even doing this in an abbreviated manner (a few minutes for each) lets you run through a complete retrospective in miniature.

You can then follow it up with some debriefing to bring out any points you need to make.

Bill Wake, 2010. [8/15/10 – Thanks to Diana Larsen for helping me ensure "Decide What to Do" results in action.]

Programming Language Puzzle

This puzzle contains the names of different programming languages. You solve it by writing in the missing letters.

Puzzle: (PDF)

Solution: (PDF)



If you don't want to see the whole solution, page down for a series of clues.





























IAL ("International Algorithmic Language") was an early name for Algol.




























SIMPL-T was developed by a group led by Vic Basili.




























COBOL is in the puzzle, but none of its letters are showing.

















MLISP has none of its letters showing either. It's the name of a couple different Lisp variants.

NASAGA ’06 Trip Report

Part 1

NASAGA – the North American Simulation and Games Association – is a group consisting mostly of trainers and facilitators who use games and simulations in their training. They're having their conference in Vancouver BC this week – and it's lovely here. (The only problem is – the conference has been so busy I've only been outside 2 hours.)

A lot of the fun at a conference is reviving old friendships and making new ones, but it's hard to capture all that. Instead, I'll focus on the sessions I attended.

Pre-conference workshop: Dramaturgy of Games, by Bernie DeKoven.

Childrens' games can contain deeper messages, when looked at through the lens of "theater."

For example, in DUCK DUCK GOOSE, you have to act certain ways if you want to be picked or don't want to be picked. You can use status clues to say "don't pick me." There's a drama in who you pick – the slowest kid? the fastest kid? your best friend? the kid you wish were your best friend?

Another game is HOT BREAD AND BUTTER. The kids all stand together at "Home". One child hides a belt. (And it must be a belt – Bernie described trying unsuccessfully to get the kids to use a rolled up newspaper.) He calls out, "Hot bread and butter, come and get your supper." Everybody runs away from home base, trying to find the belt. When someone finds the belt, he hits the other kids with it until they get home. (It was described as tapping a "coup" hit, not a beating.)

Bernie interpreted this as a play about the need to grow up. The kids who played were about 11 years old, and they were realizing there is such a thing as adulthood. You aren't granted adult-ness, you seize it. Now, if you stay home (as the home base was literally called), you won't have to deal with the consequences of adulthood (here, getting hit). But if you stay home, you can never become an adult.

We spent a fair bit of time playing, WHO STOLE THE COOKIE FROM THE COOKIE JAR? ("Who stole the cookie from the cookie jar? Number 7 stole the cookie from the cookie jar. Who me? Yes you! Couldn't be! Then who? Number 5 stole the cookie from the cookie jar.")

We talked about fun. "Having fun in public is almost a political statement." "We package fun [movies, sports, etc.] but it doesn't touch our core. And we've lost our ability to create our own fun."

Bernie described Csikszentmihalyi's flow model; with challenge and ability on two axes – too challenging, we're anxious; too simple, it's boring; right on the edge – we may get flow. Flow is characterized by a sense of timelessness, focus, stillness, vividness, oneness.

Bernie has another model to go with it: "we" is on one axis, "me" on another. With way too much "we" or too much "me", we have alienation. More "we" than "me" leads to problems like co-dependence and mob rule. More "me" than "we" leads to self-absorption. In the middle channel, we have "co-liberation". When both are together at high levels, this co-liberation is confluence.

We played a few more games, PRUI, I DOUBT IT, BATTLESHIP(tm), and we tried an exercise from Agusto Boal's "Theatre of the Oppressed." We discussed a high-jump bar like this: |\| that lets everybody choose their own level (rather than a constantly raising high bar that makes everybody a loser).

Although we talked some about application, I really liked the general enthusiasm of just enjoying play as fun. And the theater notion yields some insights.

Part 2

Keynote: From Flint to Fireworks, by Dave Chalk

Dave Chalk described his own learning disabilities, and yet he became Air Canada's youngest pilot.

"Passion comes from pain." "Adults today believe they can't learn." "Today, apprenticeship is far too costly" but simulation is a cost-effective substitute. People complain about rote learning, but we're willing to do it in games.

He spent a lot of time talking about mirror neurons, a recently detected type. These neurons imitate, learn, and predict. We have the saying, "Monkey see, monkey do." And in fact, monkeys are the only other species known to have these neurons. They fire when we have empathy.

The key thing is: these neurons don't differentiate between looking at something and doing something! "These neurons are almost as important as the discovery of DNA." Training can be done using them if it corresponds to what people want to learn.

"Consciousness may be as simple as a yes/no switch telling you whether to actually do something." Autistic children appear to have mirror neurons that don't fire properly. Mirror neurons explain contagious laughter and contagious yawns, and why TV and multimedia are so compelling. "Ten years of watching can make you an expert."

"Control the mirror neurons' input, and you absolutely control the learning." Sony just got a patent on the ability to beam images and sounds into the neurons, to avoid the need for "learning".

Keynote: Theater of Games, by Bernie DeKoven.

(Some of this overlapped the workshop discussion, but I'll pull out a few other points.)

  • Games are theater – e.g., sports, childrens' games.
  • We have deeply played games – ones we've played many times. For example, in HIDE AND SEEK we learn what it means to hide too well, and we carry that into adulthood.

Games, especially national games, correspond to the national character. Compare FOOTBALL (confrontation) vs. SOCCER (dance and avoidance), much like CHESS (armies clashing) vs. GO (guerilla warfare).

"THe only difference between a kids' game and a simulation game is how much you have to debrief. We deny the power of the game when we focus on what was in the debriefing."

Session: Extinguish Boring Presentations, by Ken Bellemare.

We did the straw through potato trick, to talk about what you assume you can and can't do. Ken described Thiagi's 6-step debriefing model, mentioned the "What / So What? / Now What?" debriefing model, and pointed us to Roger Greenaway's site for more.

The Attention Time Cycle:

  • 3-10 seconds – fight or flight response
  • 6-8 minutes – attention span level
  • 20 minutes – focus time (if it's interesting)
  • 90 minutes – as long as you can tolerate sitting at one stretch

The natural cycle is for attention to start high, dip in the middle, and come back high at the close. By using "hot spice" every 6-8 minutes, you can help keep attention focused the whole time.

Hot spice can be done through space (movement, voice control, …), props, unusual things (such as flash paper), audience involvement. Ken likes a question Thiagi uses, "What's a question a confused person might ask at this point?"

We discussed stages: unconscious incompetence, conscious incompetence, conscious competence, and unconscious competence, using the approach of trying to sign our name identically, twice with our strong hand and twice with our weak hand.

Ken warned us of an easy habit – "autobiographical listening," where we try to take over somebody else's narrative as a story about ourselves.

At the end, we got to try a piece of flash paper for ourselves, which was very neat.

Session: Interactive Experiential Games to Teach Systems Thinking, by Ron Roberts

The linear/sequential approach has A->B->C, inputs/throughput/output. If there's a problem, the cost rises exponentially.

A feedback approach has Input->Throughput->Output->Compare to Future Desired State -> Feedback -> Input.

To demonstrate systems thinking, we played a peg-based game that had us try to create patterns according to numbers and colors. As you might expect, there was a bit of "kicker" in scoring and in thinking about it. (I won't give any spoilers.)

Session: Edutainment Strategies for Blended Learning, by Curt LaLonde.

There are three elements –

  • Entertainment – motivation strategies
  • Instructional strategies
  • Blended solutions (mix live and electronic)

For entertainment, we can consider the difference between intrinsic and extrinsic motivation. Production values and consequences address the latter; relevance etc. affect the former.

He described Bloom's model of the levels of learning:

  • Evaluation – appraise, evaluate
  • Synthesis – arrange, collect
  • Analysis – categorize, compare
  • Application – demonstrate, dramatize
  • Understaning – classify, explain
  • Knowledge – list, memorize

In one approach ("sequential"), it's easier to address the lower levels with self-paced instruction; live teaching may better address the upper levels.

The "Host/Container" model looks at the host (class, live, online) and the elements (video, quiz, chat). The host may be synchronous or asynchronous; the elements may be synchronous, asynchronous, or both. (For example, you might have asynchronous elements inside a synchronous session: "please try this on your own for 5 minutes.")

As an exercise, we picked a system to discuss in small groups. The discussion was very helpful, and left me with some ideas for things I could do in my own teaching.

Part 3

I know I said "day 3 of 4", but I actually need to add a couple more things about day 2.

In addition to his keynote speech, Bernie DeKoven was recognized for his contributions with the Ifill-Reynolds Award, which NASAGA bestows on someone each year.

In the evening activity of day 2, I joined the group playing STARPOWER, a simulation by Garry Shirts. This game has you split into three groups and engage in a trading game. The rules are designed so that the system makes it hard to change groups (though we in the lower group did manage to get one person into the top group by pooling everything we had).

There's a rule-making round, where the top group gets to create rules. Our top group said, "You can talk before trading," "Players in the top group start with an extra chip," and "You must trade with a top if they ask you to," but also "Someone in the top group will try to accommodate any trade request made by the lower groups."

A couple things struck me: one is that the bottom group had the easiest time making decisions, the middle had the middle, and the top had the toughest. This was true for every decision and discussion. During the debrief, someone said that the lower two groups were discussing trade strategies, but the top group was about power.

We discussed how much the system enforced the lack of mobility. Someone in the top group said they did add a rule that would help the lower groups. That was true, but I think the rule came across as "charity" or a "tip of the hat" toward equality, without the real thing. (Note that two of the new rules further reinforced the position of the tops, even disregarding their other current and past advantages.)

It was an interesting simulation. The game's structure certainly enforced the system it wanted to. It effectively points out how a society, consciously or not, creates rules that reinforce the powerful.

Keynote: SAGE – Simulation And Gaming Environment for Learning, by David Kauffman.

SAGE is an academic initiative, supported by the Canadian government. It focuses on, "How do people learn through SAGEs?" They're using a multi-phase approach, to first review and translate existing literature, to do development research, and to do evaluative research in live settings.

They've focused on healthcare as their initial domain. One of their ideas is to use a patient-focused rather than a biomedical-focused approach. By generating emotion, they hope to generate memorability.

The group uses a couple other distinctions. One is the "foundation" – conceptual foundations, methods and tools, and technology. Another distinction is games vs. simulations vs. simulation games.

Some things they've developed: a repository of articles, prototypes, a generic game shell and a supporting site where people can share content, some multimediat simulations, and a Contagion simulation. They're also exploring ways to wrap a virtual usability lab around the games, to help with evaluation.

David pointed out that there's often a debate about games – are they something kids need to be weaned off of, or do they promote concentration and skills we can use? Their group believes games both have motivational power and the ability to be a powerful learning tool.

They've been using a framegame approach, where there's a structure with rules and challenges ready to go, and content (information and objectives) that you "pour in."

A simulation game is a simulation that has game-like elements such as goals and scoring. They introduced this distinction because they were seeing mixed results when people considered, "Do games work in education?" Their hypothesis is that simulation games are generally effective.

In the future, David sees them going forward with completing prototypes, doing controlled studies, and continuing knowledge dissemination. He invited others (large or small) to partner with them.

Two related web sites: http://www.sageforlearning.ca and http://egc.savie.ca. For further reading, he recommended Simulations and the Future of Learning by Clark Aldritch, and Digital Game-Based Learning by Marc Prensky.

Session: Implementing Games and Simlations in the Virtual Classroom, by Joey Monaco.

Joey demonstrated several games that she uses in virtual classrooms. One was a hidden word match, where you connect matching answers and find a secret word. (In their environment, people can used shared drawing tools to create the connecting lines.)

Another game was "Who wants to be a virtual contestant?" Someone is a contestant, and the audience helps. We did a "fill in the blanks".

To help get people to read material in advance, Joey uses pre-session brainteasers. People get to show off their knowledge a little.

Joey had developed a couple branching-based tools, similar to "Choose your own adventure." This seemed to require a lot of work (both in terms of working out the whole branch structure and applying it). A related technique was the use of multimedia simulations.

An issue in virtual classrooms is how people pay attention. Her group's goal is to make the content so compelling people won't multi-task around it. They use a variety of interactions and techniques to make that happen. For example, they shift modes at least a little every 7-8 minutes, they poll people several times per hour, and they limit sessions to 120 minutes (though they believe 90 minutes might be better).

In the future, Joey sees more sophistication (e.g., 3D), multi-player online capabilities, and the use of simulation for assessment.

For further research, Joey recommends Games magazine, The Imagineering Way, and http://sesameworkshop.org.

Activity: Treasure Hunt, by David Blum.

David Blum has one of the coolest jobs I know: he travels all over and creates team-building treasure hunts. He gave us a taste of his skill. He found 6 interesting landmarks within a several-block radius of the hotel. He gave us 6 clues (e.g., realizing something was morse code and translating it). The clues led us to the landmark, where we had to note a name or word. Our group was the only one to solve the bonus clue, so that made up for me messing up Friday's sudoku:) Vancouver has had such great weather this week; it was nice to get outside even just for a little bit.

Banquet, Talent Show, and Auction

After dinner, we had a brief talent show. It included an improv scene, a story, and a poem. But the highlight was hilarious: a cow in a dress, singing a sort of torch song and playing a musical saw. I'm done crying now. The auction was fun, and raised more than $3500 for scholarships.

Part 4

Keynote: Spontaneous Brilliance, by Kat Koppett

Kat described aspects of improv, and how it can be used to create an environment where brilliance emerges.

The first rule – celebrating failure. "Exercise the courage muscle – our willingness to be creative and take risks. We don't do it by creating a safe environment, we do it by creating an incredibly risky environment." "Celebrate failure and realize it's ok. Think of mistakes as gifts." "Creativity is by definition an act of courage." That allows us to tap into our spontaneity.

We did a rapid word association exercise. "This activity outs the judge in our head. We may need to judge sometimes, but that censor already gets a lot of practice and support." People described a variety of rules they made up for themselves, and that got in the way. "We evaluate things that don't need to be evaluated."

A second rule – "Trust your impulses." One activity is "brain fries," that overload the system so hard you can't judge. Spontaneity is a muscle too. Give offers – make stuff up. "Most of creativity is not making up things inside ourselves – it's responding to input". "Yes, And is the fundamental improviser's mantra." "All we have is the offers our partners make."

In brainstorming, you accept and build, saying "yes, and" as well. But improvisers mean something more profound. "There are offers out in the world – anything that's present." Some offers are more open to interpretation. "How can I use these offers?" vs. brainstorming. For the improv offer, you don't have to like it, the offer just is. Ignore offers at your own peril.

"Yes, And" doesn't imply agreement with a situation. Sometimes you can just name a situation – "I see you're rolling your eyes." "It's harder than you think – and it's easier than you think."

It can be rough to create in a team – we have shared responsibility and shared control. "The clearer I am on my idea, the harder it is to collaborate."

Another secret of improv is "Be obvious – dare to be boring." Kat worked with Performance of a Lifetime, which isn't afraid to back up and untangle blocking or poor listening.

What happens when we're under stress? Some people become drivers, trying to take charge; others are wimps, giving up and failing to continue making offers.

Summary: Be aware of the rules you make in your head. Use offers to engage. Note that there are many ways to say "no" without using the word "no". The "and" is as important as the "yes."

Look at our lives as improv scenes. We can see and accept more offers. We can get better at recognizing the huge range of choices we have. "We can create wonderful plays with each other."

(I loved this talk – and I'd love to hear Kat at the Agile software conference.)

Session: Unleashing Your Brilliance, by Brian Walsh.

This session used a number of physical "tricks" applied in the hope of improving the functioning of your brain. (Do they work? I don't have enough experience to say.)

Example: keep moving your foot clockwise, then write a 6 in the air with your hand.

The pain/pleasure principle – we move away from pain, and toward pleasure. "A decision to move toward something is more powerful than a decision to move away from something."

Enriched learning has multiple related topics: water, multiple intelligences, music, NLP, kinesiology, memory, the brain, total physical response, accelerated learning. (He made a concept map to show this.) Claim: "pictures are three times as good as repetition."

We have control of 70% of the effects of age on the brain – through physical exercise, learning, water, food, sleep, etc. we can help that part.

Brain Gym ™ – kinesiology and whole-brain together. Example: Cross crawl – touch left knee with right hand, then right knee with left hand, repeat a few minutes. This is designed to help integrate the left and right parts of the brain. Example: "Brain buttons", "K27" in acupuncture – two spots located 1" below and to the right of the collarbone: rub these spots to get more oxygen.

The reward center lights up stronger for unexpected rewards.

Neuro-linguistic programming talks about the three modalities: visual, auditory, and kinesthetic.

Exercise – eye dominance. Hold hands at arm's length with a small triangle gap, then close each eye separately. The image will jump for the non-dominant eye. We have dominant ears and dominant feet too. When do these factors count? When we're under stress, and when we're learning new material.

Exercise – earlobe roll. Exercise – jaw massage.

Exercise – hold hands at arm's length with thumb up. Move thumb in an "infinity" (sideways 8) pattern. Make the eyes follow the thumb, but don't move your head. This is to activate different parts of the brain. Ex: NLP believes we habitually access imagination when we look at one quadrant, and memory in another.

Presenter's trick – move to the opposite side of the room from the questioner during question time. This helps that person project their voice further, and helps keep the rest of the room engaged.

Presenter's trick: wear at least a little red.

Multiple intelligences – Howard Gardner. Gardner thinks of schools as traditionally focusing on math/logic and linguistic intelligence. But there are others: interpersonal, intrapersonal, naturalistic, music, spatial, kinesthetic, etc.

Memories are fragmented and stored in multiple places. Memory can't be trusted. Involving lots of senses gives us a better chance of recall.

Basic Rest Activity Cycle – every 90 to 120 minutes, the dominance of left and right brains moves back and forth. The left brain corresponds to activity, the right to rest. During sleep, we get a sine wave at a deeper level. Take advantage of the troughs; try to go to bed and wake up at the same time each day, try to come out of sleep when you're nearer the "top" anyway.

Application: proofread an important email ~40 minutes after writing it, in case it was written while the left brain was inactive.

Key points: Water, breathing, and the comfort zone. Physical activities. Moving away, moving towards. Seeing the big picture creates file folders in your brain. The Basic Rest Activity Cycle.

Session: Captivating Your Audiences through Storytelling, by Carla Rieger.

We worked through an exercise exploring what makes stories work or not work, and our strengths and weaknesses as storytellers.

In using stories, there are several challenges. Keep the story short (possibly 5 minutes, not longer than 10 normally). Make it personal, not the "starfish story." Choose a topic demonstrating challenges, discoveries, or decisions.

Carla adapted the Satir change model as the model of the story: old status quo (setting the old platform), tilting the platform, consequences, transforming idea, getting back to stability, new platform.

As an exercise, we identified a number of possible stories, then told one to each other and identified the various parts according to the model. (It's a lot easier for someone else to identify parts in your story than to do it yourself.) We turned it into 5 sentences, and then made tableaus demonstrating the sentences.

I talked to the instructor at break, as I felt like a lot of my story ideas just reflected a situation that "corrected itself" and to some extent I was floating along in that situation. It seemed like a story with no real point.

For my story in the exercise, I used a personal situation that felt like it resolved itself with a boring non-event. My revelation in this was that what I thought was the transforming event ("the problem went away on its own") was not – what counted was my reaction to a troublesome situation where I decided to let it work itself out as much as possible. Understanding this left me with unexpected tears.

In the followup discussion, several things came out. A key one is that many times, you need to figure out the point of the story to know how to structure it. Having someone reflect the story back can help with this. Another easy-to-fix problem is the tendency to jump into the story and ignore the context. Carla called her story model "story paint by numbers", but pointed out that many movies and stories fit the pattern, and that you can play with the pattern once you understand it.

Finally, Carla suggested some next steps to really make story skill-building happen:

  • Put each sentence (of the 5 keys points) at the top of a page, and flesh it out (written or oral).
  • Practice saying the story aloud, and rewrite it as you go.
  • Try it with colleagues/video/audio. Fix what's missing, and what needs to be cut. Figure out what the story is really about. Do "act outs".
  • Rehearse 20 times.
  • Send Carla the result by next Friday.

I really appreciated this session. Stories are important, and I'm working on being better at telling them. This session will definitely help.

Good-bye 2006, Hello 2007

The next conference is October 10-13, 2007, in Atlanta, Georgia, USA. I'll definitely be there.


[October 13-14, 2006.]




Agile '06 Workshop: Example-Based Specifications

This workshop was designed to explore Example-Based Specifications. Hosted by Brian Marick and Bill Wake.


  • 1 hour – One person plays customer, the rest of the team writes tests
  • 30 minute debrief
  • 1 hour – Small group discussions
  • 30 minutes – sharing and conclusions

Test Writing

Group 1: Domain – a statistical tool that evaluates inputs according to a formula, and plots the results.

Their test:

(A, B, and Y are inputs; b0, b1, b2, and b12 are outputs, produced by a process of matrix algebra.)

A B Y b0 b1 b2 b12
10 75 8 11.0 5.0 8.0 12.0
20 75 12
10 100 10
20 100 15

This is a textual representation of the graph

b0 b1 b2 b12 B-1 B-2 B+1 B+2
0 5 8 12 (1,1,RGB) (10,10,RGB) (10,1,RGB) (1,10,RGB)

Their expected graph (described here, though the team drew a picture):

  • a large X with each line in a different colors
  • labels +1 and -1 in the graph
  • a horizontal axis labeled "A" (also having labels -1 to +1)
  • a vertical axis ("Y")
  • a graph name ("B").

Group 2: Domain – a session scheduler, matching audiences to rooms

Test: Schedule a session –

Preconditions: user has logged in, room size < audience size

  • TU35 has iaudience 100
  • Room NICA has capacity 25
  • TU35 is not scheduled
  • NICA is available Monday 11-12:30


  • User assigns TU35 to NICA at Monday 11-12:30
  • System displays a warning, "Room size mismatch… Continue or cancel?"
  • User selects "Continue"

Expected Results:

  • TU35 shows up scheduled in NICA, Monday 11-12:30

Group 3: Domain – a graphical tool for tracking and identifying criminal conspiracies. (Tool helps build a network of connections between people).

Their test:

Select template criminal
Create node
Create node
Select link template ?
Create link
Check count links 1
Delete node 1
Check count links 0
Create node policeman
Set first name Tom
Set last name Nassau
Create criminal
Set last name Soze
Select link template arrest
Create link Nassau to Soze
Check link exists
Select template policeman
Create node
Add role
Select node 1
Check has role policeman
Check has role drug dealer

Group 4: Domain – an expense approval manager

A GUI mockup:

    Manager approval:

Type Date Description Amount Needs Receipt
    American Airlines SEA to MSP $600.00  



Issues: editing, are you sure?, manager approval, expense group


Type Date Vendor v Description Amount
Air tix 7/16/06 AA ORD to MSP 763.42

    Purpose: Trip to agile conference
    Manager approval:    Pointy-haired boss

An analysis of states:

New – Open, can’t pay, can’t approve, can’t close
Submitted – Open, can’t pay, can approve, can’t close

  Is Open Can Pay Can Approve Can Close


Group 5: A stock trading program

A screen mockup with annotations:

Start Time [   ] v : [   ] v 9:30-16:00 ET (market start to market end)
End time [   ] v : [   ] v
Stock Symbol [    ] 1-4 alpha
# Shares [    ] 1
Order Size [    ] 100->1 million (int) (+- 100)
Price $ [    ] (optional) numeric + 2 decimal optional
  [OK]    [Cancel]  

Test of algorithm:

  • Start time >= now >= 9:30 EST
  • End time > start time <= 16:00 EST
  • Distribution list (file) exists
  • Test invalid symbol entry
  • Test for valid symbol entry
  • Test all shares are traded if no limit price
  • Test trades don’t violate limit price
  • Buys or sells based on selection

Group 6: Insurance tracking program

Test for story "Insurer adds provider":

Test 1 – Sunny day

Add table:

Johnson, David name 15ch, 15ch
1200 Nicolette Dr addr1 40ch
12345 addr2 5d or 5d-4d
123456789 taxid 9 ch num
ALLINA network id must exist in db

Read: (same)

Test 2- Invalid zip code (and more like this…)

Johnson, David name 15ch, 15ch
1200 Nicolette Dr addr1 40ch
1234 addr2 5d or 5d-4d
123456789 taxid 9 ch num
ALLINA network id must exist in db

Expected error: "Invalid zip could should be 5 digits"

Test for story "Analyst approves pending claims < 60 days since claim made"

Test 1 – Sunny day

Populate database – set up claim 1

Date of claim 30 days ago
Member name Doe, Jane
Provider name Johnson, David
Diagnosis 769
Charge $500.00
Network id ALLINA

Step 1. Analyst views pending claims < 60 days (display claim A => OK)

Step 2. Analyst approves pending…

    Signal "ok" = submit
    Claim disappears from list
    Message "approved"

Step 3. Read claim, status "approved"

Group 7: Domain: Shipping company.

Test: 1. Customer ABC call to know where shipment with order #33 is. The system should answer, "Last stop was Tampa, FL."


Note Order # from Customer Request Answer from System
Truck left origin #33 last stop? Tampa, FL
Not in truck #34 last stop? nothing
Truck at destination #35 last stop? Daytona, FL
Truck at destination #35 arrived? yes
Not in truck #34 arrived? no
Not arrived #34 expected date? 26/7
Arrived #35 expected date? 25/7
Truck underway #33 arrived? no

Example context:

# Pick up origin Final drop destination Expected Date
#33 Tampa, FL Toronto, ONT 27/7
time 24/7 8 AM  
#34 Vancouver, BC Toronto, ONT 26/7
#35 Toronto, ONT Daytona, FL 25/7
time 24/7 17:00 time 25/7 10:00

Test 2: I want the system to help me minimize empty truck displacement. For example, I want to be able to ask if there is an empty truck in Ontario on July 27. Arrival within 2 days.

Empty truck in? Shipment order  
Ontario/27/07 #33, #34 truck at city
Ontario/25/07   no truck because wrong date
Montreal/QC   no truck because wrong location


We noticed these things from the experience of writing tests:

  • What to do is vague.
  • Developers tend to embellish.
  • Tests teach developers, but it’s a challenge to pick the right level.
  • It’s hard to turn descriptions into tests.
  • Tests (and collaboration) can help you discover new things.
  • The idea of a GUI became actions on a model (for the test).
  • Customers should come in prepared.
  • We need many questioners per answerer.
  • Someone came in late, and found that the examples helped them understand.


In small groups, we explored these topics:

  • Sufficient coverage: How do you know you’re done – what’s sufficient coverage?
  • Test styles: What is the relationship between example-based specifications and other styles of tests?
  • Product Owner: Techniques for interviewing product owners

Sufficient Coverage

  • When adding tests to a legacy system, how much do you "backfill"?
  • Should we just use "change detector" tests (record what the system currently does, knowing that it may change later, and may not even be correct).
  • Do we need all combinations?
  • Where do we fit example-based tests?

Test Styles

We suspected these things about example-based tests:

  • They may bring about exploratory testing, regression tests, better unit tests, acceptance tests. Load tests?
  • They provide a concise account of an edge case.
  • They serve to train new developers in a domain.
  • They provoke a certain style of conversation.
  • They may overwhelm developers with distracting detail (no "metaphor").
  • Alternatively, developers may ignore examples! It happens…

Product Owner

  • Use Sophie’s Rule – keep asking "why?"
  • Ask the end goal, define the business problem, define acceptance criteria
  • Discuss requirements "as if you were blind" (without reference to UI)
  • Need a customer who is is readily accessible
  • Helps to talk to end users
  • Programmers need to understand the domain
  • Let product owners ramble

General Notes / What Next

  • Mind maps have utility in these conversations.
  • Examples are a style of conversation – the easiest kind to get.
  • "We’re going to practice" – "process miniature" exercises could help.
  • A whiteboard and pointing are powerful ways to focus attention.

Game Word Stack Puzzle

This is a puzzle, inspired by those in Games Magazine.

Puzzle: Puzzle (PDF)

Answers: Answer (PDF)

Hints: (Scroll down)  


[Released December, 2005.]

Review – Game Design

Game Design – Theory & Practice (2/e), Richard Rouse III. Wordware, 2005.
This book is a somewhat sprawling look at game design. Its focus is on electronic games. It covers “what players want,” gameplay, artificial intelligence, story-telling, and game documentation (with what I found surprisingly heavy emphasis on the latter). Rouse intermingles these chapters with analyses of significant games and interviews with established game designers.

The interviews were the most interesting part. The game theory chapters were OK, but Chris Crawford’s books covers the same ground more thoroughly. The material on design documents could have been greatly compressed – it takes about a third of the book, and I didn’t find it particularly revealing. (Reviewed Dec., ’05)

NASAGA '05 Trip Report

I was at the NASAGA conference, and posted this quick report (onto the NASAGA list).

It’s always nice to start by running into old friends & making some new ones. Then I get into my fundamental problem I – there’s so much going on, it’s hard to choose what to do.


Wednesday, Les Lauber and I hosted a workshop on "rapid game remodeling." We had a small group, but a good time. We started by playing a number of games, then deconstructing the elements at play. We followed with a blitz of quick demonstrations of a bunch of games, then some theory, and finished by exploring a design of a game to fit someone’s work needs.

The workshops were followed by a reception. Brian Remer (our host) had arranged for some wonderful musicians to help us learn contra dancing, which is sort of like square dancing. It was fun, but exhausting. I had thought I’d be playing games afterwards, turns out I was just going to go fall into bed.


The first keynote was from Ron Roberts, a game designer and professor. He spoke on "The Power of Games in Accelerated Learning." My takeaway from that was to focus more on the "context" of what I’m teaching as well as the "content." The talk got pretty frenetic near the end when we had to toss stuffed animals between tables.

I followed this with a much milder session, "Can P-conferences teach e-conferences?" Chris Saeger created a simulation of an online conference where we used sticky notes to communicate in simulated chat rooms and work areas.

Then Matthew Richter helped us explore "Incorporating Motivation Theory into Games". He uses a model from amotivation (apathy) through extrinisic motivation of various types (doing it because of outside incentives), to intrinsic motivation (doing it because you want to). We had good discussion around the demotivating aspects of extrinsic rewards.

Dr. Clue (David Blum) gave us a taste of using and building treasure hunts. We ended by designing our own clues, and having other teams try them out. They were pretty tough to solve, but very fun to create.

After dinner, Ron Roberts, Clark Quinn, and Charles Phillips had a panel discussion, hosted by Les Lauber, where they discussed game design and marketing.

The evening ended (late) with a group of us playing a number of games. Somehow they tended toward a grisly theme: Give me the Brain, Guillotine, and Middle Management. Guillotine in particular was very fun.



Friday was a bit more relaxed of a day.

We started Friday with a talk by Clark Quinn on "Designing E-Learning Games". He comes from a cognitive design background, and has the goal of "using technology to make people wise." His brief demo showed a couple games, one a simulation of a hospital, the other of project management. Both used a cartoon style; the interaction reminded me of "Monkey Island" (if you’re old enough to remember that), but it’s built around a particular model and rules engine.

He pointed out that, "Learning is difficult; engagement is difficult. Doing both together is doubly hard – but more than doubly valuable."

The programs rely on "one of the robust results of cognitive science": people don’t make mistakes randomly – there’s usually a logical, sensible reason that is both wrong and hard to extinguish. People tend to patch their model rather than adjust it substantially. By focusing on where decisions lead, we can get to the crux of them in the games.

Quinn has a number of tools to help in the design and development of his games (such as storyboards and concept documents), but points out that tuning can be a large and tricky part of the process. He also pointed out that we can build in metrics to assess how well usability, education, and engagement goals are being met.

To close out the morning, I went to Kat Koppet’s session on "Improv Designs for Inspired Teaching." We tried (and debriefed) several games. My favorite was a "word toss" where we tried to keep two sets of words passing around a circle. We also saw an example of "telephone" – where a story gets passed along by people who try to imitate the content, tone, and gestures. We ended by creating a few stories using a "story spine", by going around the table and having each person add a sentence.

The afternoon was "lazy" – a leisurely lunch followed by game time. (Some other folks decided to try the low ropes / high ropes course, which also sounded like fun.)

During the evening, there were some simulations being run, but Raja Thiagarajan and I used that time to do a little programming on a small game project.

We joined back in on the evening games. My two favorites were "Guillotine" and "Tutankhamen"; a couple people said they had enjoyed the "Bux" game even more (whose inventor was at the conference). Gaming wimps like me only made it a bit past midnight. The hard-core ones were at it till 2:30 AM:)


Unfortunately, at least from the perspective of enjoying the conference, I wasn’t able to stay for Saturday’s events.

Schwerpunkt = Focal Point

From Chris Crawford on Game Design:

"But there’s one word, a German word, that we haven’t yet stolen that should be high on our list of targets: schwerpunkt. It means ‘focal point’ or ‘concentration of effort point’ or ‘central point of attack.’ It’s a beautiful word because it expresses an idea that we just don’t have in English: the notion that, in any effort, you may have many necessary tasks, but there is one central task that must take first place in your considerations."

Crawford gives an example of the army: the cook is important, but the soldier (and fighting) is the shwerpunkt. In games, he says, interactivity is the schwerpunkt. It leads me to ask, what is the schwerpunkt for what I’m doing?

Review – The Man Who Changed How Boys and Toys Were Made

The Man Who Changed How Boys and Toys Were Made: The Life and Times of A.C. Gilbert, the Man Who Saved Christmas, Bruce Watson. Penguin, 2003.

A.C. Gilbert invented the Erector set, and made a big business out of “learning” toys. Gilbert was a track star and magician as well as a toy inventor. This biography takes you through his whole life. The end is a little sad, though: the world has moved on. (Reviewed June, ’05)

Origins '05 Coming Soon

The Origins ’05 "International Game Expo" is June 30-July 3, 2005. It’s described at www.originsgames.com.

I went last year [’04] and had a great time. (Not sure if I’ll make this year or not.) The place is huge (several large gaming rooms that seemed 100 yards long), with just about every type of game you can think of. (There’s not a whole lot of electronic stuff; more board/card games, wargames, role-playing, etc.)

If you’re used to software conferences, you’ll find it a bargain. I’ve never seen a conference with so many simultaneous sessions (>100 at some hours).

Highly recommended:)

Review – Fluxx

Fluxx, from Looney Labs.
You start with three cards, and the rule “Draw one, play one.” Your goal is to find a goal card that matches what you have, such as “Milk and Cookies” or “Appliances.” Along the way, you play cards that change the rules: “Draw two, play three”, “First play random,” and so on.

Some people find it all a little too random; others love it. I think it’s great fun. It’s easy to let someone join you in the middle of a game. It feels like a new game each time, and it’s interesting to ponder which rules bend and which do not. (Reviewed Dec., ’04)