Cloud Foundry Command Line Interface (cf CLI): Enabling faster feedback cycles and greater coherency
The practice of CLI design is surprisingly inflexible 🙅🧘🏻🙅...
(Once you have a schema you need to stick to it as long as possible. You also need to strive for consistency in all things so your naming structure and CLI responses become familiar, predictable, and are scriptable.)
& nebulous ☁️🌫️.
(You have a new feature. Should it be... a flag on an existing command? a new command, with flags? a new set of commands? something you interact with via the manifest rather than in the CLI itself?).
With an inherited style guide in hand, I focused on interaction design and accelerating the process of developing a feature, from concept to delivery, for each CLI project I worked on.
Case Study - Designing the CLI’s Domains commands
Fix the convoluted and inconsistent workflows for:
creating a private/shared/global domain
deleting a private/shared/global domain
sharing a private domain.
What I did
introduce lean UX process to team
rapid CLI prototyping + testing
🎉 Winning design confirmed!
Reduced user confusion
Reduced user error
Consistent creation and deletion workflows
💪 Stronger team muscle for setting success heuristics, and rapid feature prototyping, testing, and delivery
Understand the history & reasoning behind the set of domains commands
👀👉 Whiteboard notes
Scope the problem and timeline in a design brief
Define success heuristics
Diverge: Conduct a design studio to go wide and wild with ideas. Solicit feedback from team and stakeholders.
Converge: Synthesize and consolidate designs into a smaller set of qualified candidates
Create a testing plan + recruit usability testing participants
🔗 Link to Usability Testing Brief
👀👉 Screenshots of the Recruiting Plan + Testing Goals, Testing Plan
Conduct usability tests on three distinct prototypes + mini-synthesis sessions after each test
👀☝️Gif of one prototype click-through above
Synthesize usability testing results, compare results with success heuristics
Choose and refine the successful design
Share findings and design choices with team and stakeholders; move designs into backlog stories for engineering; announce the change via appropriate channels and invite feedback