Using Experiential Activities to Teach Software Development Concepts
Experiential learning, or using activities such as simulations, helps people glean important lessons on their own rather than having these tips, techniques, and knowledge presented to them by others. Simulations mimic the operation of a real-world process or system over time and can help people comprehend what verbal explanations can’t adequately convey.
For example, here’s a simulation I once used when a customer team asked me to help them understand what computer programming is all about. I described a robot that would be traveling from a major intersection a block away to their fifth-floor office in a building with three entrances. I asked each team member to write out a set of instructions that the robot could follow to reach their office. I explained that robots had no capacity to think (something that, for better or worse, is no longer true!) and would follow the instructions exactly as stated.
Team members quickly realized that this seemingly simple task required careful thinking and attention to detail. When they finished, I invited each of them to read their instructions out loud. As each one did so, I asked the others to imagine themselves as the robot and to see if they’d reach the office.
The instructions these fledgling programmers came up with were, not surprisingly, delightfully off base. One person’s instructions had the robot successfully arrive at the building, where it came to a standstill by the elevator. Another team member had the robot look for a street sign that was no longer there. (This robot, like some people, didn’t know about asking for directions!) As team members detected the flaws in each other’s instructions, they realized that crafting accurate specifications isn’t the simplistic activity they had initially envisioned.
If people are to learn from a simulation—and appreciate what they’ve learned—debriefing via discussion, review, and reflection is essential. In debriefing this simulation, I asked the team members to reflect on and then discuss what they’d learned from their programming and debugging experience. They agreed that there’s more to programming than they’d thought, that it can take a lot of instructions to solve a simple problem, and that things that sound straightforward can be anything but. They also observed how easy it is to make a mistake and not realize it—and how risky it can be to write a program without having someone else review it for errors.
Clearly, experiential activities need not be lengthy to be effective. In less than an hour, this team got an inkling of the challenge of developing software that works. Experiential exercises can be used to guide all sorts of learning. They’re a powerful way to help people gain insights that they’ll believe more fully, retain longer, and understand at a deeper level than when information is foisted on them by others.