Saturday, January 15, 2011

Agile and the thorny world of DIY ...

I found reading Agile Testing by Lisa Crispin to be an unusual read.  The concepts of Agile I would agree with to a point, then feel myself wrestling with my own testing experience.  Sometimes enough was enough, and I could not help screaming "you can't do that!!!".  Thankfully I read alone.

It's the areas that produced the most violent reaction that I've tried to revisit.  In psychology Jung says anything that provokes a violent reaction might be too close to comfort.  Or in otherwords "methinks you doth protest too much".

One of the things I find most unnerving about Agile was the idea of process not being central to projects.  "B-b-but process defines everyones responsibilities within the project!"  I spluttered  "And helps to manage and measure it's progress".

Then the book DARED to suggest that testers on an Agile project might not need to log their defects in a defect tracking system.  TOO FAR!  In a huff I put the book down for a week and stomped off.

Was I right?

I had been developing and testing since the 90s.  Back then both activities were very ad-hoc - things went wrong, projects were delivered and failing in the public eye, projects ran hugely overbudget.  Strict processes were brought into add safety gates to software development.  At first they'd feel restrictive, but over time they were just the way you "did" things.

But are strict processes the only way to achieve quality?

It took a bit of home maintenance for me to re-evaluate this.  Thankfully just a piece of decorating (I hate DIY).

Okay, I thought, if I was to decide to redo my living room, how would I go about this?

Everyone has an answer to that question - we all intuitively know how to plan DIY tasks.

But – what is revamping a living room?  It's a project.  And much like any project at work, to achieve its goals it needs planning, design, work doing, and some form of “end points”.

To my surprise, by instincts on running this DIY project were not process driven with restrictive safety points, they were much more Agile in nature.

And so here is my Agile DIY project …

Well first of all I'd come up with a plan with my wife.  She's got to live there after all.  I'd want to paint the walls, and maybe do the ceiling too.  My wife has started to collect all manner of figurines, so maybe some extra shelving would be useful too.

So I'd write a list out on a post-it note, and stick it to my fridge,
Living Room Project

Paint walls
Paint Ceiling
Install shelves 

Right - off I'd go to my local hardware shop, and buy several tester pots, which I'd paint on the walls in sample spots.  I've a leather couch and dark wood furniture, so the ultramarine blue doesn’t work well, but the burnt umber I could go with.  Wife doesn't like it though, preferring the autumn sunset.

I put a paint chart on your fridge, with the shade of autumn sunset you want circled.  However there's a problem at the hardware store – autumn sunset was a limited edition, and I can only buy 10 litres, and I need at least 20.  Consulting with my wife we do the testers pots again, this time going for terracotta.

I put the first couple of coats of paint up on the walls overnight.  But come the morning, my wife realises there are parts I’ve missed.  Unfortunately I don’t have time to do them now as I'm off to work.  So I put some post-it notes on the places that are a bit bald, and put another post-it on the fridge saying,

Don’t Forget

Repaint the bald spots on living room walls! 

Sure enough that night, I see the note on the fridge, load up the roller, and using the post-it guides, cover those areas I missed.

Job done, the post-its go in the bin – I don’t need them now, as I've addressed them.

On my fridge list of things to do I can cross out the entry for painting the walls,

Living Room Project
Paint walls
Paint Ceiling
Install shelves

And heck after all that I hope there's a beer in the fridge for me.

So what have I done?

In many respects, I’ve managed the painting of my living room in an Agile manner.  It’s almost second nature isn’t it? 

At no point did I feel the need to write up a document about what I wanted to do, formally agreeing ahead of time what colours and shades I wanted before even picked up a paintbrush to do tester pots?

Did I need to put this document through several reviews before finally getting my wife to sign off?  No doubt there's many a married man who's wished they had.

No – taking on this kind of project you have a broad plan of what you want, and change things (like trying tester pots before committing to painting the rest of the room), and highlighting faults as you go along.

If I had agreed a colour in a formal plan, then at the end of painting we might not have liked the finished product, deciding to repaint the whole thing a different colour, adding time, delays and cost. 

So at the end of the day, I'm feeling quite happy that my DIY project is a good example of intuitive Agile project management.

But is it?  How can I be sure?

Well … you know those fundamentals of the Agile Manefesto – lets take another look at each one …

Individuals and interactions over processes and tools

Okay – well I didn't really follow a formal process.  Did I?  Well maybe in a way – if you sand down a wall, undercoat it, wait for the paint to dry, paint your first coat, then wait for it to dry and reapply – I guess it's kind of a process.

But the important thing was we weren't slaves to the process.  Whilst doing the tester pots we weren't saying “well we really should be applying the first coat by now”.

Also there were no safety gates in this.  If I'd have become disillusioned, I could have walked away, and left it part done for another day.  Or worse still have said it was done when there were some missed patches.

This would have left me with a very disgruntled customer – and as this customer was my wife, this would not be a good thing.

The system really relied on me finishing what I'd start, and want to do a good job.  In the office world, this is called professionalism.

Working software over comprehensive documentation

Ahem – okay so no software here.  But at the end of the day, a nicely painted living room (the product) had more value for my wife than a cunning plan from me and a lot of razzle dazzle slideshows and documents.

Customer collaboration over contract negotiation

It was easier to have my wife adding comments, correcting mistakes, and choosing preferences as I went along than waiting to the end and me saying “well this is what you asked for”.

Responding to change over following a plan

We wanted autumn sunset as a paint colour – but they didn't have it.  So we went for something as close as possible after re-evaluating our options.

So was it Agile?  In my book yessireee!

In fact I shared it with an Agile guru at work - and they loved the idea.  But not to be outdone, they had a few more ideas to make it better!

Steps to achieve even more Agile DIY!

  • Get my wife to check the paint colour early on after the first coat of paint - just in case!
  • Teach my wife how to paint, investing in a second roller and extra brushes. The painting will get done quicker.
  • Have a retrospective and decide that painting in the dark is a bad idea. Decide to paint in daylight next time, or buy a high-powered light to provide continuous illumination.

1 comment:

  1. A good blog with food for thought. I believe planning is very important but documentation should be light-weight and changing as you learn more about what you are testing or the requirements. You should document at the level this is helpful. (This is my own personal opinion.) Based upon this blog, a checklist that changes over time based upon what is learned works very well.

    If I think about this example from remodeling a kitchen my planning would be different as changing a decision after it was implemented would be costly. My plan or requirements will change from what I want to what I can afford as reality sets in on the expenses. I can see the requirements evolving as I learn more from experts and my own research. My testing could include bringing hardware and color samples of what must be matched within my house. From a bigger picture I need to envision how the changes will impact the surrounding rooms. I want to make sure the new look flows properly into the other rooms. I may bring in a designer to help bring the pieces together.

    I see my requirements and testing evolving as I learn. My plan or checklist might be a tad longer to manage the risk of the money I am spending. I might have a list of questions to ask the experts and to compare prices. I would imagine a checklist of "don't forget these things" such as identifying hidden costs.

    But even with a higher-risk project due to cost my planning would still be light-weight and would change as I learn more. I would not try to capture everything in a plan at the start.