Wednesday, March 14, 2007

Be aware of methodology!

Real world story:

These days I spend my weekends in working with my builder to build my dream home. Last weekend he asked me
" This is the thermal specification sheet and you need to fill in and get back to me by next weekend. In it you will be specifying wheather you prefer dark, medium or light colors for your external roof and walls."

I was a bit surprised" Well, my understanding was to decide about the colors at a later stage as we are still 4 months away from starting construction. "

"First you need to decide about intensity not actual colors, and second it is a council's requirement for approving the plans so we can't do much"

"What if I change my mind later on?" I was a bit confused and thought how could I decide about intensity without deciding the colors

" I do not suggest this as then we will have to go back to Council and it will require few weeks to get the change approved and it will cost you a lot" Builder was quite straightforward

"hmm, ok, so if this is the process then it means I will have to do it"

Next week I faxed the specification sheet back to the builder and made up my mind that this is it, good or bad , I will have to live with it.

Moral of the story:

That experience made me think about the way we develop software (with whatever agile or fragile methodology). In my job, I play the role of the builder for my clients. The thing that I learn from this is that beside training your team on the develpoment methodology it is equally important that you do the same for your client. Clients or users come to us with the dreams of the software and being human they keep on changing their minds. It is our job to show them the real world picture and we shouldn't be too late in doing that.

In the above example I might not agree with the process (deciding intensity without deciding colors!) but still I accepted it as a fact and worked to minimise the impact.

In software world, having some agile methodology to cater for the on going changes is good but there are some limits. We need to clearly communicate to our client/user the trade-offs, flexibility/rigidness of the processes, timings of the key decisions , impact of making changes at later stage, associated costs, etc.

A number of times our relationship with our clietns turn bitter only becuase we fail to communicate all of that to them in timely manner and thus turn their dream into a nightmare. I have experienced that it becomes easier to work with users if we had already informed them about what they could do and couldn't.

I feel confident now that I will be able to get my home built on time and with in budget becuase of having a straight forward builder who is making things crystal clear to me (well, I hope :) )