Adept Editor
desktop prototype • SRI International & US Army • 5 – 9/2009


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:

  1. How to visualize a procedure, including loops.
  2. How to make an edit, while constraining the user to valid edits whenever possible.
  3. How to correct an error, without a full-fledged debugger.

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.

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.

Rapid Prototyping

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.

Design Spec

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.