Software Development the Extreme Way: An Interactive Workshop on Extreme Programming
March 11-22, 2002, National Research Council, Ottawa, Canada
led this ten-day intensive workshop at the Institute for Information Technology. All in all, this was a very high-energy, fun event.
Joshua and Rob started the workshop with a fun simulation exercise: writing a movie script, XP style. By the end of the first-day, the participants had a pretty good idea about the philosophy of XP and the underlying team practices. Then the participants selected a mock project to work on: the IitColloquiumOrganizer?
. The rest of the time was divided among planning and implementing the IitColloquium?
, discussion sessions, retrospectives, playing Xp games (XpLorations?
– courtesy of JoshuaKerievsky
), participative demos on Refactoring and TestFirst
, and lectures given by different people.
’s purpose is to automate the institute’s event organization process from start to end. We completed two releases of the system, with two iterations per release, spending 1/2 day for release planning per release, 1/2 day for iteration planning per iteration, and 1/2 day for the iteration itself. We also had an additional refactoring iteration in the middle when things got out of control because the development team had no time for refactoring
. The size of the customer subteam varied from two to four 'pesky'(*), but informed customers who supplied the development team with the stories and wrote acceptance tests. All customers incidentally were technical people; one was also an end user. Since the iterations were artificially small and the tasks relatively complex, the development team grappled with collisions in the beginning. The customers were too demanding (one in particular, no names), failed to speak with one voice most of the time, and regularly challenged our estimates (one in particular again, please, we can't name any names). They complained all the time although they had trouble keeping up with the development in producing nicely refactored, 'working' acceptance tests. Things got slightly better when one developer became a double agent, defecting to the customer subteam to help them write acceptance tests. She played both sides for a while, pair programming occasionally with the regular developers ('Hmmm, I wonder whether this is kosher?'). Nevertheless, the developers still loved the customers and the customers loved the developers! We were one team after all!
The Refactoring and TestFirst
demos were awesome. Joshua and Rob showed us how to gradually refactor a piece of code based on the StatePattern
. They also showed us how to migrate the IitColloquiumOrganizer?
to take advantage of the ObserverPattern
. See RefactoringToPatterns
. We also performed a number of participative [a.k.a. fishbowl]refactorings where a pair would sit in front of the integration machine and perform a small refactoring task live in a time-boxed manner, handing over the stage to a different pair when their time was up. In the meantime, the other participants yelled tips and instructions to the pair. The integration machine’s screen was projected onto the wall for everyone to see.
At one point, the two coaches performed a sneaky refactoring behind our backs. They didn't break the system, but just about everybody flipped. We were angry for a while and contemplated firing the coaches -- that is until they demonstrated the rationale and we all went "aaah, that's why you did what you did -- I suppose we can live with it". Silently we thought: Sun of a gun! How brilliant! These guys know what they are talking about!
. But of course, we never confessed our true feelings to them, being the brilliant researchers, developers, and business development officers we were.
The participants also spent half a day discussing how XP can be adapted to their own context. Some questions that were tackled include:
- Can we do XP part time?
- Can we do research XP style?
- Will XP scale down to two to three-person projects?
- How critical is it to have an experienced coach?
20 IIT participants with various backgrounds and experience attended the workshop.
Six Early Bird participants attended the first week and helped complete the first two iterations of the IitColloquiumOrganizer?
. Six courageous Late Comers jumped in at the beginning of the second week and helped complete the last two iterations of the IitColloquiumOrganizer?
. The rest of the participants, with extraordinary stamina, went 'Full Monty', attending the whole spiel from start to end. They helped in the assimilation of the Late Comers by pair-programming with them. The Early Birds regularly dropped in during the second week to check on their fellow Xpers, and at times couldn't resist the urge to pair-, or triple-program with the Late Comers and Full Monty’ers.
The workshop took place at IIT's classroom, part of the institute's SoftwareQualityLab?
. The set up was nearly ideal: slender workstations with large flat panels with ample desktop space; an instructor's machine hooked up to a ceiling-mounted projector (which served as the integration machine), an extra projector, a smart board (which we didn't use because the classroom police forbade it :-), whiteboards, flipcharts, an adjoining meeting room for the planning game. It could have been better if we could have rearranged the room in a more open-space layout, with the developer stations in the middle and customers' stations around the periphery. Nevertheless, it worked quite well the way it was.
gave the following talks during the workshop:
- Laurie: Pair Programming: Why Have Two Do The Work of One?
- Frank: Agile Methods: Some Initial Empirical Results
- Hakan: Keep Your Options Open: Extreme Programming and Economics of Flexibility
The team concluded each release and the workshop with ExtremeDimSum
Kudos to the coaches for a job extremely well done.
(*)AlainDesilets deserves the credit for the use of this adjective -- he meant it in the most affectionate manner
Page first created June 24, 2002 by HakanErdogmus