Wed 11 Nov 2009
How Agile is Rally?
Mark Levison recently posted a challenge to Agile tool vendors, so I’ve written some responses below about our Definition of Done, TDD, acceptance testing, release frequency, and retrospectives.
Definition of Done
We separate out our definition of “Done” for individual stories and for the release as a whole. Each release planning, we discuss it as a group and make updates, so this is current as of last Friday:
Story
All tasks complete
All tests running and passing
Manual walkthroughs complete on all fully supported browsers
Migrations and Web Services updates reviewed
Ops & On-Premise impact recorded
User gesture tracking added
Performance test results reviewed
All defects closed by testers
UX review complete
Accepted by Product Owners
Release
All stories accepted
All tests run & passing
Build passing
Performance tests run & accepted
Migration tested against trial & production
Outage time defined & communicated
Doc & external content complete
Agile Commons (our user community)
Announcements (pre & post)
Release notes
“What’s New?” screen updated
Interstitial light box
TDD and Unit Testing
We do TDD to different extents in different parts of the system. TDD in Java has been relatively straightforward, but as a rich web application, we have fairly sophisticated JavaScript code that historically has been tricky to unit test. In the past, we leaned heavily on our acceptance testing framework on the GUI side, but we’ve recently come up with a JavaScript unit testing approach that we’re happy with and that supports TDD.
Acceptance Testing
For the last few years, we’ve been writing tests in an internally built Ruby framework that drives Selenium for much of our automated functional acceptance testing. This works, but the tests take a long time to run, and so we’re exploring other strategies.
We do support a lot of browsers for a relatively sophisticated client-side experience. Firefox 3.x, IE 8.x, Safari 4.x, and Chrome 2.x are all fully supported. For older browsers (Firefox 2.x, Safari 3.x, IE 7.x and 6.x) we provide functional support – Rally needs to work on these, but sometimes there are display issues with margins and the like. We have one exploratory tester per scrum who does exploratory testing on each story on each of these different browsers.
We also do automated performance testing on each story to see the impact on overall performance, to be certain that new work doesn’t degrade our response times. Because many of our customers are international, we include user gesture tracking so we can keep track of actual client-side performance on different browsers in different parts of the world so we know what performance users are experiencing after we release. Our average server-side response time is under 200ms, and our average client-side response time (server time + network time + browser render time) is under 1 second for the top browsers. Here’s some actual data for real customers this fall:

Finally, the product owners also do a manual walkthrough of each story as it is completed. The team has already verified that the acceptance criteria are tested, but sometimes during the acceptance process I find missing acceptance criteria that turn into additional stories.
Release Frequency
We release about 40 times per year. Patches with small features and fixes go out most Saturdays, and we have major feature releases 6 times per year so we can manage customer expectations and keep the rest of the company in sync.
Last Retrospective
I feel like revealing our retrospective contents in public might violate trust and a feeling of personal safety for our team. One issue that came up recently was our test system and the extent to which it mirrors our production environment. Each scrum holds a retrospective every other week, and we do a cross-scrum retrospective every 8 weeks.
But really, these things are table stakes – you’re probably going to get decent answers from most agile tool vendors. There are other questions that seem to matter a lot more to our customers when they’re choosing a tool
- How well does the vendor match the level of engagement that you want? If you want a deep, “partner” level of engagement, can you get it? Or is the vendor going to dump a zip file in your lap and ignore your emails?
- How smooth are your releases? Will we have to spend a lot of time adjusting how we work each time you change things? Or do you put effort into building features that are easy for users to adopt and non-disruptive?
- How’s your performance internationally? If we have teams all over the world, what actual client-side performance do users of your product experience in Mumbai? In Singapore? In Chicago?

[...] This post was mentioned on Twitter by mlevison, mlevison. mlevison said: How Agile is Rally? http://is.gd/4SJ4M Rally replied to my Challenge: http://bit.ly/17wmOu+ [...]
Social comments and analytics for this post…
This post was mentioned on Twitter by mlevison: How Agile is Rally? http://is.gd/4SJ4M Rally replied to my Challenge: http://bit.ly/17wmOu+…
Alex,
Great article. It’s interesting to see some specific information and data about what Rally are doing.
I also liked how you reported on some of the challenges that Rally is facing especially with acceptance testing. Effectively automating acceptance testing is difficult. In my experience, most teams cobble together a solution from existing tools, exactly as you’ve described.
I also found the two definitions of done (Story and Release) to be interesting. I find the boundary between Story and Release to artificial and wonder if it would make sense to combine the two lists and simply have one definition of done … especially if your teams are releasing every week.
All the best,
Kane Mar
http://Scrumology.com | http://Scrumology.com/twitter
Kane:
Most of the release doneness centers around the communication items (Migration tested against trial & production, Outage time defined & communicated, Doc & external content complete, Agile Commons (our user community), Announcements (pre & post), Release notes, “What’s New?” screen updated
Interstitial light box). These items aren’t completed every week – we do minimal communication around our weekly releases.
We try to bundle together large database migrations for the 8-week releases, and we need to know how long these will take. We don’t ship long migrations during 1-week releases, so we don’t bother checking migration times.
Reducing our “Release Done” burden is something we’re working on.