Friday, August 1, 2014

eXtreme Programming: Days of future past

Going back, maybe ten years ago, when I first read Kent Becks Extreme Programming I found it compelling. Most of the practices made immediate intuitive sense.  I especially liked the practices:  coding standards, unit testing, refactoring, continuous integration, collective code ownership, code reviews and maintaining a sustainable pace. They are now engrained in the way we operate.  What was appealing about them was that they were directly applicable to the practice of programming.  I could and did begin adopting them in some part as an individual to develop my own development skills, quality and productivity.  There was no need for a formal organizational structure or project management philosophy overhaul required in order to just start doing some of the practices and benefitting from the discipline.  Extreme programming is a methodology as the name implies, for programmers. 

Later, as I became more aware of broader Agile, the myriad of Agile practices felt like watered down versions of XP or at least less concrete.  The Agile manifesto’s vague generalities weren’t prescriptive enough, for me, I never really got it.  If fact, I have seen them used to vindicate code-like hell as being agile.  I was disappointed when XP fell out of favor.

Unsurprisingly, I found the project management aspects of XP less interesting personally.  Nevertheless, those are the aspects that Agile became synonymous with.  Teams that are ‘agile’ more often than not refer to their project process rather than their engineering discipline.  Initially I was intrigued by Scrum.   It appeared to be somewhat prescriptive, albeit around the process rather than the programming .  It had a structure which vague Agile didn’t (which may be true of Lean and Kanban too).  In my experience, however, Scrum tends not to be all that prescriptive and molds to the team rather than the other way around.  While agility is great and desirable, Agile still seems to be all over the place meaning everything and nothing all at once.

When I came across Uncle Bob’s Extreme Programming, a Reflection recently and recalled Martin Fowler’s similar criticism of Flaccid Scrum (Scrum without technical practices), I was encouraged to know that I wasn’t alone in my nostalgia for XP.

I recommend going back, re-familiarizing with XP and reclaiming what was lost.