Sunday, June 13, 2010

Requirements and Presumptions

A common theme at conferences and workshops is "tell a story" - so here we go.

Once upon a time, there was a software project. This project had a variety of components, some were better understood than others. As sometimes happens, information was presented decisions were made in discussions where not all the interested parties are present. In this case, the testers were wrapping up another project and others involved in this one made the decision that testers weren't really "needed" yet.

So, life went on. The testers finished their project. They were given copies of the documents that had been prepared on this project. So they read the documents and worked on their own documents, like test plans and test cases. More meetings happened and conversations happened and emails were sent and read and replied to (well, were certainly replied to, maybe they were read by everyone.) Some of these had everyone present or copied or included, and some did not.

When the intrepid testing folks compared notes on an item described in the requirements documentation, they realized their understanding on did not match. No problem! They asked the tech lead to clarify what the correct interpretation should be. The answer? Neither was correct. And he explained why.

He then decided to verify what he had reported and brought the question to the business experts. Their answer consisted of "Well, everyone knows what that means..." and then they realized they each "business expert" had a different understanding of this very, basic element of their requirements.

No one had thought to define the terms. Then, to make it worse, no one had asked what the terms meant. It is possible that each participant believed they shared a common understanding. However, no one made sure that was the case.

I was not part of this project. It strikes me that most people fall into this trap at least once. Sometimes, twice.

Always question your unquestionable facts. They may not be as factual as you presume.

Monday, June 7, 2010

Stawberry Testing Fields

Yesterday I wrote about the garden. We really have a nice one. I learn a lot working in it.

There is a rhythm in gardening that simply can't be ignored. Brute force and frantic bursts of energy don't get you much. Patience is good, and persistence.

Strawberries are coming in right now. We picked the first two this past Thursday. More were ripe on Friday. Saturday there were more. Last night I picked a couple of pints of berries. We have enough on the vine to have a fair crop of berries this year.

This is great, because we put in a new strawberry patch last year, replacing the old one. Its not huge, around 6 feet long, semi-circular, around 3 or 4 feet wide at its widest point. The old one was huge for a city lot. Almost 20'x20'. Unfortunately, when the new driveway was put in, the berry patch had to go. We did move the topsoil to a great location. This had been worked and improved for many, many years and was fantastic for growing things.

Last year, we planted tomatoes in that soil, as we had the year before. Oops. No tomatoes there this year thanks to the blight.

BUT - the new strawberry patch is doing extremely well.

As I was picking berries last night, my dear lady-wife made the observation that sometimes beautiful ripe berries will "hide" under the leaves or tucked out of the way. So, as I was carefully going through picking what I could find, it dawned on me that shifting leaves and plants may help, or may not.

Something struck me though. As I was working in one area, I looked over toward where I had just been working, I saw three lovely ripe berries - right where I had decided I had found everything that was ripe and moved on.

In shifting my view, my perspective, I found three berries where a moment before I absolutely "knew" there were none ripe.

It dawned on me then and there, that the challenge in finding bugs is overcoming our own solid "knowing" that we have finished. If you change your perspective, and look again, are you still finished?

Does this shift in perspective reveal you things you did not know? Are there items you may not have considered? In shifting your view do you find bugs you would have missed?


We have a fairly large garden. Actually, my lady-wife has a large garden and I'm the helper. This works out pretty well for both of us. She gets more work done than she could do herself, and I get something interesting that can sometimes be missing when working in some software shops: a specific, tangible result from your efforts.

In some places I've worked, projects are never really "done." You finish one project and the next is, well, more modifications to the same application. The result is, you are never really "done."

Gardening isn't like that. You work for four or five, or more, hours in a day and you can see what you have accomplished. You can see clearly defined areas without weeds, flowers, maybe vegetables, but always something you can look at and say "I did that today."

This weekend was a great example. Saturday morning there were some big, ugly nasty weeds growing along the fenceline, near where the vegetable garden goes. We got well over half of the weeds dug or pulled. By the time we had made it that far, the sun was pretty hot, so work shifted to a shady area in another part of the year. While we did not finish that portion on Saturday, the work that remains can be finished in another good day's work. The list is fairly simple: finish pulling the weeds; till the garden; hoe it back into rows. Then we can plant again.

Last year's rows are still visible. This is part of the garden's version of a "legacy" system. The footprint of last year is there. The problem is, sometimes that can make more work.

Where we are, and a fair portion of the state and region, tomatoes had a blight last year. This was a fungal infection, related to the same blight that caused the potato famine in Ireland in the 1840's. The relationship is the spores from the fungus. Because the spores are found where the plants were last year, there is a problem with the "legacy system" - we can't put the tomatoes where we have in the past. We also need to get them as far away from where they had been as we can get them.

The solution was pretty simple. Spores are contained in the ground. To keep the tomatoes from getting blight keep them from coming in contact with the spores. So, as with most of the really good ideas in the garden - well, all of them, my lady-wife came up with a solution. Pots. Lots of pots. Large pots. Lots of very large pots. In a sunny spot with no contact with the soil that may have blight spores. The top of the driveway, of course. Hot and sunny, good for tomatoes. Near the rain barrels so easy watering. Tomatoes like a lot of water, so this is good for both them and us.

Moral of the story? Just because you've "always done things this way," does not mean that another is available - particularly if the solution presents itself.

Have you ever noticed that the solution "presenting itself" usually happens when you need to completely change the rules? How often can we make the rules change in what we do with software? Beets me. Lettuce try.