We all build mental models around the things we see. If something is complex, the mental model helps us to understand how to use the thing. Computing is complex. We can easily handle our tasks in a complex environment if our mental model matches the actual model that lies behind the task. If the models differ, we are in trouble.
Currently, I have to deal with IP settings of a network card. My mental model is based on the knowledge I build up using several unixoid operating systems. I can boil it down to the following:
Your computer has one or more network adapters.
You assign the IP address settings to one of these adapters.
As long as the adapter is available, the IP address is reachable from your computer.
If you connect the adapter to another computer (direct or via a network), you can reach out to other computers, others can reach you.
This model is as simple as: You pair the adapter with the IP address, everyone connected to the adapter can talk to this IP. (Ignoring firewalls etc.)
Now let’s have a look at the Windows way of life:
Your computer has an ethernet adapter build in. You open up the “Network Connections” panel and choose to edit the adapter’s settings. It seems like you assign an IP address to the adapter. While it seems so, it is not the case. Without connecting a cable to the adapter, the IP address is nothing but configured. Give it a try: Open up the command line and type
ipconfig. Your adapter shows up but your IP does not. Try to
ping the IP: Not there.
Now let’s connect a cable to the network adapter. Wow! The IP was in the wires! Well, it turns out, the IP must have been somewhere else, because it does not show up if you did not connect the other end of the cable. Or if the device at the other end is powered off.
My mental model of the IP address being a property of the adapter is supported by the way you set it up: As a property of the adapter. In fact, this is wrong. I failed to come up with a accurate model of the situation on Windows but obviously it is not as straight forward as it is on other systems.
This is why my user experience with windows is so bad: I fail to build a working mental model of the system. While I might not be the core target audience of Windows, you should always try to make your application match your audience’s mental model. You might achieve this by a good manual but on the other hand, you should not rely on your users reading the manual.