Course Level
Other
Knowledge Unit
Development Methods
Collection Item Type
Other Material Type
Synopsis

This lab helps students gain experience and proficiency with the agile practice of Mob Programming using Test-Driven Development. Mob Programming involves having an entire team working together to solve one problem at a time. By working closely together, the team shares understanding and enforces quality standards. The Classroom Mob Programming Game involves students in all the formal practices of Mob Programming within a single class or lab session.

The game uses tabletop role-playing game design patterns to produce an authentic learning experience for students. Students earn experience points by practicing the different Mob Programming roles, and new abilities are gained as they level up. This provides scaffolding for their learning: students move from simple to more nuanced practices as they gain levels. These abilities represent legitimate Mob Programming techniques, and so the learning objectives and gameplay are intrinsically linked.

ACM Digital Library Entry

Recommendations

The Classroom Mob Programming Game is designed to be played in a single class session of 50-75-minutes, the latter being preferred. Completing more than one round of the game helps students see the value of the retrospectives.

Teams should be prohibited from searching the web or generating code, especially if using a classic problem like FizzBuzz. There are innumerable solutions to these problems available, but “solving the problem” is not as important a goal as practicing the process. This can be an important place to make the distinction between rigorous and ad hoc software development approaches.

The game assumes students already have some experience programming in a modern IDE using Test-Driven Development, and it has been used extensively in a required sophomore-level class on agile software development, using both Java and Dart. The game works best if a team of four or five students can share one display and easily pass a wireless keyboard and mouse among them, following industrial best practices for Mob Programming. If the environment requires using a single laptop instead, seek to arrange the room so that the people move, not the laptop: moving the computer has a higher chance of breaking the team members’ line of sight, inhibiting participation.

Engagement Highlights

The Classroom Mob Programming Game gets students working together in small teams, learning Mob Programming and practicing Test-Driven Development by authentically engaging in both. The game’s short rounds are punctuated by retrospective meetings, and so students get to experience the rhythm of incremental and iterative development in a small scale. That is, students are not just emulating an agile practice but are authentically engaged in one.

A moderator can choose any programming challenge for the game, and it is recommended to choose a simple kata such as FizzBuzz. Likewise, the moderator can choose any programming language and development environment that supports Test-Driven Development. The game involves no submissions nor graded elements: playing the game well is its own motivation and reward.

Computer Science Details

Programming Language
Other Programming Language

Material Format and Licensing Information

Creative Commons License
CC BY