Challenge: Design a visual programming interface for a desktop automation system. The existing system used learning-by-demonstration backed by AI, but offered no way for users to see or edit the automation they had created. Targeted at non-programmers, it would have to overcome the complexity of the Adept scripting language and its abstract concepts like loops and variables.
Role: Designer, user researcher, prototyper. I was assisted by a second UX researcher.
Outcome: Software based on our design spec was deployed with thousands of US Army intel analysts in 2013. Users praised the design’s power and simplicity.
End-user programming — i.e., programming for non-programmers — has been an area of research for decades, so we began with an extensive literature review and analysis of existing desktop automation tools.
Next we developed personas and example workflows, using data from prior contextual interviews conducted by my colleagues. I led a focus group exploring several ways to represent batch operations and loops, knowing they were both a key feature of Adept and a common stumbling block for users.
Working from the data we had gathered, we sketched solutions for three main challenges:
The most difficult challenge was crafting the language for modeling the user’s task. The user needed to recognize what each step of the task did, which meant we need to use the terms and phrases they would expect. Refining that language meant lots and lots of user testing.
We selected tasks based on our research and created paper prototypes for our user tests. We conducted four iterations over the course of four weeks: each week we refined our mockups, recruited users (office workers), and ran think-aloud usability studies.
I implemented a functional prototype of the editor using JavaFX. We conducted three rounds of user studies with office workers and US Army personnel, iterating on the design each time. A prototype enabled “Wizard of Oz”-style testing of the learning-by-demonstration model: I would watch the user perform a task, quickly build a procedure based on what the user did, and then present that procedure to them as the output of the AI, ready for editing in the prototype.
I created a specification document that explained our motivating design principles and provided a full walkthrough of the interface and user interactions. Appendices spelled out naming conventions, sizes, colors, and fonts.
Working from the spec, our software developers built a system that was deployed with thousands of US Army intel analysts in 2013. Users praised the power and simplicity of the design.