Since getting into Dungeons & Dragons tabletop gaming this year, a few people in the software development and testing community have chatted to me about parallels between D&D and software development. In particular, there has been some interest around the way players are assigned roles, skill levels and abilities – does this sound like your last performance review? It’s an interesting parallel to explore, particularly with regards to training. For those who have never played D&D before, allow me to take you on a whirlwind tour.
“I would like to make a privilege check.”
“What do you mean?”
“I have a scroll of pedigree showing my noble lineage and I’d like to check it.”
“…I’ll allow it.”
I play the 5th edition of D&D, which just means I follow the latest ruleset that some of you may not recognise if the last time you played was back in the 80’s. This is an example of a 5th edition character sheet. You can see it has a lot of numbers on it that show different skills. It also dedicates a lot of space to personality traits and background. The numbers are useful, but D&D is ultimately a roleplaying game – a game where you pretend to be somebody else.
Click the image for a larger view
I like to play as the Dungeon Master, which means I’m essentially the user interface for the game – I narrate the story and tell players the consequences of their attempted actions. I am, in effect, a human version of a playable computer game, where the visuals are rendered entirely in the players’ imaginations.
However, the difference between tabletop gaming and a computer game is that a human interface provides boundless possibilities for players. Like a computer game, I am bound by rules, but they are not a STRICT set of rules. For example, if a player wishes to attack the dragon with her sword, I can use the rules in the Player’s Handbook to determine if the action is successful. Or, I can decide that there is a sudden earthquake that causes the player to trip and fall. Or, if the player says “I would like to make peace with the dragon and invite it out on a date”, I can choose to allow this and the next thing you know there’s a war-grizzled dwarf clinking glasses over a candlelit dinner with a 20ft tall dragon. The point is, anything goes because as a human being I’m not restricted by a strict set of logic paths and graphics limitations.
“I attack the three-headed chicken with my spiritual cow!”
Given that a human interface is extremely different to a computer interface, I don’t see D&D providing a useful exercise for training exploratory testing. Actual computer systems are much more educational for that purpose. However, I do see it as useful for training for interaction with other human beings – specifically software development organisations. As a consultant, most of my job is about interacting with other people in order to teach skills and influence change. Creating organisational change is difficult, and it’s something that often falls to testers to do – whether it be convincing one team to introduce better testing practices, or convincing management that testing is worth caring about at all.
Creating a fictional organisation with many interesting NPCs (Non-Player Characters) could be a useful exercise to think about ways to use different communication skills and abilities to achieve certain goals. I can think of a few great NPCs already:
- The developer who thinks testing is somebody else’s job
- The manager who really wants the team to care about quality but just never seems to have enough time in the project to make it happen
- The product manager who demands a full manual end-to-end regression test regardless of any automated testing efforts each release
I’m sure everyone has encountered a few interesting real-life characters that they could adapt to create educational scenarios. I attended one course that had a similar roleplaying element, but I felt it was designed more to teach the class about how much of a jerk everyone was rather than teach actual skills. I think a core element to this is to teach a skill, then let the exercise show the benefits of using the skill in a realistic context.
I am working on creating a course like this myself, but I’m curious to hear if anybody else tries this approach.