My Agile 2009 Personal Perspective
Brief Summary
There are many experience reports from Agile 2009 and plenty of experienced critiques and discussion of the conference, politics and sessions. So here, instead of good reasoned argument, I present the bits of the week that had the biggest impact for me personally, this being my first Agile conference.
Agile 2009 was a brilliant experience for me personally. I experienced elements of the community that it’s just impossible to glean from mailing lists, tweets or blog articles. Whatever direction Agile is heading, I was encouraged to find that at the conference’s core is a group of people who genuinely seem to care about delivering valuable software to their customers. I would highly recommend anyone interested in agile to attend next year’s conference. Be prepared; sleep is not on the schedule!
In no particular order:
Meeting New People
This part of the Agile conference experience really can’t be overstated. There were so many diverse, intelligent, interesting and interested people at Agile 2009. Of the 1,400 people who attended, I must have shook hands and spent at least a few minutes talking to a couple hundred. The networking opportunities alone are staggering.
The first day I really heavily hit the sessions, going to something at each time-slot: I thought that the point of the conference was the great talks, and there were many, but it’s not. The most valuable part of the conference was the conferring; actually talking, debating, socialising and drinking with some of the most influential practitioners, thinkers and teachers in agile. People who have been present since the signing of the manifesto, who think about this stuff every day, more than I do.
Recording a Special Guest Edition of Pairwith.us
Two people that made this week very special for me were Antony Marcano and Andy Palmer. I was already a fan of their Pairwith.us pair-programming screen-casts and met Andy earlier this year at the JAOO conference in Sydney.
On Friday morning, the final day of the conference, we recorded a special Agile2009 edition of their Pairwith.us screen-cast with special guest stars Pekka Klark, the creator of RobotFramework and Aslak Hellesoy, creator of Cucumber! Needless to say, I was well and truly out of my depth: This was the fourth different language/framework I had paired on in as many days and my knowledge of Eclipse really slowed things down. Thankfully, everyone was very patient with me and the narrative test framework for Fitnesse that the guys have been developing certainly gave me enough hints to keep making progress, albeit slowly and with much guidance.
I have since (in the last few days) learnt the rudimentary Eclipse shortcuts that let me down during our recording and have successfully performed a couple of Java katas. Next time I plan to be much better prepared.
Robert Martin’s Clean Code - Methods Talk
Robert Martin, or UncleBob as he’s affectionately known as, is a real performer. The term “channeling UncleBob” was used by at least two speakers that I heard. He really is a big personality and even if you don’t agree with everything he says, the man always seems to make a well reasoned case and does so with great showmanship and humour. I had just finished reading the Clean Code book on the flight over, so it was nice to hear some of the same things from the author, in his own words (although secretly, I always read his books and articles in the UncleBob voice, in my head).
Michael Bolton’s “Why does Testing take so Long?!” Talk
Michael’s Developsense blog was one I found soon after discovering Agile about twelve months ago and I still find his writing challenging, thoughtful and his ideas well presented. In this session, Michael revealed why the question is probably the wrong one to ask (we can stop testing any time we like!) and presented some heuristics (fuzzy models) to help us know when and why to stop.
The interesting thing about this session, as with many I didn’t attend at Agile 2009, was the interactive format. Michael had us, in small groups, write down thoughts related to the subject matter on 3x5 cards, which we then taped to the wall and organised in categories. This was a very useful technique that promoted discussion between our groups and led to more interesting conclusions.
It was interesting to see Ward Cunningham sitting at one of the front tables for this talk, actively joining in the discussions with his group and thoughtfully rearranging cards on the wall. Just one of the many inspirational and humbling moments of the week.
Programming With The Stars
This lunch-time segue was a bit of light-hearted relief from the intensity of the rest of the conference. Unfortunately the pairs only get six minutes to demonstrate their programming prowess, which I felt was too little to be of any use to the audience and really ended up being a trade-off between contestants trying difficult and incomprehensible things and trying to impress the judges with their mastery of good practices. Perhaps a more clearly defined set of criteria, or guidelines, for judging would help to improve the contest from a spectator perspective.
Practical Sessions - Developer Jams
I attended quite a few practical hands-on sessions during the week. My favourite was probably Michael Feathers’ excellent session on making Error Handling a First Class Design Consideration. In this session we paired on a small point-of-sale system, with the goal of considering the potential within the system for error and trying to build that into our design. My pair and I worked in Python, as it was our best known “common” language, and didn’t quite get the example fully working, although we wrote most of the tests that should have driven out the design. As with everything in Agile, “context is king”, but the session really highlighted the importance of considering error handling during our design (be it up-front or test-driven).
I also attended an interesting, if difficult, session on TDD on the iPhone. Eric Smith and Eric Meyer gave a brief introduction to the Objective-C and iPhone specific elements of TDD and some of the pitfalls and limitations of the current test frameworks. Mocking is especially tricky and I never quite understood the theory of using interface builder to wire up tests using stub buttons. Still, we attempted a randori-style practical session but didn’t quite get the Twitter client example fully working. It did give me some encouragement that TDD on the iPhone, while lacking the mature tools and frameworks of other languages, is certainly making steps in the right direction. Let’s hope OCMock improves in the not too distant future.