Tool Vendors Reply to My Agile Challenge
Last week I challenged Agile Tool Vendors, and the post got a little bit of attention. I received replies from Rally: How Agile is Rally?, Danube: How Agile is Danube?, and MicroTool: How We Use Agile to Develop Our Tools?.
In addition there were several comments with replies: Robert Dempsey:
CEO and Founder of Atlantic Dominion Solutions. We developed Scrum’d: http://www.scrumd.com. A great post and an excellent challenge. To answer your questions:
# Your Definition of Done
We define done for each user story. Acceptance criteria includes the behavior a user can expect from the app when using it, the workflow for the feature, that it needs to be tested (and how it will be tested), any validations that occur, and if there is documentation for the feature that it is updated.
# Whether you use TDD? Or at least Unit Testing?
We do full TDD for all our stories. We didn’t start out that way, but now that we have a full test suite, we keep it that way. Also, if a bug is found, then a test needs to be written for that and the code fixed.
# What do you do for Acceptance Testing?
We have staging servers set up for internal testing. We also have a few select customers that we let into our staging servers, and I show (in person) some of our current and potential clients the features to get their feedback as well. In addition, we use Get Satisfaction for our support site and ask that commentators who suggested features that we implement to check out the release and see if it’s what they wanted.
# How often do you release?
This depends. We try to do monthly releases. Sometimes it’s longer, but typically it’s less. The release schedule really depends on the importance of features to our user community.
# What did you learn in your last retrospective?
You don’t always get it right the first time, but anything you do release needs to work correctly. Also, continuous integration is a huge help as your product gets bigger, and of course, testing is an absolute necessity. We would rather delay a release to ensure quality than release stuff that won’t work.
Marcin Niebudek (creator of TinyPM)
I like challenges, so…
Our DoD for stories:
- code meeting minimal requirements committed
- unit tests passing
- feature is working under FF, Chrome, and Opera
- feature is working without any significant failures under IE
- feature is tested and accepted by at least one team member that was not implementing the story
Our DoD for release:
- WAR and .exe distros built successfully
- all unit test passing
- all functional bugs fixed
- all UI bugs fixed or small UI bugs (mostly for IE) at least scheduled to be fixed
- installation and upgrade documentation updated
- installation tested on Windows and Linux
- new features list updates at product web site
Do we use TDD? Well, I would not say that because our coverage is not 100%, which means some of our code is not unit tested (glue code), but, yes, we do unit testing with "test first" style for all domain and business logic code, and we tend to shift into BDD style right now.
As our Product Owner is also an active developer, for acceptance testing, we tend to verify features within a team, as we have strong and common vision of a product within the team (see also acceptance in our DoD for stories). It’s a low ceremony process (as are all our processes in the team).
How often do we release? Every 2–3 months.
What have we learned from our last retrospective? That we need to shift into feature branches to be able to release small stories more often while the big ones are still in progress.
Do you see any flaws or warning signs in what I’ve posted here? Go on, say it… we’re always happy to improve…
It would be fun to hear from Target Process, ThoughtWorks Mingle team, VersionOne, AgileBuddy, and anyone else I might have missed.
November 19, 2009 at 8:30 pm | Sandy
Interesting experiment Mark, nice idea.
The results are encouraging, but largely unquantifiable. Would I feel any better buying this software over someone with a fully manual QA process or longer release cycles? I think that’s comfort you can only determine once you’ve used a package past a few upgrades.
One thing seems very obvious, with that level of process should be able to produce good metrics around the average defect rate per release? How many crashing, critical, annoyance bugs are they experiencing per release? How big is their customer base? How many new features are they releasing each iteration vs. bug fixes? Can we see your burn charts?
That would be *really* impressive to see and would really drive home the Agile Advantage message. Also, it would be a real differentiator for could even become the standard by which buy software. “Open” should be more than just the source code, but the metrics as well.
Hmm, dunno. Thinking out loud.
November 20, 2009 at 9:23 am | Robert Dempsey
Hi Sandy,
We’re fully transparent with the good, bad, and ugly on our support site for all of our products, including Scrum’d: http://getsatisfaction.com/atlanticdominionsolutions. Our defect count is fairly low per release due to automated testing and manual QA on the app. Nothing is perfect though, and we fit into that category. We also do many deploys as opposed to big quarterly releases. This helps us rapidly kill the bugs that we missed with our process.
We have close to 2K accounts on Scrum’d. Customers are from all over the world, and not necessarily doing software development, which was one of our requirements when we built the app – that anyone doing scrum could use the app.
In each sprint we typically complete between 3-8 stories, and then release every 1-2 sprints depending on how quickly we want to get the features to our customers. Sometimes we get excited and push updates asap.
November 20, 2009 at 9:40 am | Michael Dubakov
TargetProcess
I’ve blogged about our development process a month ago
http://www.targetprocess.com/blog/2009/10/our-development-process.html
November 20, 2009 at 3:05 pm | Mark Levison
Its a great idea Sandy the problem with that is my idea of a critical bug will be different from yours and Rally’s (not picking on them in particular). In addition once you establish measures like this people will game them by accident or by design. I just hear the conversation now: “Bug, that’s not a bug its just the way I designed it”, or “There’s a workaround for that bug so its just an annoyance and not critical”.
I wonder if there would be useful object measures.
November 20, 2009 at 3:47 pm | Sandy
I think I’m less concerned about if the company games the metrics. Relative counts are still useful. Also, if the bugs available for all to see (as with most OSS) I think I could spot the gaming pretty easily.
As a point of reference I’m currently using a 3rd party commercial library which is completely opaque to me. I see nothing of their process, bug counts or anything. The only thing I get is a release note list of features added and bugs fixed. I can tell at a glance the vertical this company is getting the majority of its revenues from since that’s where the bulk of the new features are going. If we were a bigger fish we could perhaps sway this. My point is, bug categorizations gets gamed all the time, not just to make the dev team look good [Cue the sound of fingers rubbing together]. And, even this rough list gives me a good insight into the libraries relative stability.
And thanks to the other commentors for the qualification of their processes.