Monday, January 31, 2011

When “done” doesn't mean “ready”

Picking up a bit from yesterdays lament how in some companies the “unit test” is becoming a dying art on some software projects.

My original feeling – having worked on two projects now which called themselves “Agile” - was that Agile was a dangerous methodology indeed.  Many developers were building a kind of Kanban board with areas to show phases of development which included “Not started”, “Design”, “Coding”, “Done”.

And away they'd report to the project manager “oh yes this module is DONE”.  And so the project manager would come over to me as head of testing and it'd feel like we were put on the spot.

Because the developers version of “done” meant “finished writing coding” - it did not mean “unit tested”, “integrated into test environment” or even “ready for system testing”.

[It took Lisa Crispins book on Agile Testing to teach me that the aim of Agile development was to “bake in testing” and to test early and often]

I know from my own experience that code is just a lot of strange punctuation until you try and make it do something.  Saying code is “done” without executing it (ie testing) is like making a new recipe for a cake, baking it, but not really eating it to see if it's any good.

Mmmm – delicious cake!

I think one of the problems is Agile encourages people to adopt a “framework” and not a “rigid process”, and it means some people who say they're adopting Agile are really perhaps cutting things too far.

The way I see it – you have a process in place, and you have to look through it, and work out which elements add value, and need to be kept, and which are just unneeded overhead which add nothing.  And whatever we're using - Waterfall or Agile we need to be sure to try and strip down what we do, but be vigilant to keep the things that are adding value.

It would be a brave developer to tell me that testing does not add value to code, or that unit tests have never shown problems the developer did not foresee.

So developers beware – whether it's “Agile”, “waterfall” or “v-model”, your code is not “done” until it's “tested” ...

Erm not that I see developers as "the enemy", I just think some adopting Agile or whatever need to see the "bigger picture" of software development, and not just the coding segment.

No comments:

Post a Comment