Tuesday, May 17, 2011

XP 2011 Open Space session: Teaching TDD to a Team so that it sticks

On XP 2011 conference in Madrid, I invited to an Open Space session named "Teaching TDD to a Team so that it sticks". I stated the problem below, and a couple of interesting people showed up and gave very helpful hints, among them Charlie Poole, the inventor of NUnit, as well as Patrick Kua and Alexandru Bolboaca. I have integrated some hints from an earlier discussion of the topic with Emily Bache and Johannes Brodwall at the ACCN in Oslo.

The problem description:
Let’s take a couple of Scrum teams who have already been doing Scrum for a while, but are still lacking some technical practices. Agile coaches are convinced that Test Driven development (TDD) would help them create better and more solid code.
Some have had the opportunity to attend a TDD or XP in general training session, but only very few have taken back something to their work.

What could be the reasons for that?
·         TDD is not intuitive, but you have to practice a time to overcome the first problems
·         If they are the only ones in their teams, it is difficult to stick to it, not having whom to ask
·         There is also pressure to take on constantly work from the product backlog, and work will be first slower than without TDD – they need the consent of their Product Owner
·         Maybe it has not been communicated enough that management and Product Owners would tolerate some initial productivity loss, and at which time
·         The examples from training were easy, but the own project is really hardcore programming J
·         In some project setups, it may not be the same developers who profit from good code, as bugs are corrected by someone else => no closed feedback loop

How can we now bring a good training/coaching solution in?
·         All participants should be voluntarily doing the training
·         The training should be done focusing on one team at a time
·         The training can be 2 or 3 days off site – not in the normal work environment
·         To explain TDD well, code examples that are not from the own project are used at least the first 2 days
·         it is helpful if code examples are from the main programming language that the participants are using
·         The proper UT frameworks need to be installed on the developers' machines when they are starting
·         A code retreat could be used for the first phase – this is a couple of developers sitting together and working on the same problems several times, deleting the code in between – outcome is that it is reasonable to create good maintainable code
·         A coding dojo is also a good technique – a group of developers solving a problem, doing TDD, but only one pair at a time will actually work on the code, while the others can look on the projector, and one dojo participant will change from time to time
·         After the participants have some good idea about TDD and first practice, it will be good for credibility and transfer to their own work to look at some own code examples from the team’s real life project
·         The trainer needs to prepare for that, so he/she can work with that code
·         The workshop needs to bring the mindset change to “it is fun working with TDD”
·         After the initial training,  there must be an agreement with the Product Owners how much time can teams spend per week/per iteration on practicing TDD
·         Follow-ups take place in the normal work environment: coach pairs with people in a team on real programming problems
·         From time to time a code retreat or coding dojo to learn more interesting things (refactoring, cleaner code) and practice TDD in volunteer group will lead to strengthen the practice and amplify the learning

Monday, May 16, 2011

XP 2011 conference in Madrid: report of a newbie

Well, I have to admit that while I have been attending and even presenting on a couple of software conferences in the last few years, it was the first time I visited an XP conference. It was kind of that the idea struck me early in April 2011: there is an XP 2011 conference going on inMadrid, soon, they will talk about globalizing agile – this is just what I am doing in my daily work and what I am interested in, and on the other hand, XP means technical agile practices, and this is what our teams still need to develop more.

The intutive decision turned out to be quite good. I met many interesting people – some of the already known from ocasions like the AgileEastern Europe conference in Kiev, the Scrum Gatherings in Stockholm or Munich, or small events like the Agile Coach Camp Norway, or even from Siemens-internal agile conferences some years ago. And I met quite new persons, at least for me, who enriched my view of the agile world.

 













The XP conference seems to build a unique link between industry practicioners and university investigators. It is great to see how the Master or PhD students profit from the direct discussions with people who have global agile experience in the industry. On the other hand, it gives the industry people quick access to new research results.

There are several topics where I found particularly interesting information:
  • Agile and Leadership – here to mention the keynote from Esther Derby and the presentation from Jurgen Appelo
  • Industry reports – Even the ESA converted from waterfall to agile, as reported by Rui Santos and Marc-Elian Begin. In companies, I have now seen several times seen the agile release train by Dean Leffingwell applied – also in the report by Gabor Gunyho from F-Secure.
  • Agile coaching – a very practical workshop with Patrick Kua I had the pleasure to particpate in.
  • The initiative for creating a vision and rules for the recently born Agile and Lean Europe network (ALE) – and a lot of activites following up, including a new conference rotating through European countries, starting September 7.-9., 2011 in Berlin.
  • And last not least the results of my open space inquiry about Teaching TDD to a Team so that it sticks.
I will follow up to these topics with separate blog entries in the next couple of days, starting with the TDD open space.
(photos by Hubert Baumeister)