Friday, October 17, 2008

Specifications are hard; seeing things that are not quite right is easy

I've been thinking a lot about client environments as a system integration problem lately. So I'm reading Fowler on Continuous Integration, prompted in no small part by a bookmark from Ben.

There's a ton of great stuff to think about in this article, and this quote isn't the main point by any means - it's an aside, really - but it's SO TRUE! "We've found that it's very hard to specify what you want in advance
and be correct; people find it much easier to see something that's not
quite right and say how it needs to be changed.
"

And here's the thing in context - surrounded by lots of other truth.
One of the most difficult parts of software development is making sure that you build the right software. We've found that it's very hard to specify what you want in advance and be correct; people find it much easier to see something that's not quite right and say how it needs to be changed. Agile development processes explicitly expect and take advantage of this part of human behavior.

To help make this work, anyone involved with a software project should be able to get the latest executable and be able to run it: for demonstrations, exploratory testing, or just to see what changed this week.

Doing this is pretty straightforward: make sure there's a well known place where people can find the latest executable. It may be useful to put several executables in such a store. For the very latest you should put the latest executable to pass the commit tests - such an executable should be pretty stable providing the commit suite is reasonably strong.

If you are following a process with well defined iterations, it's usually wise to also put the end of iteration builds there too. Demonstrations, in particular, need software whose features are familiar, so then it's usually worth sacrificing the very latest for something that the demonstrator knows how to operate.

No comments:

Post a Comment