Crafting delightful user experiences

Liu Zenan is an interaction designer who cares about the quality and impact of his work.

How can UX designers produce high quality work in a fast-paced sprint-based agile team? Does the systematic UX design process make it inherently contradictory with agile principles? After working closely with one of our client’s agile teams for almost a year, we learned the many complexities a UX designer would encounter when integrating user centered design into an engineering-driven team. Understanding these complexities allows us to adopt an efficient new design process that helps produce better designed products faster.

I’m the co-writer of this blog post with @catsgomeep. Originally published on Minitheory blog.

Background

Since August 2014, we have been working closely with an enterprise software scrum team for a complete redesign of an existing desktop application: ReMetrica, an enterprise risk and economic capital modelling tool mainly used by actuaries. The software has been in the market for many years and is in the process of a complete redesign for a major version update. The client’s development team consists of several experienced C#/.NET developers, scrum masters and product owners, distributed in two teams located in London and Singapore.

Although we were brought in as external consultants, it became clear early in the beginning of the engagement that the traditional agency work process — where designers work separately from the client and produce detailed design specifications as deliverables — does not work anymore because of the vast amount of complexity and uncertainty in the requirements. While there are visions for the new release from the product owners, these visions weren’t translated into concrete features yet. Therefore, we agreed to embed two of our designers inside our client’s development team in Singapore, which could help reduce communication friction and improve designer-developer collaboration.

How we worked in the beginning

As part of understanding the product and the users, we attended the “Basic training workshop” for users, and also conducted interviews with their users in Singapore and London.

We conducted several requirement workshops with the product owners, production team, and users to explore the problems with the software and also ideas for resolving them.. We then jumped straight into tackling these major design challenges. At that stage, the development team was mainly focusing on finishing an initial release of the software with basic features on the new technical infrastructure .

At this point, we worked outside of the scrum sprint cycles and most of our designs weren’t implemented until a much later stage. Our initial work process was:

  • Product owner had vision about a feature.
  • UX designers brainstormed ideas and prototyped initial designs, working with product owners to review the prototypes and sketches.
  • UX designers produce detailed design specification document.
  • The design was communicated to developers. Developers raised issues and constraints from implementation perspective.
  • UX designers updated the specification to reflect the changed requirements.
  • UX designers keeps going back and forward with product owners and developers for review and design specification updates, with little being actually implemented.

This work process was soon proved to exhibit multiple issues:

  • Team communication and collaboration is not improved under the “big design up front” process. Designers and developers still work in silos.
  • Under such situation designers need to produce detailed design specifications for any new features or interactions. However, these documents and specifications usually immediately rendered unusable or outdated when developers start working on implementation, due to requirement changes or hidden technical constraints that were not easily foreseeable in the beginning. As a result, developers usually ended up developing something completely different from the original design.
  • There is not a clear process of getting features implemented. Even though UX is emphasised in the team and by key stakeholders, getting features out fast usually takes precedence due to the fast paced nature of agile development.

New process

After identifying these issues, the team worked to adopt a new work process that helps better facilitate team communication, and as a result, got design into implementation faster.

  • Holistic roadmap discussions and planning meetings to identify and prioritize key features. By inviting team participation in these discussions helps build up shared understanding and empathy for user needs.
  • The scrum masters then break big features into smaller chunks of user stories, each building up a part of the feature. UX designers, product owners and scrum masters work together to reach a consensus on the core part of the feature. The detailed design won’t start until the actual sprint when the feature is going to be actually implemented.
  • UX designers create prototypes for upcoming user stories and seek feedback from various stakeholders in the team. Developers’ feedback on technical constraints is captured and resolved early in the design process.
  • Finally, during each sprint designers sit together with developer to walk through the interaction details and make sure that all design decisions in the implementation is intentional.

What I learned

Smaller iterations

Enterprise software products usually have huge and complex features. UX designers working with agile teams need to work with product owners and scrum masters to break down big features into smaller chunks of user stories to be able to fit into short sprint time frame.

Find and prioritise the core part of a feature

While there might be a million “nice to have” features or enhancements to a product, it is important to find and prioritise the core part of every feature for the initial release. Because agile development teams all have limited time and budget, focusing on a smaller set of features or requirements usually results in better user experience than a bigger set of features, especially when the team does not have many UX designers.

Involve developers early in the process

Besides communicating to product owners and scrum masters, UX designers should also include developers early in the design process to “sanity check” their designs. Designing with developers also gives you many useful insights and ideas that would not surface if the team only communicates design to developers through document specifications.

Prototypes rather than specifications

In an agile team environment, the design or requirements may change rapidly in short time frames. Therefore it is often better for UX designer to adopt a “show, not tell” mentality at work. This means designers should produce prototypes to demonstrate how a feature “could work” instead of how they “should work” and validate their assumptions through user testing and feedbacks.