I’ve seen this sort of ambiguous context in “professional” software and I’ve come up against this many times before in my own software solutions. This is NOT about coding but about UI. I think.
I have this - It’s a small panel of my program. To the user, it seems reasonable that to “Record”, then one simply selects the “Enable Record” button/checkbox. (That’s the only way recording can be done anyway).
After a couple of other steps, they are presented with this:
To me it seems obvious that in order to disable the recording (if required) the user de-selects “Enable Record”. The Software works as it should, but I don’t think the logic does - from the user point. Depending on the context, ie. if I’m being the “programmer or the user” then the Enable Recording button doesn’t make sense anymore. It should now say “Disable Recording” like a toggle switch. Earlier in this program I fiddled around with it but it never made sense, but I had to progress to other parts.
What complicates matters is that if you look at center of the panel you will see “Current Status”. This shows EXACTLY what the state is. This is the correct and current state of the situation. It works perfectly in that sense. Unfortunately the main button doesn’t reflect this.
The recording process is a complicated one. There are six steps required to actually record the data. I’ve tried to “dumb” this down via the “bouncing ball” method (an arrow in this case). I cannot take out any steps. When recording is enabled, then we follow the “arrow” as in image number two. This part has to be done. There are three options left to the user: “quit program”, “disable record” or “proceed”.
One option is to simply have a heading: RECORDING OPTIONS then a Segmented Control for ENABLE / DISABLE?. I have come to the point of my program that this issue has to be resolved NOW. Otherwise I will be faced with the “Penny Farthing Principle”. ie. Positive results only known by a select few who are willing to persevere.
One time, I did read in a book somewhere that “The essence of effective programming is to make an effortless transition between the programmer and the user”. Much easier said than done.