Book Report: XP Programming Explained
I’m home sick today so I have a chance to catch up on some writing, and since Kent Beck’s XP Programming Explained contributed to my decision to stay home it’s only fitting that I file an overdue report on it.
XP is a type of agile software development and many of the sentiments that Beck expresses are very similar to what Pete McBreen discusses in Software Craftsmanship. Through a process that includes iterative planning, frequent deploys, ongoing communication, customer involvement and test driven development you can focus on the most important element of software development: the people. It’s about effectively delivering working, robust software that the team can be proud of and the customers and users are pleased with.
Beck outlines five values of XP Programming at the beginning of the book and then throughout the book shares principles and practices that help shape and uphold these values, which are:
- Simplicity: what is the simplest solution that will work
- Courage: courage to do the “right” thing, which could mean speaking up or delaying a decision
- Respect: “Everyone on the team has value”
- Communication: encouraging the spoken transfer of ideas and values
- Feedback: creating a feedback loop and keeping it as short as possible
Some of the principles he discusses include Humanity, Mutual Benefit, Improvement, Reflection and Flow, and the practices include co-location, pair programming, empowering developers and customers, and encouraging responsibility and accountability throughout the team.
XP Explained is a good read (and relatively quick), but a lot of the ideas feel like they should be no-brainers, which like Software Craftsmanship makes me interested what stories flies on the walls of software teams around the year 2000 would have. Both of these books were published around then (‘XP’ in '99, 'Craftsmanship’ in '01) and Mike and I chatted a little bit about the environment in software development during the time. It was a world full of shrink-wrapped software and huge enterprise projects that certainly still exist (well maybe not the shrink-wrapped software), but as the agile philosophy began to spread a large chunk of the developer workforce also started working on smaller teams that built web and mobile apps. These apps are much easier to push upgrades to and consistently iterate on. I recently spoke to a developer at a pretty huge company and he said that even with a team numbering in the hundreds they still practice Agile as much as possible. He said it that although there are some challenges using Agile with a company of that size, it definitely provides a solid framework for everybody.
So how did all this make me decide to stay home today? While talking about respect, the importance of the team and pair programming Beck even recommends a few nitty gritty hygiene best practices. It doesn’t do your team any good and is disrespectful to them if you’re sick and bring in germs that could set them back. It also makes the people around you uncomfortable (and thus, less productive) if they’re concerned with catching what you have or avoiding your particularly pungent personal smell or breath resulting from the liver and onion sandwich that sounded good for lunch. Not very glamorous details but good advice nonetheless. I was really looking forward to a trip up the Libertyville office today too and went to bed at something like 9 last night in the hopes I could fend off the symptoms that kicked in yesterday evening, but when I woke up this morning worsening symptoms and Mr. Beck made me decide to not spread the germs north. Fortunately a day of rest and plenty of fluids seems to have me on track for a quick turnaround.