Getting Gas

Published 13 May 08 09:03 PM | carlcs 
 

I'm not much of a UI guy. I've spent my entire time at Microsoft working on servers of one sort or another. I learned a ton about UI design back when I was on the Terminal Services team helping out the http://www.mesh.com guys on their live remote desktop feature, but I was definitely learning more than contributing. My current gig on the Essential Business Server team has also made me think more about UI and user experience in general than I have on other server teams. But despite this lack of background,  today I got bit by a UI problematic enough to gestate into a blog post.

 

Today the ants started to march. Normally that's not so bad, but for some reason they decided that our kitchen was a particularly good place to march. I didn't appreciate that so much. So off I went to Home Depot to get some ant poison. As long as I was going, I took an empty propane tank to exchange. That's where the fun begins.

 

Our local Home Depot uses an automated tank exchange. I like self-serve options. But this one was a bit problematic. Basically there is a couple of rows of cages each of which houses a full (or possibly empty) propane tank. You go to a console where you swipe your card and select whether you ware making an exchange or getting a new tank. I had an exchange.

 

Here's what is supposed to happen in the 'happy day' scenario. If you have an exchange, the system finds an empty cage for you and opens it. You put your empty tank into the cage and close the door. Then the system opens a second door that contains a full tank. You take the tank, close the door, and go about your business.

 

But that's only if it works.

 

In my case, after I swiped my card, it told me to 'put your tank in cage #36.' Unfortunately, cage #36 was securely locked. There was a failure somewhere in the system. But the real problem was that there was nothing else I could do. I couldn't tell the computer that it was locked or to try another cage. I just stood there. I looked around for an employee, but it was one of the first nice weekends of the year and the home and garden area was hopping. Besides, I was in the middle of transaction and had just swiped my card, so I didn't want to go too far away. Eventually it timed out and said "do you want to open the cage again?" Evidently it was concerned about how long I took and offered some corrective action. Good. The time-out was very long, about five minutes, but I was willing to give it another shot. Who knows? Maybe it hadn't really tried the last time.

 

I pushed the 'yes' button. Nothing happened. I waited another five minutes. During my wait I thought about where the problem might be. I noticed that the doors were spring loaded. Presumably when they were unlocked they would just pop open by themselves. Perhaps cage #36 wasn't loaded enough and if I just pulled a bit during the time it was supposed to be opening, it might just work. Besides I'm not sure what would happen if I said 'no.'  Would it void the transaction or keep my money because I refused to give it a tank for exchange? In any case, I tried again, but pulling didn't work. I waited another five minutes. By this point I had lost fifteen minutes and was thoroughly frustrated. I pressed the 'no' button. Please don't try to open the cage again. The system properly voided my transaction and bid me adieu.

 

But somehow I couldn't leave it alone.  I have a lot of trouble just walking away from a bug. I thought perhaps after the transaction failed it would realize that cage #36 was causing problems and try a different cage. Nope. Another five minutes burned.

 

I'll have to admit, this was the second time I used this system. The first time I was able to deposit the empty tank, and the door opened for the new tank. But my six-year-old daughter saw the door open and closed it. I wasn't watching but the screen asked if it should open the cage again. I said no, and it dutifully left the tank locked and charged me money. Since I was out an empty tank as well as the cost of a refill, I had to track down an employee. I got a propane tank, but only because I found a good employee.  The only 'proof' I had of my problem was a completed receipt that said I had successfully completed my purchase.

 

I think main lesson to take from this example is that true end to end scenario development is much more than the easy 'happy day' flow. It also needs to encompass failures, confused users, and meddling Kindergarteners. If dependent systems always worked and users always understood what to do, our jobs would be much easier. But the real world just doesn't work that way.

 

Anyway, I left with ant poison and my original empty tank.

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# some one said on May 13, 2008 5:31 PM:

I find at times testing is done in a controlled environment. You hire testers and pay them to test in a particular way. Not to test outside the box or to use things in way it was not intended to be used. Maybe they did not test the things you ran into because they thought it was not going to be used that way (a kid closing the door). I know there are open public beta testing but not for all things.

I find more and more that once a project is done (hardware or software) we need to get someone who has no knowledge of what it is. It is more like a volenteer type isolated yet controlled environment.

Instead of hiring 10 testers and telling them what to do. Hire 10 people give them the product and tell them nothing other than what the end user would see.

The minute the tester needs help or is confused then that is where the product needs help. Instead we think the end users needs help and instructions. We think the product is correct the user is not.

You point out two Use Case scenerios that could have but where not done in the controlled test environment. Why, more than likely the way it was used was wrong. But come on a simple test that the cage did not open should have been caught.

# JSanders said on May 14, 2008 10:22 AM:

I've had a similar experience at our local Home Despot, and seems as if it were the worst case scenario.

This prior Summer, we were experiencing some storms, but I had the grill going anyway. I ran out of propane, and went to make the swap. After swiping my card, I was instructed to deposit the empty tank and close the door. As I did, the UI indicated that it was weighing tank and selecting a new tank.

Now I'm a proponent of redundancy and failover, but never moreso after the power went out at the Home Depot at that second, and came back on 20 seconds later. My empty tank was securely locked up. My new tank was then secured as well. The local OS had reboot. No copy of the transaction had been logged to me on paper as proof.

After some two hours of haggling with the clerks, and then having to go to the security center (which had videotaped the ordeal) some 10 miles away to demonstrate what had happened, I was given a new tank.

Of course the credit card transaction had succeeded, but not the tank exchange. Where was that call to Rollback() ?

Likely not a scenario that the devs of the system had envisioned, but quite an easy one to REPRO.

Leave a Comment

(required) 
(optional)
(required) 

About carlcs

I've been working at Microsoft since the beginning of 1998. I have been both a developer and a program manager and have worked on COM+, Enterprise Scalability, Core File Services, and Terminal Services. I am currently a program manager on the Windows Essential Business Server team.
Page view tracker