Simple Things should be simple, complex things should be possible.
–Ward Cunningham, XP contributor and inventor of the wiki
A common challenge in agile is how to incorporate the visual design and navigation of the product (User Experience (UX) and User Interface (UI)) into a rapid iteration cycle. When teams attempt to resolve complex (and seemingly subjective!) user interactions while trying to code and test incremental deliverables at the same time, they can often end up “churning” through many iterations. This can be a source of frustration with the agile process—one that has to be addressed, somehow, incrementally.
UX/UI implementation is further complicated by the necessity of user experience testing. As running user experience tests often cannot occur within the iteration that is also attempting to complete the new functionality, the result is delayed feedback that complicates productivity and introduces delays in delivery. Of course, this is not just a user interface problem, it is a meta-problem with design and architecture in agile—a result of the elimination of big up-front design (BUFD) in the front end of the waterfall cycle.
Fortunately, teams have found a number of practices for addressing this important design element. Keys include: 1) having the UX design track a bit ahead as part of the architectural runway for a system, 2) centralizing design but not implementation, 3) leveraging iterations and working code to drive out uncertainty and risk through fast feedback, and 4) using the HIP (Hardening | Innovation | Planning) sprint to incorporate late-breaking changes. These development and UX “governance” strategies are described in the details below.
Summary Role Description
In SAFe, Agile Teams have the full responsibility for implementing the code, including the user interface (UI) elements. The User Experienced designer works at the program-level to provide cross-component and cross-program design guidance so as to provide a consistent user experience across the components and systems of the larger solution.
UX Designers typically have the following responsibilities within the agile program:
- Work with stakeholders to understand the specific business targets behind the user-system interaction
- Provide Agile Teams with the next increment of UI design, UX guidelines, and design elements in a just-in-time, (but timely enough) fashion
- Continually validate user experience via user experience testing
- Work with System Architects and teams to build and maintain the technical foundation for real-time UX validation, feedback, tracking statistics etc.
- Share UX guidelines across the program; educate developers on the best practices of maintaining good UI design
- Assist test engineers and System Team in UX testing and testing automation
- Lead UI design workshops and UX/UI Community of Practice
- Attend sprint planning, backlog grooming, iteration demos and PSI demos whenever critical UI-related work is involved
UX/UI Design in Agile
In Agile the flow of UX design is somewhat different and typically includes the following characteristics:
- Uses low-fidelity prototyping to develop runway for future implementation
- Is extremely incremental
- Relies on fast and frequent feedback via rapid code implementation
- Is highly collaborative
- Uses Spikes for UX research activities
- UI criteria are included in Definition of Done and User Story acceptance criteria
UX in Relation to System Design and Testing
In order to enable an effective UX design process and fast and reliable UI implementation, the following design criteria are important:
- Clear separation of UI and application logic
- Effective UI coding conventions
- Effective organization of UI assets and ease of re-use, extension and modification of styles
- Support for collection of usage statistics, UI error logging, feedback mechanism
Many of the UX guidelines and requirements are directly testable. Some can even be automated more simply the other functional tests. (For example: a simple test script could check for “use horizontal menus on all screens”, and thereby prevent developers from accidentally diverging from this criteria.)
UX Designers in Agile Program
Most solutions elements interact with the user in some fashion, so proper UX design is as important (or sometimes even more important) than other aspects of good software system engineering, especially in the larger systems. This impacts that the way in which UX Designers collaborate with the rest of the program. The following two organizational models are the most common.
Centralized UX Guidance and Implementation
Although it might appear attractive from the perspective of empowerment and velocity of the agile team, fully distributing UX development to the team can actually be quite problematic. Therefore, some organizations create a central user interface design team (as in Figure 1) that iterates somewhat independently from the development teams. They run a common cadence and iteration model, but their backlog will contain user experience story spikes, user experience testing, prototyping, and implementation activities that are used to define a common user experience. They typically work one or two iterations ahead to discover upcoming functionality and define how it should be implemented.
Distributed, Governed UX Development
In this case, however, it’s highly likely that the central team becomes a bottleneck for the development teams, and worse, the problem gets larger at scale, because there are a larger number of dependencies that must be addressed. To mitigate this problem, we’ve seen a hybrid model effectively applied for larger systems, as shown in Figure 2.
In the “distributed but governed” model, there is a small, centralized UX design team who provides the basic design standards and preliminary mock-ups for each UI, but the teams have team-based UX implementation experts for the implementation. In this case, the UX experts are distributed among the teams, but the centralized authority provides HTML designs, CSS style sheets, brand control, mock-ups, usability guidelines, and other artifacts that provide conceptual integrity of the UX across the entire solution. The central team also typically attends iteration and PSI/release demos to see how the overall system design is progressing.
 Leffingwell, Dean. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. Addison-Wesley, 2011, chap. 7.
Last update 15 January, 2013
© 2010-2013 Leffingwell, LLC and Pearson Education, Inc. All rights reserved.