XP Immersion Course Review

Dec. 5-10, 1999, I attended the first offering of “XP Immersion Training”, in Deerfield, IL, sponsored by Object Mentor. This was an excellent, intensive course.

Mechanics

Kent Beck did the bulk of the training, with one day by Martin Fowler. Bob Martin and Ron Jeffries provided introductions, general support, and evening lectures. These four provided evening talks (one per night) on a variety of topics. Several Object Mentor people provided logistical support.

The format was:

  • Morning lecture
  • Afternoon team programming
  • Evening discussion

This made for very long days (but well-spent).

What is XP?

Extreme Programming ties together a number of practices:

Requirements:

  • Users sit with the development team
  • Ongoing release and integration planning

Test:

  • Constant unit testing (write tests before code)
  • User-defined functional tests

Code:

  • Pair programming
  • Continuous integration
  • Coding standards

Design:

  • Metaphor as a unifying system concept
  • Refactoring
  • “Simplest thing that could possibly work”

The Good

  • Testing first feels very powerful.
  • Constant customer involvement has high potential payoff.
  • There were excellent demos of refactoring by Martin Fowler, and Kent Beck and James Newkirk.

The Bad

  • Our programming team got nowhere near as far as I expected. It was hard to tell why.
  • Java was not people’s primary language.
  • People had no familiarity with Swing. (We eventually dropped it and went to text input.)
  • It took time to become familiar with the programming environment, and to develop configuration management conventions.
  • It was hard to put practices in place: getting used to pair programming and writing tests first.

(Not to say the team project should be dropped; it was actually very helpful.)

The Ambiguous

  • Pair programming seems like it could work well but took getting used to.
  • Simple design was appropriate in our small program, but it was hard to tell for sure that it would scale.

Conclusion

I intend to encourage introduction of these practices into our group’s work.

Further Information