Back when I worked at Qualcomm, and previously Trigenix, I spent most of my time working on mobile phone UIs, or more specifically on uiOne and its earlier incarnations, a tool making it much easier to implement a mobile UI from scratch. As a matter of necessity, we spent a lot of time looking at UIs on embedded systems. I could go on, at length, about some appalling examples of usability, but that's a topic for another day. The question is, what makes a good UI? Why is one application awesome when others are terrible?
Joel Spolsky makes a very good point about this. Don't Surprise the User. Well, I paraphrase. What he actually said was 'A user interface is well-designed when the program behaves exactly how the user thought it would'.
So what does that mean? An article I came across at Mobile Jones has good things to say about Shozu. Shozu is a photo upload (among other things) application that runs on a number of clients. Of necessity, it uses the network a lot, and it takes note of the roaming status. If you are currently uploading a photo, or downloading a ZuCast (Shozu's term for a podcast), and you move into a roaming area, Shozu will detect this, pause the transfer, and tell you that it has done so, and that it will resume automatically when you cease roaming. This, I think you'll agree, is a bit surprising. On the other hand, it's a whole lot less surprising for the user than receiving a phone bill with a £20 roaming charge. Don't Surprise The User.