Book review: “Extreme Programming explained” by Kent Beck

June 8th, 2004 at 5:50 pm

I got familiar with the whole topic of eXtreme Programming a couple
of years ago. You know, it’s one of the hot topics now, and one
tends to hear about hot topics. I’ve never really read anything “formal”
on it, so I got curious when I god my hands on this book. It’s written
by one of the fathers (if not *the* father) of XP, so this is first-source
information.

What follows is my views on a few selected topics of XP, the way they are presented
in this book:

  • Small releases - When you write code, getting feedback is
    very important. This feedback can come on several levels. On the lowest
    level, you check that any piece of code you write compiles and works
    correctly. On the highest level, you want to get feedback from the
    customer to be sure that as a whole the system is functioning correctly.
    XP encourages “small releases” in order to receive such feedback as
    often as possible. It’s a good idea, since feedback adds to confidence,
    and condifence adds to productivity (similarly to testing). It’s not
    very simple to implement “Small releases” though. The customer is not
    always delighted to cease all work, re-install a newer release and combat
    its problems, so it doesn’t always work.
  • Testing - I can’t say enough good things about the habit to test
    a lot. It’s a blessing, it makes programming much easier. I just wish
    that every piece of software was easy to test. How do you test graphical
    components, UIs, etc ? How do you test reports when their format changes
    often ? But wherever possible, testing should be embraced. I’m not sure
    one must write tests first, IMHO if one’s disciplined enough, tests can
    be written after the code as well.
  • Refactoring - I wrote a whole review about *the* Refactoring book
    (Fowler’s), just just a quick one: Without a testing suite, refactoring
    is extremely dangerous. Paired with a good, thorough testing suite,
    refactoring is terrific.
  • 40-Hour week. I’m a big believer in Parkinson’s Law (work expands into
    the time limits assigned to it), so 40-hour weeks sound good. We should
    always take work not too hard… there are many *truly* important things
    in life, long work hours is not one of them. Naturally, spurts of overtime
    are sometimes necessary, so Beck puts it very accurately: a little overtime here and there is OK, but if your team
    is working overtime the second week in a row, it smells like trouble.

  • Pair programming - It’s funny to note that I’ve experienced
    pair programming long before XP came to the headlines. Circa 1998, when
    I just learned to program (in C), a friend of mine (who also just learned
    to program…) and I got to write a text soccer simulation program. It’s
    a few KLOCs, and we wrote it together - *real* pair programming. Sometimes
    I’m “at the wheel” an he’s sitting by my side, throwing ideas and correcting
    small errors on the fly, sometimes he’s “at the wheel”, etc. It was really
    nice, and I think it proved itself, since it really had very few defects, and
    those were simple. Back to the book though…

    I think that the
    image Beck presents in the book is an over-simplified perfection.
    I find it hard to believe that in a 1 million LOC project every
    programmer will know every part of the code because of pair
    programming - this is just too much code/complexity to keep in
    the brain. This is another point that questions the validity
    of all-pair-programming on very large projects. To Beck’s
    defense, in chapter 25 he raises the point that XP doesn’t work
    well with big teams. But small projects are simple anyway, people
    ARE looking for solutions for big teams/projects. On the other
    hand, one may argue that many of the best software projects we
    now use were developed by a small team of very skilled programmers.
    This is not the point though. Big projects often involve a large
    number of mostly mediocre programmers, and the “silver bullet”
    everyone is looking for is some way to make these big teams work
    to deliver good results.

In general, the book is written well and is quite easy to read. I
felt that it slows down towards the end though.
In many places, it seems that the author
refers specifically to the XP team he took part in, rather than
some arbitrary XP team in some arbitrary company. Especially in
chapter 22, “Big boss” paragraph, which reads a little like an
open letter to his boss trying to explain the team’s attitude
and performance during the project.

Chapter 24, “Why XP is hard” is really “in place” though. It adresses
some of the problems I raised above, and generally tries to answer
some of the difficulties teams may encounter when starting to use
XP (or converting an existing project to XP).

To conclude, if you’re interested in XP look it up the net, there
are tons of information out there. If one of your friends has this
book and you’ve got a few free evenings to kill, it’s not bad. I
wouldn’t *buy* it specifically, however… for one who already knows
a little about XP it won’t bear much new information.

Related posts:

  1. Book review: “Test driven development by example”, Kent Beck
  2. Book review: “Refactoring” by Martin Fowler
  3. Book review: “Peopleware” by DeMarco and Lister
  4. “Programming Embedded systems in C and C++” by Michael Barr
  5. Book review: “Expert C Programming” by Peter van der Linden

Leave a Reply

To post code with preserved formatting, enclose it in `backticks` (even multiple lines)