Getting Gas
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.
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.