« DTSTTCPW | Main | Faxinated - with extreme prejudice »
April 12, 2004
XP Trophy Books
Here's an open question to my enlightened but limited readership:
What five books should every ambitious Agile/XP developer read?
I ask this because I've recently been asked questions along this line and I honestly couldn't come up with a definitive list I was happy with. At this point, I should clarify my requirements a little further:
- Take an average developer of some experience and skill who is going to join an existing development team using Agile methods.
- Assume they're already knowledgeable in whatever language is required. No further language-specific instruction is needed.
- Assume they will be working with experienced Agile developers
Note: Although I've been using the general term "Agile" here - I really mean "XP" as this is the only Agile method I've been exposed to so far.
Given these assumptions, what books should this person be looking at to give them the best foundation of knowledge before they begin working within an Agile team? So far, I've come up with the following somewhat meagre list:
- Extreme Programming Explained (aka The White Book) by Kent Beck. I haven't come across a better introductory text for XP - pure and simple.
- Test Driven Development, also by Kent Beck. TDD was a confusing blur prior to reading this book.
- ???
- ???
- ???
Noteable Omissions
I should admit that although I'm a huge fan of Refactoring by Martin Fowler (as required by my employee agreement with ThoughtWorks :-)), it's not in this list because I believe refactoring and the patterns covered in this book is a concept inherently understood by most developers, although they may not have realized their murky concept of "cleaning up code" actually has a proper name.
Ditto for the rest of the books in the Extreme Programming series, which although informative, IMHO don't build upon the White Book enough to join the original text in my list.
So this leaves at least another three spaces in my list for new entries submitted by whomever so desires. What other texts do people think should be in there? Argue your case, be it for The Pragmatic Programmer, any of the books from Ward Cunningham or Ron Jeffries or even Sun Tzu and the Art of War if you want to completely underwhelm me with your Renaissance readings.
So hurry up with your suggestions. Competition closes soon. One vote per reader. No warranty either expressed or implied. Judges decision is worthless and correspondence happily entered into.
Note: I was introduced to the term "trophy book" by Gregor Hohpe, author of the recently published Enterprise Integration Patterns. Although I haven't nominated his book (or even read it for that matter), I thought I might curry some favour by citing him for the title/inspiration of this article instead.
Posted by Andy Marks at April 12, 2004 05:44 PM
Comments
I really hate to argue it, but I think "Refactoring" belongs up there. And the reason is from my own experience.
When I read "Refactoring", I had a real "Aha!" moment. It became clear to me how you could rework significant parts of an application, and what steps were required to do it safely. This was a massive paradigm shift for me, and started me down the path leading away from BDUF.
Even while working with "experienced Agile developer", I'd still recommend "Refactoring". While working with "experienced Agile developer" will give them a good feel for the day-to-day refactorings, the larger ones will not be as visible. In addition, the very solid groundwork laid down by Martin on unit testing will help a lot when they go to read Beck's "Test Driven Development" book (though I've heard a lot of people recommend Dave Astel's book over Beck's).
If I could possibly squeeze in a second vote... ;) the equivalent of "Effective C++" or "Effective Java" in the language of choice.
Posted by: Robert Watkins at April 12, 2004 08:10 PM
"Extreme Programming Explained" (Kent Beck), because it's a such a nice,
readable introduction.
"Agile Software Development" (Robert C. Martin), because it talks about the
actual software, and how best to design it for maintainability.
"Refactoring" (Martin Fowler), because, again, it's about code, and
refactoring goes hand in hand with design.
"Lean Software Development" (Mary & Tom Poppendieck), which nicely puts
Agile software development into a wider context of "lean" process theory.
"The Pragmatic Programmer" (Andy Hunt, Dave Thomas), 'cos it's just so darn
pragmatic.
Posted by: Mike Williams at April 22, 2004 02:49 PM
Post a comment
Thanks for signing in, . Now you can comment. (sign out)
(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)