It is well understood by software developers and customer support staff that you really need to get the details about a reported problem to be able to find the problem and correct it. We ask all sorts of strange questions that I’m sure the client does not expect. After all, you built the product, why don’t you just “fix it?” Why ask so many basic questions?
The reason is that you really need to understand exactly what the client is seeing. What did they do that led to the problem? What are the exact sequence of events? What is the exact message? How often does the problem occur? Have you figured out a way around the problem?
I recently had an experience that drove this home to me. The incident is totally unrelated to software, but I think you’ll see the connection. You would think I would know better, but let me tell you what happened.
My daughter took a friend for a photo shoot, she has been doing senior pictures for some of her friends, and doing it quite well I might add. This particular boy wanted some pictures taken at the soccer field since he plays soccer, so they went to a soccer field not far from our house. During the course of the photo shoot he did what soccer players do and gave the soccer ball that he was using for a prop a good kick toward a practice backstop. The ball sailed over the backstop into a hillside that is covered in some of the densest jungle that I have ever encountered (as will become clear soon). Photo shoot over!
They weren’t dressed for a jungle expedition and they looked for the ball for a few minutes, but soon gave up to try again another day. They came home and I heard the story from my daughters.
Being the man of the house and not wanting to have a soccer ball lost forever, even if it wasn’t mine, I offered to go find it. I had jeans on and it seemed like it wouldn’t be that big of a deal. They told me approximately where the ball should be and off I went to do the heroic deed of returning the lost soccer ball.
Well, I was in for a surprise. As I said, the place where the ball left the playing field was very thick jungle, low growing brush with branches all intertwined. Tall trees that blocked out the sun. Vines growing up trees and everywhere else. I looked for poison ivy and didn’t see anything that looked like that to me, so I dove into the situation. I was looking for a soccer ball, not a golf ball, so how hard could this be? Well, pretty hard it turns out.
I searched for 45 minutes (I did find 3 golf balls by the way) and never found the ball. I struggled through the brush, eventually breaking off a branch to use as a tool to knock back the vines. I crawled, I climbed, I eventually walked around the hillside and came in from the top. I tried to the left, I tried to the right. I looked in the tops of bushes, I looked under the brush. I tried to consider where the ball might have bounced (how it could have bounced I don’t know).
I realized there were a lot of questions I didn’t have the answers to. How hard had he kicked the ball? How high was it when it went over the backstop? Did it make any sounds when it hit? Did they hear it bouncing around after it entered the jungle? Where had they looked? I was by myself so I didn’t have any way to answer those questions.
Well, I returned home unsuccessful, but undefeated. Two days later I told my daughter she was coming with me, we were going to get the ball. I got a couple of metal rods to use as tools, I took pruning shears and a hatchet to cut through the jungle. I also got a flashlight or two so that I could see better in the dark underbrush. I put on a long sleeve shirt so that I didn’t have to worry about being scratched by the branches and some thorns. I put on hiking boots so that I would have less chance of being injured moving around there.
We arrived at the field and I asked my daughter where the ball had gone over. Right here – where I had understood from our conversation before. How high was it? Not very it turns out (I had thought the ball was deeper in the jungle – interesting). Had they heard a sound? Yes, not much, but it seemed close to the edge of the jungle? (Hadn’t expected that.) Where had they looked? Well, right in this area because they thought it hit in this tree.
So, before I got the tools out and started destroying jungle (I didn’t really want the environmentalists after me anyway) I stepped under the tree and began to look around. There was a good chance the ball had gotten stuck in the branches of the tree or the bushes that were under the tree.
Sure enough, there it was, lodged in a tree branch almost within reach without even entering the jungle. It was hard to spot, but it was right there. I switched sides and reached in and pulled it out. Within 5 minutes we were headed for home – victors.
If only I had gotten that information originally, I could have saved 45 minutes of some of the worst searching conditions I have endured for a while.
I was once again reminded that it pays to get the details before you dig into a problem. That is the way software support is as well. We need to ask those questions of the the person reporting the problem. As engineers, we are all too often ready to jump in and start searching for the answer, when the answer really comes from having all of the information and taking a few minutes to think about what the probably cause is.
I have seen that happen many times. You spend a lot of time looking through code, trying to find where the bug is and you can’t. Then you stop and discuss it with others and you talk about all that you know about the issue. You talk about exactly how the product works without looking at the code. Where could the problem be? Someone will say, “Oh, it has to be in this module because after the user does such and such, it will be processed in this way and then we will write an update to the database. That must be the problem.”
Sure enough, 15 minutes later you are looking at the line of code that is incorrect. It saves a lot of time. The same advice as last time – “think first.” If you know where to look and what you are looking for, it is often pretty easy to find what you are trying to find. Make sure that you ask the customer exactly what they experienced. Get the facts first, then start searching.