Simple things should be simple, complex things should be possible.
User Experience (UX) Abstract
User Experience (UX) represents a user’s perceptions of a system’s aspects, including ease of use, utility, and efficiency of the man-machine interface. User Experience design focuses on building systems that reflect a deep understanding of end users, what they need, and what they value, and it reflects an understanding of their abilities and limitations.
A common Agile challenge is how to incorporate the User Experience into a rapid Iteration cycle, including implementation of visual design, navigation, and user interface (UI) elements. When teams attempt to resolve complex (and seemingly subjective) user interactions while simultaneously trying to develop and test incremental deliverables, they often end up “churning” through many iterations. This can be a source of frustration with the Agile process. UX/UI implementation is further complicated by the necessity of User Experience testing. Since it may not always be practical to run User Experience tests and gain feedback within the same iteration that implements new functionality, the result can be delayed feedback that affects future iterations, reduces velocity, and introduces delays in delivery.
Fortunately, Agile Teams have found a number of practices for addressing this important design element. Keys include having the User Experience design track a bit ahead as part of the Architectural Runway for a system, centralizing design guidance but not implementation, and leveraging iterations and working code to drive out uncertainty and risk through fast user feedback.
Summary Role Description
In SAFe, Agile Teams have the responsibility for implementing the Solution, including the user interface (UI) elements. However, in order to provide a consistent User Experience (UX) across the components and systems of the larger solution, one or more User Experience designers is typically dedicated to the Agile Release Train (ART). In general, they need to track a bit ahead and be ready with design guidelines, prototypes, wireframes, style sheets, and other artifacts as part of the Architectural Runway necessary to provide some common guidance for the new Program Increment functionality.
User Experience designers typically have the following responsibilities:
- Work with stakeholders to understand the specific business targets behind the user-system interaction
- Provide Agile Teams with the next increment of UI design, User Experience guidelines, and design elements in a just-in-time (but timely enough) fashion
- Continually validate User Experience via User Experience testing
- Work with System and Solution Architect/Engineering and teams to build and maintain the technical foundation for real-time User Experience validation, feedback, tracking statistics, etc.
- Share User Experience guidelines across the Program; educate developers on the best practices of maintaining good UI design
- Assist test engineers and the System Team in User Experience testing and testing automation
- Lead UI design and User Experience/UI Community of Practice workshops
- Attend Iteration Planning, backlog refinement meetings, System Demos, and Solution Demos whenever critical UI-related work is involved
User Experience Design in Agile
Given the elimination of Big-Up-Front-Design (BUFD), the flow of User Experience design is somewhat different in Agile and typically includes the following characteristics:
- Includes fast, 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 between the users and the teams
- Uses Enabler Story spikes for User Experience research activities
- Includes UI criteria in the Definition of Done (see “Scaled Definition of Done” in the Releases article) and User Story acceptance criteria
User Experience in Relation to Design and Testing
In order to enable an effective User Experience design process and fast and reliable UI implementation, the following design criteria are important:
- Clear separation of UI and application logic
- Effective UI development conventions
- Effective organization of UI assets and ease of reuse, extension, and style modification
- Support for collection of usage statistics, UI error logging, and feedback mechanisms
Many of the User Experience guidelines and requirements are directly testable. Some can be automated more simply than 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.)
User Experience Designers on the Agile Release Train
Many system elements interact with the user in some fashion, so proper User Experience design is as important as are the other aspects of good software and system engineering, especially in larger systems and systems of systems. The User Experience design of devices (including aesthetics, shape, size, and weight) can be equally important factors. This impacts the way in which User Experience designers collaborate with the rest of the program. The following organizational models are common.
Centralized User Experience Guidance and Implementation
Although it might appear attractive from the perspective of empowerment and velocity of the Agile Team, fully distributing User Experience development to the team can be problematic, in that the entropy of multiple team-based UI design approaches is not likely to serve the user well. Therefore, some organizations create a central User Experience design team that iterates a bit ahead of the development teams, as in Figure 1.
They run a common cadence and Iteration model, but their backlog will contain User Experience enabler story spikes, testing, prototyping, and implementation activities that are used to define a common User Experience.
Distributed, Governed User Experience Development
However, it’s likely that the central team will become a bottleneck for the development teams. Worse, the problem becomes larger at scale, because there are more dependencies that must be addressed. To mitigate this problem, a hybrid model can often be more effectively applied, as shown in Figure 2.
In the “distributed but governed” model, there is a small, centralized User Experience design team (or individual) who provides the basic design approach and preliminary mock-ups (or prototypes) for each UI, but the teams do the actual implementation. In this case, the User Experience implementation skills are distributed among the teams, but the centralized design authority provides wireframes, style sheets, brand control guidance, mock-ups, physical hardware prototypes, usability guidelines, and other artifacts that can help provide conceptual integrity of the User Experience across the entire solution. The User Experience design team also typically attends Team Demos and system demos to see how the overall system and solution design are progressing.
 Leffingwell, Dean. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. Addison-Wesley, 2011, chapter 7.
Last update: 1 April 2016