I recently came across the following image:
And I thought it greatly sums up the usual problem. Both users and developers think at vastly different levels of abstraction. To the developer the UI is „just another shell“ around the core and most erratic behavior of the UI can easily be explained by the inner workings of another component in the program. To the user, however, the UI is the program. And she just doesn't bother with understanding anything else. For all intents and purposes it's really magic.
Now, above image is a bit small, unfortunately and I didn't find an original creator or a higher-resolution version, so I created a vector version of the image which is attached to this post. Actually, I made two vector versions, one white on black and one black on white, the latter of which should use up substantially less toner when printed:
The font used on the high-res PDFs versions is the free (and pretty) Fontin font.
I attached the Expression Design files as well, if someone wants the „source“ files. The Design and PDF files are released into the public domain by me.