For many years, designers and developers have been debating the compatibility of user-centered design principles and Agile development processes. In 2018, one of the foremost experts on user centered design, Don Norman, said “the new Agile programming methods are very good for some things, but they’re not so good for us [designers]; because the programmers want to start programming on Day 1, even before we know what we want to build. The comments capture the tension that developers and designers can experience on a project. Design thinking can be considered shorthand for the work involved in user experience (UX), user centered design (UCD), and human-centered design (HCD).
There is a recognized need across the industry to reconcile competing aspects of Agile and design thinking, and this is particularly true in the space of government contracting. Reconciling Agile development and design thinking is challenging but can be accomplished through employing cross functional teams and maintaining a focus on end users, something which may seem obvious but can be difficult on execution.
Focus on Users
While Agile and design thinking focus on different things—the former is centered on solution delivery and the latter a better understanding of problems—they both are concerned with understanding users and user needs. At the Agile Government Leadership Summit in 2019, UX experts signaled a lack of continuous engagement with users as the hallmark of a team that may be employing UX or Agile processes in a shallow manner. Feedback from users must be continuous, not something that occurs once at the beginning.
In design thinking this often starts with research, interviews, creating personas, and a number of other techniques, but more importantly than what technique is used in any given situation, the key is to use processes driven by empathy. This is all fairly standard for design thinking, but it’s also true for Agile processes. According to the DoD’s aptly named white paper, “Detecting Agile BS,” a clear and consistent focus on users is what separates teams that have an Agile façade from those that are actually built on and dedicated to Agile principles. What is often missed are opportunities for integrated community engagement to achieve the objectives for both the design team and the developers seeking the vital feedback they need. User acceptance testing, demo days, and other key stakeholder touch points should be intentionally designed to derive both functional and user-centric data points. This information is used to improve the user experience, ensure proper functionality, and foster a holistic approach to progressively increasing the product’s value profile.
Case Study — USITC
For a redesign project for a TCG client, the design/development team produced each design mockup as an Agile sprint. These mockups were tested with internal users and stakeholders to ensure all functional and UX requirements were addressed in a unified manner. Based on how well these users performed certain tasks, the team redesigned and retested each mockup until the mockups represented a usable, minimum viable product (MVP). This allowed the design/development team to measure how well they were capturing the mental model of the design. It also ensured the team was building the correct application through design mockups and wireframes before they reached the coding stage of application development. The team then began our coding development cycle, including user acceptance testing of the coded application each time a new functional feature was completed. Continuous feedback from users allowed the TCG team to make incremental changes to the coded version, ultimately leading to a usable application that met all requirements.
This approach combined design thinking and Agile, emphasizing user testing, prototyping, and user engagement to achieve high value output through continuous development and integration. This was an important part of implementing mature Agile and design support that had been delayed over a year (prior to TCG’s arrival) and achieved within six months of TCG’s support.
Build Cross Functional Teams
Designers and developers working simultaneously leads to a more integrated product that effectively meets users’ needs. Developers should ideally be part of the discovery process whenever possible. Why? Developers and designers naturally process data from users and stakeholders in a different way and will draw different conclusions from interviewers and user research in general.
Engineers have a strong understanding about the potential and limitations of the technology, but they benefit from having as much information as possible about user needs and their context.
There is certainly a lot of value in designers and product leads briefing developers on discovery and customer feedback, but the data from discovery is then filtered through the lens of design. It is preferable to have engineers hearing directly from users and stakeholders when possible. As Teresa Jones, a product discovery coach notes, the entire team benefits from hearing directly from users.
In an Agile-Scrum framework, design work continues during the sprint with designers supporting developers but also preparing for future iterations. Different components of the design process can be mapped onto sprints and agile ceremonies/artifacts in a number of ways, but teams should be able to adjust this mapping based on the nature of the project.
Any team taking on a development or modernization project should understand the best practices and processes of Agile and design thinking and have the experience to tailor these practices and processes to the needs of the project. As mentioned above, Agile and design thinking are pragmatic approaches, and, in a sense, every development project needs to be tailored.
Agile and user-centered design are not incompatible. In fact, the approaches to design and development should support and inform each other by building cross functional teams, employing iterative development, and integrating effective user touchpoints. Working together they create the best product for the end user.