When you don't understand what is going on, a few minutes of experimentation can be worth many pages of documentation. Their mental model of what is inside the machine is only one level deep. They understand the current state, and they look for ways of manipulating that state directly. Setting up a list of instructions which, when followed, will place the machine in the desired state requires an extra level in their conceptual model, and it is one that non-programmers are not used to working with. On a few occasions a user can add a second level to their thinking, but it is always very simple and limited.
Most people understand alarm clocks, for instance.
You control the future behaviour of the clock by setting the controls now. But the link between current state and future behaviour has to be very direct. So when you design a GUI, or any other kind of interface, start by thinking about the level of user you want to be able to use it. Then identify all the information required to complete each task, and make sure it is all available when the user needs it. Don't forget to include background knowledge.