Tuesday, November 18, 2008

I release my software every day

We had a new office opening party at our premises and as part of the party we were telling about Nextdoor, which is pretty nice web application.

The thing that got most of the interest was the way we have developed it and how we are able to release it every day. As an agile coach I have seen teams applying Scrum or even trying the XP practices, but still not getting stuff out fast due to various blockers in their value stream.

As part of the Nextdoor development we have wanted to demonstrate that "It can be done even you are not 'Google'" and to be honest we have even surprised ourselves with the results.

So to give you some idea what we have done so far:
  • We have a web application that has over 400 use cases
  • All the use cases are automatically tested by our automated acceptance tests on every build (build time about 1 hour, including tests, reports, and deployments)
  • We have practiced "Test-First", meaning that before we write any new functionality, we write the test first (we actually do that in cycles, but still)
  • The implementation from the day that we bought the hardware and started installing software has taken about 120 man days
It has been quite challenging in various aspects. Here is few of the challenges we have faced:
  • Our Scrum team is not co-located
  • All the team members have been part-timers, which makes velocity tracking and coordination pretty hard
  • Usability and interaction design has been challenging
  • We have tried to merge any outsourced resources to our Scrum
  • Some test scenarios are pretty complex (for instance testing of Google Maps integration or fancy AJAX components)
Despite the challenges faced we have seen very good results with our implementation of Scrum and agile engineering practices. For instance we have found that the bug tracking has become actually "fix tracking" as no bug lives very long (most of them get fixed in 24 hours) and therefore the priority of the bug has become almost irrelevant. With 24 hours release cycle the customer (our Product Owner) has become almost a bottleneck as he cannot revise the implemented stories within that time frame. Naturally we release some bigger features via sprint demo (every 2 weeks) still so not all the features are released in "one day pieces".

Some people have argued that our software is not very lean as the test mass that can see as machinery to produce quality software is pretty big and requires maintenance. We agree, but we still are confident about paying the price in order to be able to release as often as we do.

I need to stress that implementing Scrum (or any agile method) requires a lot from the people. You have to be very disciplined to get it right and not to forget adjust and learn from the previous sprint/iteration/thing that you have done. Inspect-Adapt cycle may sound easy, but it is not.

Do not forget the 0-step of every method: Think

Want to hear more? Mail me (marko dot taipale at huitale dot com) and lets see if I can arrange a demo for you :)

Markus also has blogged about this.


Ari said...

You must score pretty high on the Agile Machismo Point calculator!

Roberto Fasciolo said...

Unfortunately the Agile Machismo Point calculator doesn't scale, it considers 2 releases every 6 months as the best possible situation...