I want to show you an example where expecting a user to learn a system is not only frustrating to the user but also a waste of time and wrong-headed, and thus a poor design decision. I'm not using this to refute the comment left on the other post; the situations are not parallel. But this example has bugged me for the longest time, and now is a good chance to gripe about it.
I'd like to show a problem I've found with Android file managers.
There are dozens of basic file managers for Android, and some of them share a flaw. They show a perfect graphic representation of the folder structure for whatever Android device they're running on. That folder structure looks like Linux, and that's a problem.
The flaw is that they assume that the user knows the basic file structure for Linux. For example, the SD card is located in a specific sub-sub-folder from the root directory. The internal Flash or HD is located in another sub-folder. I don't know where they are located, nor does the average user.
Do you really expect a user to have to learn this stuff just to move files around? I don't. Frankly, it's a waste of my time. I want to get work done. Okay, this isn't a very difficult thing to learn, but I don't use Linux that much. I don't want to have to dredge the depths of my memory just so I can find the SD card.
Fortunately, there is a better way. Some file managers disguise the folder structure of Android with an extra interface layer that lets users find the SD card, Flash storage, or HD without having to go digging.
It's a pity more app developers don't think of these kind of things. They're supposed to design an interface that is familiar to users, not force users to learn their new one. And yes, that is a rule of interface design.