Friday, June 08, 2007

Requirements Gathering: 101

... and Piglet said, "if you see what I mean, Pooh," and Pooh said, "It's just what I think myself, Piglet," and Piglet said, "But, on the other hand, Pooh, we must remember," and Pooh said, "Quite true, Piglet, although I had forgotten it for the moment." And then, just as they came to the Six Pine Trees, Pooh looked round to see that nobody else was listening, and said in a very solemn voice: "Piglet, I have decided something." "What have you decided, Pooh?" "I have decided to catch a Heffalump." --Piglet Meets a Heffalump, A. A. Milne.
I have been working on gathering requirements for the last several weeks. Once again, it was may daughter who found the proper reference to frame my experiences. If you were to randomly stick your head into any one of the myriad of meetings I've been in lately it would invariably come to a similar discourse within moments. At least, even if not completely relevant or in the normal conversation flow, a decision is made: "I have decided to catch a Heffalump."

In my career as a software developer I've been the target of criticism for incorrectly implementing a dream set of software in someone's head. If you were to hold up the requirements I was given along side the above paragraph it is likely that the excerpt contained more meaningful statements than the requirements themselves.

For Pooh and Piglet the adventure continues. They start with an Idea and then bat it back and forth until it is deemed a Clever Idea. This is a step that really should be considered more frequently than I have seen. Ideas are wonderful, they bring value to a project at any stage, and they should be given respect.

What is not so wonderful is when an idea is presented as fact. Ideas should never find their way into the process without a proper challenge at any stage; requirements, analysis or implementation. This is not to advocate squaring off in a boxing ring, but a simple idea can turn into a nightmare if not properly analyzed and weighed against the risk involved.

When and idea is conceived, the originator must not feel unappreciated or the idea will either stagnate or slip in under the radar. The recipients of the idea must not discard the idea without proper reasoning or the individual presenting will stop presenting. Recipients must also resist the urge to bless the idea because it is "obviously beneficial," potentially starting down a very slippery slope.

Pooh and Piglet press on, the Very Deep Pit is built, seeded with Pooh's Hunny, and the Trap is set. It is only after implementation, upon waking in the middle of the night, that Pooh realizes he has provided the last of his most valuable resources, his Hunny, to the project and the jar is now sitting at the bottom of the Very Deep Pit.

Unfortunately, this is too true in software development as well. The idea is agreed upon, developed, implemented, and then suddenly the realization of the commitment sinks in. Resources are spent that can not be reclaimed and the risk, not fully understood, comes to show at last.

Hopefully the end for us can be that we learn to use a little more discipline and empathy throughout the development process. The consequences of not learning these lessons can be costly and embarrassing; although we likely will not be found wandering around with a Hunny jar stuck atop our heads.