I've for quite some time been wanting to write a post about a phenomenon I've encountered numerous times, and now I finally persuade myself to put my thoughts down in words. Let's for now just refer to the phenomenon as "Black Box of Mystery" (BBM).
It's a well known fact in the world of computer-human interaction that a lot of usability problems arise when the mental models in the user interface doesn't match the mental models of the user. Then the software seizes to be intuitive and the users stop using it (or at least they'll hate using it). Put in other words, a user interface should behave as if it is what the user thinks it is. So far so good. But now the problems starts pouring in. For users might be at different levels of knowledge and hence have different mental models. And what about that software thats just too complex to be understood?
I have some examples of how people react to BBMs.
When I sit in my car and turn on the wheel, it fits my mental model perfectly that the wheels start turning, and if I'm driving the car will begin to turn. The steering wheel is at least a part of my car thats not a BBM (several other parts are).
In my car I also have a navigator. It would have been a scary BBM to me before I learned about shortest path algorithms and GPS. Now I've luckily learned to accept it, but it did take some adaptations of my mental model. My wife on the other hand doesn't care how it works. She has accepted that it's a black box and just has full faith in it's working. I have tried to ask her how she thinks it can decide on good instructions for her to find home - her answer was simple "well..it's has a GPS so it knows where I live". I suppose her answer is correct in a way.
My beloved grandmother had a TV, and although she spend most of her time watching it she also claimed to hate it. She was afraid of it - cause she didn't understand it. To her it was one big BBM, and she certainly didn't appreciate the fact that she didn't know how all the little people had gotten inside it. She always needed help to tune it to the right channels, and if it was moved and a cable fell out, she'd call somebody to fix it, terrified of touching the thing herself.
I feel the same way about BBMs I encounter in my daily life. Like the SqlAdapter in the .NET framework. I know Microsoft wants me to use it to connect my datasets to my sql-server, but I don't trust it. It's totally a BBM to me and I'd always prefer to use SqlCommands instead, cause they fit my mental model more. They do what I tell them to, when I tell them to do it - and I can fully understand their purpose.
I guess thats something really tricky when you develop API's and frameworks. It's quite difficult to know the domain knowledge level at all users and hence it can be tricky to match their mental models without making BBMs for some of them.
As a part of MondoSearch we had a similar problem. When we first started making .NET API's to the search engine we faced the problem that all the users implementing it was webmasters with little or no .NET / programming knowledge.
In spite of coding examples and lots of guidelines and manuals our support was flooded with problems caused by bad/wrong code.
Something had to be done so we decided to make a SearchControl that could be put on aspx pages that handled all the typical logic related to having a search and result-page, code that was typically error-prone. Stuff like recreating a search upon postback, navigating in search results, narrowing the search, connecting to underlying search-API and so on.
When we released the SearchControl the non-developers like webmasters and supporters liked it instantly because it empowered them to do a lot of things they would have given up on doing before. But then our audience changed. The world had accepted .NET and that making a web-site was a joint developer/graphical designer/webmaster/??? task and all of a sudden we had developers getting annoyed with our Search Control. Why? Because to them it was a BBM that they didn't dare to use...
We soon after released a web-service that rendered a pretty clean code-wise access to all the search functionality. Today we maintain both interfaces and are in fact trying to adjust the SearchControl to be more "developer-friendly" by making it's actions and functionality more controllable and transparent.
But all in all I guess it helped me to learn a little lesson about Black boxes and their effects on people.