This post originated from an RSS feed registered with Agile Buzz
by Keith Ray.
Original Post: Jigsaw Puzzle Exercise
Feed Title: MemoRanda
Feed URL: http://homepage.mac.com/1/homepage404ErrorPage.html
Feed Description: Keith Ray's notes to be remembered on agile software development, project management, oo programming, and other topics.
To illustrate to managers/executives the differences between waterfall, code-n-fix, and iterative/incremental development...
Prepare for the demonstration by buying three small jigsaw puzzles. Assemble two of them, and turn them over (while still assembled.) For the puzzles that represent waterfall and iterative/incremental development, find groups of three connected puzzle pieces and label them as follows: "requirements 1", "code 1", and "tests 1" for the first set of three. "Requirements 2", "code 2", and "tests 2", and so on for an adjacent set of three pieces, and so on. Make sure that not all of "requirements" pieces are directly connected to other "requirements" pieces, etc. Now it should be easier to put together these puzzle again... but that's not all.
To dissemble the puzzles... For the "waterfall" puzzle: put all of the "requirements" pieces in one bag, all of the "code" pieces in a second bag, and all of the "test" pieces in the the third bag. For the "iterative/incremental development puzzle" you'll need lots of little bags, one for the "1" pieces, one for the "2" pieces, and so on. Label each of the bags (or use little little tiny ziplock bags that you can see through).
Now for the exercise with the managers/executives. Divide them into three groups. Their assignments are to put together a puzzle within a time limit (say 20 minutes). The group that gets done first is the winner, or the group that has the most contiguous pieces assembled.
For the "waterfall group", give them all of the "requirements pieces" immediately, wait 5 minutes, and then give them the "code" pieces, wait another 5 minutes, and then give them all the "test" pieces.
For the "iterative/incremental development group," give them the first bag immediately, give them the second bag as soon as they've assembled the pieces from the first bag, and so on.
For the "code-n-fix" group, give them the puzzle that you haven't marked up... maybe withholding a few random pieces to make it a little more challenging. ;-)
If you need strict scoring conditions, each connected piece counts as 1 point. Each missing piece from within a group of connected pieces subtracts 1 point. If there are more than one group of connected pieces, subtract 1 for each group besides the first.
Being JustaProgrammer, (and being poor at jigsaw puzzles) I haven't (yet) done such an exercise. I offer this exercise on a non-exclusive license to anyone who wants to try it, with the requirement that you send me a description of how this worked out in practice.
I apologize for not blogging lately. Things are busy at work. My laptop was having problems and I spent some time transferring files from the old one to the new one. My dog ate my homework. :-) I'll be back to the test-first "From Model to Model-View-Controller" paper real soon.