Thursday, August 11

No time for meetings!

Today we had a fascinating brown-bag lunch where Darren Cotterill spoke about his latest project. I left the talk feeling energised, and encouraged: his latest project was really working and it seemed agility had triumphed.

Hopefully you can catch Darren at the local Sydney XP group: SyXPAC talking about his experiences, but for now here are the highlights:
  1. Weekly iterations mean no time for meetings, meaning very low ceremony: no formal Iteration Planning Meeting, Retrospective, Tear-Down of Kick-off. The development team is picking the stories for the next iteration.
  2. A small team of 3 devs, 1 PM, 1 BA are collocated and collaborating like mad: small teams rock!
  3. Good use of the iteration whiteboard means it has become the source of truth, and the PM trusts it for reporting development status.
  4. A running issues backlog on the whiteboard acts like a continuous retrospective.
  5. An excellent BA provides HTML screen mockups (no kidding!) along with simple story cards complete with acceptance criteria.
  6. Recently a re-estimation involving the whole team provided trustworthy estimates. It was achieved using a relative size estimation technique, on a whiteboard, at a rate of 100 stories in 6 hours.
  7. An excellent burn-up-chart shows completed stories per iteration and three projected dates to completion of the three levels of story priority.
  8. The team is using a very simple change tracking mechanism where they create a new index card, and give it a number based on the original story card. For example if there was a requirements change to story number 33, the new card would be created as 33.1 and would be added to the total scope of the project, thus adjusting the projected completion date on the burn-up-chart.
Not only is the process going well, but the technology is excellent:
  1. They have achieved the nirvana of a fast-feedback loop during development: edit, run and test in-place in the IDE using Jetty and careful source tree management.
  2. Using Hibernate, Spring and a tiny bit of Struts the team has achieved a light-weight and clean architecture.
  3. Using a session-in-view filter they can use the domain in the view. Note that I think this is a sign of maturity and a source of productivity in enterprise apps, but others may be shouting things like "encapsulation!" and "layered-architecture!". YMMV.
  4. Automated functional testing using the browser-driver Selenium allowing both visual and automated verification of end-to-end behavior in a real browser.
  5. CruiseControl continuous integration with automated deployment to a prod-like environment allowing instant and adhoc demos to the customer of the very latest code.
Now there is a project that sounds like a success waiting to happen. I guess our job now is to make our next project a bit more like it.