Measuring Development Speed

We’re rewriting the Mifos front-end from Struts 1.0/JSP to SpringMVC/Freemarker. So far it’s been slow going, so we’re trying out several experiments to speed up the process.

I think it’s important to measure the impact of our improvements. I want to know: are we moving faster? Is product quality flourishing? Can we say so quantitatively? The last bit has been the most elusive. It’s like measuring how useful a painting is!

Still, here are some measures which we hope will eventually show how much the improvements are or are not helping. Right now we’re just establishing baseline data.

The red line in the graph represents legacy front-end code that will eventually disappear. The green line is new code, but it really doesn’t matter.

From the chart data, we can say the following by measuring deltas between points: the most dramatic change in Struts/jsp LOC was 4380, for the time period ending Aug 2010.  The most dramatic change in SpringMVC/ftl LOC was 3665, for the time period ending Sep 2010.

Assumptions:

  • these data are not useful for estimating speed of future refactoring work
  • all acceptance tests pass in refactored areas
  • look & feel of refactored areas is acceptable

The 2nd & third bullets are a bit vague. To address this shortfall, we’ll measure the following aspects of quality:

  1. Time spent modifying CreateSavingsAccountTest.
  2. Number of issues (regressions) caught during CSS walk through.
  3. Number of layout or functional bugs logged during testing phase (missed during walk through).
  4. Time spent by QA manually testing the feature, including logging issues and retesting bugs fixes.

Finally, developers should know if things are better. This is the most qualitative and possibly the most important “measure”! Certainly, for the migration of our codebase from svn to git, it was the only measure we used, and it was enough.

Thoughts/comments/feedback are appreciated. I’d rather have some kind of simpler measure, like “x increased by 250%”. Do you know of any more effective (and hopefully simpler) means of measuring development speed?

I used gnuplot to generate the graph. Here’s the source.