Monday, July 19, 2010

Knowing there are unknowns

For the past couple of years I have been looking at buying a new house. Well, to be more accurate I was looking at houses built for rabbits, plots of land that look good for vertical face rock climbing, and land-fill sites (that I’m assured by the agent will be much sought after once pigs have flown past it – I’m told that this will happen in the next 12 months or so).

Aside from you having a good chuckle at my foolishness, how is this interesting to anyone? Well it struck me how similar the process is to software development – yes, I find value in the strangest of places.

I (more correctly my wife and I) have some needs and some wishes. Some of the needs are realistic – a few bedrooms, a living room (one would think that these are realistic until you see some houses on the market) - and some not so much. In general most houses are able to tick most, if not all these boxes. The problem comes around to the wishes part. Again, some are realistic – architecturally interesting – and some not so much –affordability often seems to fall into this category. The challenge is that while we think that we have a pretty good idea of what we want, when someone shows us something that they think meets all the criteria, it is only at that point we realize that there may have been a few things that we omitted to detail as deal-breakers. Sound familiar to anyone yet?

The bottom line is that people don’t know what they want, and even if they think they do, it is very likely that they will change their minds. This doesn’t mean that you shouldn’t strive to understand requirements (and confirm this understanding) before starting the project/build, rather it is to point out that if you don’t build flexibility into your thinking, you’re going to get pretty miserable pretty quickly.