Watching different people use software is fascinating to me. My mind works a lot differently than Average-Joe's does when it comes to using software so seeing how people interact with software is really intriguing to me.
The Post Office Lady
I was just at the post office and this old lady in front of me was trying to buy a shipping label for her package. This is a very easy thing to do. There are lots of instructions, big buttons, and even instructional videos to help you if you want.
After two tries she gave up and went to go stand in the super long line to get someone to help her. (Why are the lines always stupid long in post offices? It was 2:30 in the afternoon. Why is there a line?)
She put her card into the machine when she started and then pulled it out when it told her to swipe it. It gave her a message saying please swipe it again, but I guess she thought that she had to start over and left. The other time, the machine wanted her to input the dimensions of her package and she couldn't figure out that there was a third dimension (height) to her package even thought the instructions were quite clear on the screen (there was even a picture of the box with arrows).
My guess as to why she had such problems with the system are that she has a preconceived idea of how the machine worked and when it didn't work the way she expected she figured it was broken or she wasn't smart enough to use it. That, or she just didn't understand the instructions for whatever reason, although they were very straight forward.
It is interesting to me that no matter how well you design software to be useable, some people will not be able to use it. As a developer, I don't know what to do to solve this problem. I want everyone to be able to use my software. Granted, no old people are going to use Countdown Maker, but regardless, I want them to be super easy to use.
The Other Side
The other side of all of this is OmniFocus. OmniFocus is unlike any other app I've used. The table view in it is completely custom and doesn't behave like I'd expect, they don't use any real world metaphors for their UI, and if you didn't understand GTD principals, you would be 100% confused (as I was).
The only way I was able to use this app was to watch their screen casts. After watching their screen casts, I know exactly how to use the app and I felt like a pro. This was very interesting to me as a developer. They threw out almost everything and started over. They wanted you to forget how to use software and do it their way.
I don't this this is the solution by any means, but it was very interesting to me. (I use The Hit List anyway. It's pretty.)
Well I intend to keep making software so the old lady can use it, or at least try. If she really wanted to get her package shipped, I think she could have done it. Everything she need was spelled out for her. If I am making a pro app (think Photoshop or Final Cut) then I would go more the other side approach. I want to optimize the software for people that know how to use it instead of teaching people to use it.
I think the sweet spot is finding a balance of these two. Make the stuff people wouldn't understand more out of the way and make everything on the surface feel easy so the user can choose which path to take.