The Consumer Programmer Divide
One of the key differences between consumers and programmers, is that consumers assume that they can easily be taught how to operate software products using familiar actions, while programmers are more than happy to learn new languages and new ways of communicating with software. It is critical that programmers appreciate this cultural divide when training new developers or interacting with non-technical clients, as the two groups understand software in radically different ways.
During the 70’s and 80’s, Xerox was doing groundbreaking research at its Palo Alto Research Center (PARC) to prepare for a possible “paperless future”. It was at Xerox PARC that developments such as Ethernet, the computer mouse, the desktop interface and Graphical User Interfaces (GUIs) were first introduced. While the management of the Xerox Corporation failed to understand and capitalise on these advancements, they certainly left an impression on Steve Jobs and Bill Gates. The simple and intuitive nature of the desktop and GUIs, had broad appeal, and computers changed from technical devices exclusively for software experts, to personal devices for general consumers. Because they were able to appreciate the cultural divide between these two groups, in the years to come, personal computing would be dominated by the likes of Apple and Microsoft, while Xerox would continue to be synonymous with photocopying.
Software serves as a tool, or a means of achieving an end, for both consumers and programmers. But the expectations placed on software interactions by the two groups are vastly different.
For consumers, software interfaces should have perceptible affordances, that is to say, the actions and functions available via user controls should be immediately obvious. Which is why popular GUI-based software is clear, intuitive and specific.
For programmers, software interfaces should be readily manipulable, with less emphasis placed on immediate accessibility, and more on functionality. As a result, the interfaces that programmers are familiar and comfortable with, are often filled with hidden affordances: actions which are not initially perceivable.
To the consumer, a Command Line Interface (CLI) seems inefficient and unnecessarily complex. After all, what should be as simple as entering a term in a GUI search bar, requires an arcane syntax with multiple arguments in a CLI. Similarly, the benefits of dedicated mathematical software may not be obvious to someone accustomed to popular consumer tools like Microsoft Excel or Mac Numbers. Nor may the advantages of version control software over simple file based backups, be readily apparent. While the merits of such software may be obvious to a programmer, the average consumer may not wish to learn a new system if existing tools meet their current needs. When educating new developers, or presenting ideas to non technical clients, programmers must be able to demonstrate and articulate the advantages of programmatic solutions:
- Repeatability – actions are guaranteed to produce the same results consistently.
- Reusability – actions can be parameterised to suit different purposes.
- Scalability – actions can be efficiently applied to larger data sets.
- Flexibility – actions can be developed to meet client requirements, however complex or specific.
- Automation – actions can be chained together reactively and/or autonomously.
In addition to being mindful of how programmatic solutions are introduced to consumers, it is also important to be aware of how they will eventually use a software interface. Programmers are generally more open to new interactions and much more forgiving of inconvenient user interfaces. But usability is always in the eye of the beholder, and when designing software it is vital that programmers understand how typical end users will view the interface. We experienced this first hand at Terem, during a project to enhance the UX of an existing software solution. By simply moving functionality previously hidden behind numerous mouse clicks, to a more prominent position, we were able to improve the overall user experience. While this may have seemed like added functionality to most consumers, the modification merely changed a hidden affordance to a perceptible one.
Since the 70’s, user interfaces for computers have made dramatic strides, making computing more and more accessible to the average consumer. This is something that our programmers and developers need to appreciate in order to communicate their ideas and build interfaces for those on the other side of the divide. And that should not be so hard. After all, programmers are used to learning new languages.