This exercise demonstrates the value of keeping the design simple and the code small. We’ll generally do this exercise before starting into any of the others as it’s really foundational for all Agile technical practices.

Note that in the interests of time, we often combine rounds 2 and 3.

Round 1: Understand simplicity

Instructions

Each person should clear a space in front of them. Push all the LEGO® to the side.

Discussion

We are going to build something new. Declare that this empty space in front of them is the “perfect program” and ask the participants why that is. Valid answers could be:

  • It has no bugs
  • It satisfies all the requirements. Hint: there are no requirements at this point
  • It runs infinitely fast
  • It costs nothing
  • It was implemented in zero time
  • It’s really easy to build on top of
  • It’s really easy to understand and maintain

When we create a new project, we start with the perfect program and every time we add something to it, we take it away from that ideal. We want to keep the software as simple and small as we possibly can to keep it closer to the ideal.

Round 2: Free form build

Each participant is given a pile of LEGO® bricks. Do not include mini-figures or anything that would dictate scale such as windows or doors. We don’t want to bias the participants into creating anything in particular.

Instructions

Participants are asked to build a person and a house and are given three minutes. There are explicitly no other requirements at this stage and if anyone asks, it’s just a person and a house.

Debrief

  • “Did anyone build just the house or just the person?”
    The requirement was for both therefore, there is no value delivered for only one. Despite that, it’s very common for people to be having so much fun building one that they don’t complete both. Discuss that.
  • “Did anyone use all the bricks that were provided? Would you have done that if we’d given you more time?”
    It’s very common for people to keep building even once they’ve completed all the requirements. Discuss how that is the same as real code; we often keep working on the cool things even once we’ve finished what the customer actually wanted.
  • “If we had told you that every dot you used in a brick cost $1000, would that have changed your design?”
    Almost everyone will say it would have been smaller. So why didn’t they build it smaller before we put a cost on it? All development has a real cost associated with it but we rarely talk about that.

Round 3: Free form build round two

Start from the same set of LEGO® bricks that they had in the first round.

Instructions

Once again participants are asked to build a person and a house although this time they’re only given one minute. Remind them to keep the design simple and that all requirements must be satisfied but don’t offer other clues.

Debrief

  • “Did anyone build just the house or just the person?”
    This still happens after the first debrief
  • “Did anyone build something bigger or more complicated than what they did on the first round?”
    Yes, this really happens even after the talk about simplicity
  • “Who built something simpler than their first attempt?”
  • “Could the design be even simpler than what you have now?”
    Almost always, the answer is yes. Ask what it could have been?
  • “Could the person have been a 1x1 brick?”
    Sometimes people will argue that no, it can’t be because there are no arms or some other criteria. Remind them that there was no requirement for arms.
  • “Could the house also have been a 1x1 brick?”
    For those who argue, remind them again that while they might have thought it was important, it wasn’t important for the business. We didn’t say it was a house for a human - maybe it was a doll house.

At this point, we usually move on to one of the other exercises. It’s rare that we’d do simplicity all by itself.