Robert C. Martin opens a rant on his Object Mentor blog with one of the best sentences I’ve read in a while.
I was riding my exercise bike, listening to Stack Overflow #38 when I heard Jeff Atwood and Joel Spolsky say “Quality just doesn’t matter that much.”
I’ve never been one for exercise bikes or podcasts but I’m guessing Robert Martin tuned in for some light entertainment rather than provocation. As it turned out, though:
I nearly fell off my bike.
Happily no real harm was done and Robert Martin recovered sufficiently to post his response to the podcast. The debate continues in the comments on this article and elsewhere. I don’t want to weigh into this particular argument myself, but out of curiosity I did listen to exactly what Atwood and Spolsky had to say around 42 minutes into the show (yes, a transcript of the relevant segment exists, but I wanted to listen to the original; having done so, I don’t think I’ll bother with the rest, thanks). Spolsky does almost all of the talking. Whilst managing to sound calm and thoughtful, his actual words are plain rude.
[…] it seems to me like a lot of the Object Oriented Design principles you’re hearing lately from people like Robert Martin and Kent Beck and so forth have gone off the deep end into architecture for architecture’s sake […] They’ve just gone off the deep end, and I don’t think these people write very much code if they’re coming up with these principles, to be honest, it doesn’t even make sense.
I think it’s Spolsky’s suggestion that people like Robert Martin don’t write much code which bugs Martin the most, and I’m not surprised. Listening to the podcast, I didn’t hear anyone actually say “Quality doesn’t matter”. Maybe I didn’t listen long enough, but I wonder if it’s actually Martin’s spin on what’s been said. Robert Martin is a fervent promoter of code quality. His view (as I understand it) is that there are no shortcuts, and that test driven development is a great way to deliver quality.
You see, I think quality matters. I think the quality of my code matters, even at the smallest scale. I think the quality of my systems matters. I think the quality of my tests matters. And… I think the quality of my advice matters.
Reading this prompts me to mention a book I’ve been wanting to discuss here for a while — “Agile Software Development: Principles, Patterns, and Practices”, by Robert C. Martin. It’s a book I don’t hesistate to recommend: packed with code, knowledge and character, it demonstrates real world software development by example. It’s arguably a better guide to design patterns for C++ and Java programmers than the more famous “Gang of Four” book. It’s also a wide-ranging and ambitious book. You’ll find a manifesto, checklists of principles and practices, cartoons, quotations, a dialogue between pair-programmers, an Appendix on UML, even a satirical short story.
Agile Software Development tells it like it is. It’s as a survival guide for working programmers who want to do the best they can. Programmers who use C++, Java and UML. Programmers who suffer constant pressure from pointy-haired bosses. Programmers who resist the urge to add global variables to solve their immediate problems, who introduce interfaces to improve architecture, who write Java code which generates more boilerplate Java. Programmers who care.
Yet I have reservations. Agile Software Development is far from perfect. The mix of fonts on the front cover is a fair indication of what’s inside: the book is poorly designed. The book promotes clean, well-factored code, yet this advice doesn’t seem to have been applied to itself. In the preface Robert Martin describes the historical forces which have shaped the book — an article from here, some chapters from there, a change of direction — it’s reminiscent of a stop-start software project, and too much of that history shows. Reading the book I also tripped over several typos and the occasional broken code sample. Sad to say, but the flaws in this book have coloured my judgement of what Robert Martin has to say about code quality.
Robert Martin suggests Spolsky’s comments are:
a symptom of someone has focussed on business and lost his technical chops.
Certainly Joel Spolsky seems focused on business and his business revolves around the Joel-on-Software brand. Whether or not you buy into that brand, he’s a skilful writer. The material on his website is always carefully written and well presented.
Robert C. Martin will be opening ACCU 2009 with a keynote presentation entitled “The Birth of Software Craftsmanship”. I’d love to be there to hear him speak. I see he has a new book out, Clean Code: A Handbook of Agile Software Craftsmanship. Should I read it?
Well, I liked it: http://pyre.third-bit.com/blog/archives/1763.html.