08.20.09

Big spikes in velocity should tell you something

Posted in agile at 12:42 pm by karl

I posted something here at the start of my last agile project. I meant to follow it up but didn’t get around to it. Bad me. Anyway, it was a 10-iteration project that had the following velocities:

velocities for 10-iteration project

As you can see, there was a big spike around iterations 5 and 6 and a trough in iteration 9. The dip in iteration 9 was caused by paying off technical debt and resolving some deployment issues we hadn’t originally budgeted for. I hadn’t thought too much about what caused the surge in velocity around the middle of the project. At the time the attitude was “we’re going really fast, let’s just keep doing what we’re doing”. In hindsight I think the spike in velocity should have raised an alarm bell. Here’s why…

I am now working on a new project that reuses some of the work we did previously. Alas I have discovered that some of the code requires extensive refactoring. The current implementation of some features is both fragile and incomprehensible. There are methods that are hundreds of lines long (!) with no comments. There is hand-rolled code that duplicates the intent of library functions. Some functionality is poorly encapsulated and thus not reusable. All the usual suspects! SVN tells me that this code was committed when? That’s right, iterations 5 and 6 of the last project. It seems our gains in velocity came at the cost of maintainability.

All it not lost: the old code has pretty decent  test coverage, so at least the refactoring effort isn’t working blind. That said, I think our iteration retrospectives will in future check our velocity against our historical performance.  Up till now we’ve been pretty good at identifying the causes of slow iterations - from now on we’ll be having a look at what a fast iteration velocity is masking beneath the surface.

03.12.09

callables in django URLconfs and dispatch by HTTP verb

Posted in Web authoring, python at 11:57 am by karl

02.12.09

Changing DocumentRoot in Apache: files, directories and permissions

Posted in Web authoring, linux at 6:48 pm by karl

01.27.09

Using javascript to change img src attribute, far-future Expires headers and cacheing

Posted in Web authoring, javascript at 11:36 pm by karl

01.15.09

starting a new project: weighing up agile methods

Posted in process, agile at 11:54 am by karl

12.12.08

django’s O/R mapper, list comprehensions and lambda functions

Posted in python at 11:35 am by karl

08.28.08

pymssql - connecting to sql server using python on *NIX

Posted in python, linux at 4:05 pm by karl

08.18.08

Installing mod_python on 64-bit redhat ES 4

Posted in Web authoring, python, linux at 10:29 am by karl

08.08.08

$(), python/cheetah and javascript/prototype

Posted in Web authoring, javascript, python at 10:06 am by karl

08.04.08

apache 2/mod_python on OS X

Posted in Web authoring, scripting, python at 3:12 pm by karl

« Previous entries