Extreme Programming Adventures in C#

Author: Ron Jeffries
Publisher: Microsoft Press, 2004
Pages: 518
ISBN: 978-735619494
Aimed at: Audience not at all clear
Rating: 2
Pros: Honest
Cons: Honest to a fault
Reviewed by: Ian Elliot


This is a very strange book and not at all typical of extreme programming books, or indeed programming books of any kind. The author was the “online coach” for the original extreme programming project and he clearly knows many of the creators of the methodology and name drops as if to prove his credentials.

The book can be best described as a diary of an XP software project, complete with what went wrong and what proved good. This sounds like a good idea but XP has aspects that are simply not modelled well by small artificial examples and in this case the example is very small – an XML based notepad application.

It is also clear that the project is a one-programmer project, despite the occasional introduction of a friend to do “pair programming”. When you add to this the fact that there clearly isn’t a “customer” or a team to interact with you being to see that as a test bed or toy example to demonstrate XP this isn’t really suitable. Other books on XP take the approach that you are an experienced programmer who is open to persuasion by anecdotal information. They tell stories that relate to what you already know and explain how things can be better. Often they are simply rallying cries, political pamphlets and reasoned hype and often great fun to read even if you disagree with them. The failure of this approach makes you appreciate why such alternatives work.

This book attempts to explain XP by example. Obviously there would be little point in the author simply displaying his expertise by presenting a finished program – that’s not development. In fact the progress that the author makes is painful. He not only documents the design but also his learning of the C# language. In fact much of the doubt about what would constitute a “good design” is due to not really understanding the language or its facilities.

The author’s approach is often naïve to the point of being embarrassing. Perhaps trying to build a system when you haven’t really mastered the language is a way of making a simple problem difficult enough to need a methodology – a bit like a tennis pro playing left handed to give a weaker player a chance. However the subtle problems of design and structure that XP is supposed to solve are quite different from the sort that arise when you don’t know what you are doing. There is also a surprising lack of “agility” in this particular approach to XP. It reads as if every line of code cost the author deep thought and effort. It simply makes clear that if you are going to “embrace change” then you need to be a really good coder.

The final conclusion is that this book reads like the ramblings of an amateur programmer coding a weekend project and as a result it does nothing to teach the reader XP or C#.

Last Updated ( Thursday, 24 June 2010 )