Andrew Hunt and Dave Thomas present what are humbly referred to as ‘tips’ towards better software development. In principal, these two guys present a well put together argument that software development is a craft meant to be honed by craftsman (thus the secondary title, ‘from journeyman to master'). Truly, these two understand what it is to be an egoless developer destined for greatness and have captured the essence in a concise set of rules to follow.
Most notably is the DRY axiom (don’t repeat yourself) which, although simple, encompasses so much that is bad in software projects on many levels that it leads the book off as a key tip (and is referenced further in as well). Others including understanding orthogonal code and ubiquitous automation are equally as pivotal. These authors clearly understand their terrain and think the way you want your developers to think.
On rare occasion, one of the tips provided seemed oddly out of the realm of what I would consider “key, generally applicable advice.” An example was the blackboard or clue bag concept seemed a little off base for a book on programming and didn’t provide me with enough concrete strings back to the rest of the tips to make me understand why it was included.
The book includes helpful cross-references allow similar subjects to be quickly found when there is topic crossover (happens a lot). The pull out in the back with the tips quickly provided for reference re-enforce how simple it really is and reminds one that we can all improve. Also, there are lots of references to other good material as a launching point for anyone choosing to make software development their profession.
Overall, a must-have book for the professional developer regardless of domain or technology. Ranks up there with ‘The Mythical Man Month’ and ‘Code Complete’ as a classic.
Tuesday, October 17, 2006
Review of "Practices of an Agile Developer"
This book by Venkat Subramanian and Andy Hunt (one of the authors of “Pragmatic Programmer”) provides an interesting view into the life of an agile software developer. So many of the misconceptions of what agile development processes are (and aren’t) are broken by this book with its clear articulation of the foundational tenets of the concept. Having worked with TJ Hadfield, one of the key fathers of agile development at the C3 project, I can say this book re-enforces much of what I’ve learned from him and his many years of wisdom and experience.
Too many folks have derided agile software development as a ‘do whatever you want’ process that isn’t a process. This book does a good job at clearly stating the goals of an agile developer and walking through what the process means to the developer. It paints the true picture of the process and the foundation: treating developers and responsible professionals capable of implementing a solution without enough information. Agile admits that we’ll always be imperfect in defining the specification, so it embraces the concept.
Other key points the book covers includes: Daily stand-up meetings. Finding bugs early. Test driven development. Nightly builds. All with the goal of making a schedule by making lots of little milestones. Plus, putting a process in place that hums along with a rhythm. A nice call-out in the book identifies out practical tools required for the agile developer including the wiki (for documentation), continuous integration, automated build and others.
The playful tone of the ‘devil’ and ‘angels’ on the shoulders of the developer is an interesting way to present the problems in software and solutions presented by agile, even if it’s a little condescending (as though we’re all intent on listening to the worst advice in software development). I understand the intent but could imagine a little less cartoon-ish way of presenting the problem/solution mix.
Overall, an excellent book to walk through what it’s like to develop in an agile process and how it will feel once it’s done. It provides insight into how to adopt it successfully and gives perspective on the end-product you may not see immediately.
Too many folks have derided agile software development as a ‘do whatever you want’ process that isn’t a process. This book does a good job at clearly stating the goals of an agile developer and walking through what the process means to the developer. It paints the true picture of the process and the foundation: treating developers and responsible professionals capable of implementing a solution without enough information. Agile admits that we’ll always be imperfect in defining the specification, so it embraces the concept.
Other key points the book covers includes: Daily stand-up meetings. Finding bugs early. Test driven development. Nightly builds. All with the goal of making a schedule by making lots of little milestones. Plus, putting a process in place that hums along with a rhythm. A nice call-out in the book identifies out practical tools required for the agile developer including the wiki (for documentation), continuous integration, automated build and others.
The playful tone of the ‘devil’ and ‘angels’ on the shoulders of the developer is an interesting way to present the problems in software and solutions presented by agile, even if it’s a little condescending (as though we’re all intent on listening to the worst advice in software development). I understand the intent but could imagine a little less cartoon-ish way of presenting the problem/solution mix.
Overall, an excellent book to walk through what it’s like to develop in an agile process and how it will feel once it’s done. It provides insight into how to adopt it successfully and gives perspective on the end-product you may not see immediately.