« May 2008 »
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Where's Dave?
Mobile version


Saturday, 31 May 2008
Agile maturity and metrics
Topic: Agile management

I had an interesting conversation with Al Goerner, a colleague at Valtech, about tracking agile projects. In a presentation, Al recommended tracking separately (a) test coverage, (b) percentage of tests passing, and (c) tests failing that used to pass. I found this strange, since by definition an agile team must have full test coverage (although this may not be 100% LOC coverage literally, due to the way coverage tools work), 100% of tests must pass before the work is deemed "done," and any broken tests must be fixed before the work is deemed "done." I didn't see how the three measures could be separated in a meaningful way, so I asked him what he was trying to achieve.

Al pointed out that many of our engagements are with clients who are at a very early stage of agile adoption. In terms of the agile marathon, they are only now daring to dream of beginning to think about starting to consider the possibility of carefully attempting, in a limited way, some of the practices at maturity level A. Their development teams routinely label code as "done" when it isn't fully covered by tests, when some tests aren't passing, and when previously-passing tests are broken. Their management knows development projects tend to run over cost and time, but they don't know why. The additional metrics are meant to make the causes of cost overruns visible to management and the effects of suboptimal development practices visible to technical staff.

Considering that agile methods are still at an early stage of diffusion — about 12% of companies have experimented with something they label "agile," whatever that means, but on the whole we're stuck at the edge of the chasm — Al is quite right to say most organizations need to see these metrics. Once teams become more comfortable with and more skilled at agile development and they move closer to maturity level B, it should be feasible to reduce the number of categories of measures. When code coverage is normally acceptable and when it is routine for all tests to pass (both new and old tests) before code is deemed "done," then you will know you have achieved a level of maturity that makes some of the additional metrics superfluous. The sooner you can get there, the easier and more valuable your work will become. Until then, it's probably a good idea to make as many issues visible as you can.


Posted by Dave Nicolette at 12:01 AM EDT
Post Comment | View Comments (5) | Permalink

Wednesday, 25 June 2008 - 6:42 PM EDT

Name: "Johan"

I can see how not having 100% test coverage isn't a biggie (or even preferrable in some cases). But having a test suite in which not all tests pass makes the whole test suite completely and utterly useless.

Aside from the TDD design aspec, the point of having a test suite is that you get instant feedback when you break something. Making any change with an already failing test immediately wipes out that benefit, so what would be the point?

Monday, 30 June 2008 - 4:30 PM EDT

Name: dnicolet1
Home Page: http://www.davenicolette.net/agile

Hi Johan,

The points you make are quite right. However, that wasn't the point of the post. I'm sorry I was unclear.

My point is that a mature agile team doesn't need to track passing vs failing tests because they will not go home at the end of the day if there are any failing tests. That is baseline behavior for a team that is applying agile practices rigorously.

The key word here is "mature." A mature team doesn't have to track as many things as an immature team, because the measurements wouldn't tell them anything. A mature team would only have "100% passing," "100% passing," "100% passing." That's not informative, so it's just muda.

My colleague Al was talking about immature agile teams. He was talking about teams in organizations that are only just starting on the agile path. These teams may have to track very, very basic practices explicitly because they are not rigorous about applying those practices. We have to be able to show the team where their problems are so that they can correct the problems. For a team that isn't doing TDD properly, a report of passing vs failing tests does provide useful information, so it's not muda.

My view is that we have to track everything that is necessary, but nothing more than that. It isn't necessary to tell a mature team that their tests are passing because they take care of that on their own. It may be necessary to tell an immature team their tests aren't passing because it gives them a baseline for self-improvement. Once the immature team achieves an appropriate level of discipline, we can stop tracking that particular measure because it ceases to be necessary.

I hope that expresses my intent more clearly.

 

Friday, 11 July 2008 - 8:59 PM EDT

Name: "Daniel"
Home Page: http://littletutorials.com

Johan you nailed it :) I cannot imagine shipping a product when the regresion tests fail.

Friday, 11 July 2008 - 9:15 PM EDT

Name: "Daniel"
Home Page: http://littletutorials.com/

Hi Dave,

There is a narrow edge here. Agile has to be sold to managers but more important to developers. Adding a lot of metrics can be disturbing if it requires lots of things from developers. You don't the new agile methodology to be percieved as mostly paperwork.

On the other hand you are right that tests while run shall provide some kind of report as feedback. I think a better metric is code coverage combined with number of tests. But in the end any metric can be manipulated. The most important thing is education. The right people properly educated can make any process work.

Monday, 14 July 2008 - 10:13 AM EDT

Name: dnicolet1
Home Page: http://www.davenicolette.net/agile

Daniel,

Agreed. In the early stages of agile adoption in any given organization, there are more people who need education than in more-mature organizations. I'm a minimalist when it comes to metrics. My colleague Al wanted to point out to me that in the former situation, we may need to show more metrics than we would in a mature organization, for purposes of educating developers about how effective their methods really are, and educating management about how agile methods deliver value. 

Dave 

View Latest Entries