Design Reports on design tools and techniques
Integrating interaction design in agile development
I was sent this article by a friend who is a Production Manager at Dell. I see alot of similarities to my own Sprint 0 process…enjoy.
By Mark Debono
Agile development methodologies such as Scrum have become very popular in IT projects. An interesting question that has arisen is one which asks how user-centered work such as interaction design can be combined with the agile development process.
There has not been much research on how to best work with interaction design in agile projects, and this leads to a number of challenges both in terms of the traditional way of looking at agile development as well as the fact that interaction designers are faced with difficulties regarding the actual design process.
This article will describe and discuss the challenges of integrating interaction in agile projects, the consequences of doing so, and interaction designer’s role in the agile team.
Agile development projects which work according to example XP or Scrum have been adopted by many organizations in recent years, mostly as a result of the methods’ advantages over traditional development methods. The benefits of agile development include regular deliveries and adapting to changes that occur during the process.
The strength of agile development lies in its iterative approach and regular deliveries. The challenge this leads to is a shorter time to the next deadline, which can be a problem for usability-related work such as interaction design. The time it takes to understand user needs and then to visualize these in the form of prototypes needs to be kept to a minimum because of the fast pace of Agile development.
Interaction design is a term that roughly translates to the ‘design of interactive products, systems, and devices’. Interaction is strongly user-centered and its aim is to satisfy user needs and preferences.
User-centered work is characterized by several different approaches and methodologies, including the creation of personas that represent the intended audience and the use of prototyping which is a method that visualizes the final product or system. Prototyping is actually the primary method that interaction designers make use of in order to find out if the right system is being built, among other things.
Interaction design can be divided into roughly two areas:
Interface design – to demonstrate features and design the graphical layout.
Behavior Design – the design of a product or system features, and show how they should behave when being used, for example, how navigation should be designed so a user easily can navigate on the site.
The Interaction Designer is responsible for applying a user-centered approach in the project.
Interaction Design and Agile Development strive towards the same goal but have different perspectives on the software. Interaction design has a focus on end users and how they will interact / work with the software, while Agile development focuses on how to produce code during sprints. Common to both interaction design and Agile development is the aim of creating useful systems / products, and an emphasis on evaluation of customer satisfaction.
Challenges for interaction design and the interaction designer in the agile world
In agile projects the team consists of different roles, usually a product owner, developers, testers and a project manager / Scrum Master. Agile projects create several challenges for interaction designers in addition to the tight timetable, such as new approaches that interaction designers have to adapt to, and not at least, adapting to the term “team” which is a core concept in the agile philosophy.
One challenge is to create interaction design in parallel with the software being implemented which may cause adverse effects. This may make the interaction design be seen as a bottleneck for the development team because the developers have to simply wait for the design to first be created and then implemented, which goes against the agile approach.
Another challenge is related to the requirements. Interaction designers can be said to embrace a “holistic approach” where the requirements have usually already been completed before implementation begins. Holistic approach can be seen as an approach in which interaction designers assume that the requirements are already finished and can be used as a basis for creating a design, which is what the interaction designer does. In a typical project, in this example a waterfall project, where interaction design is in focus, this might look as follows:
Requirements documentation is reviewed
The creation of flow and system behavior
Consensus and agreement
The creation of wire frames, namely a low-fidelity representation of the system layout,
Presentation of wireframes, consensus and approval
The creation of detailed prototype
Presentation of prototypes, consensus and approval
In Agile development developers start to develop the system right from the start before all requirements are known and new requirements may emerge during the project.
Solutions and strategies, interaction in agile projects
There are several strategies on how you can introduce usability-related work, such as interaction design in agile development. Here I will present two proposals:
- Design up front
- Merged process
There is no optimal universal solution that fits into any situation. The project scope, budget and timeframe are crucial to the strategy that best fits.
Design Up Front is a sequential approach, where a large part of the design is created up-front before implementation takes over and guides the rest of development activities.
Interaction design is a separate process in the agile development where the design created is intended to cover the majority of the sprints to come. Interaction design activities include identification of user needs and goals, specific design activities, behavioral design, and interface design.
Advantages of this approach include the fact that the system is designed before implementation begins, which means that the team get a picture of what will be developed and a more solid foundation to stand on. Designing up front, before implementation, can lead to positive effects, since the customer’s and end-users’ needs and goals have already been identified which have a positive impact on the end result. Other advantages are that the interaction design that is created is cost effective when the produced prototypes, in contrast to the code, is relatively easy to be revised and amended subsequently. It is always easier and cheaper to reject a proposal made visually with Adobe Fireworks, Mockups or Visio, rather than changing the code later.
A challenge of designing up front is related to the changes that may occur during the course of development. The requirements could simply be changed during the agile process so that the design, in turn, may need to change depending on the size of the change. This leads to the important question of how much of the system that should actually designed up-front. One proposal is that the design should not be completed to 100%, but maybe up to 70% – 80%, allowing for amendments during the sprints where details such as color options for buttons and small design changes can be modified during the sprints.
Another challenge with this approach is that interaction design itself is not just about concrete design work but involves close collaboration with various stakeholders, including end users, product owners and requirements analysts. To create usable interface design and behavioral design using this approach requires information from various stakeholders and is necessary in order to minimize the risk that the “wrong” design is created which in turn do more harm than good in the development project. This requires that a relatively large amount of time be allocated for this work, which is not always possible.
In this case, the interaction designer is initially largely shielded from the team. When the development commences and design is largely created, the interaction designer becomes a part of the team and provides support to the developers and is responsible for the creation of new design revisions.
Interaction design and agile development as one process is a strategy in which interaction design and agile development together jointly form a process. The approach is that the activities performed by an interaction designer are carried out alongside the agile development activities. The design is created during the sprints and is an approach in which design grows in relation to how much is implemented, that is a kind of evolutionary design. The design created in this case, unlike the design up-front strategy, is limited in that usually, only what is going to be implemented for the next one to two sprints forward is designed at the same time as what was last implemented is being evaluated.
As previously described, this is a challenge because the process of creating interaction design can be seen as a bottleneck in the process. The solution and the trick to success with this is that interaction designer must be ahead of development. He/she needs to cover what is to be developed, for example in the next two sprints. It may be that during sprint #3 developers are working with implementing the design that the designer created in sprint 1 and 2. The Interaction Designer in turn creates interactions for sprint #4 and #5.
In this case, as in the previous strategy, it is important that the design created is not trying to cover 100% of the future sprints. This is to allow for amendments given that changes may occur.
Even in this case, the interaction design process involves more tasks than merely practical design. It is important that the interaction designer in some way evaluates the created solutions and gets feedback from both the product owner and also the end users. This can be done by means of usability tests based on prototypes, which is a very effective method for identifying potential usability problems. This is of course directly related to length of the sprints – if the sprints are short, it can be very short on time to perform these types of tests.
In this case, the interaction designer becomes a natural part of the Agile team and is an available resource that provides support for the team.
Regardless of the strategy and approach used to introduce interaction design in agile projects, this will almost certainly add value in the form of the desired effects. There is much one could write about the subject in question, and this article has more or less only touched the surface of what could be done. Adapting interaction design in agile projects is not easy because of various challenges. What is noticeable with agile development projects is the strength of focusing on the team and the team cooperation in order to build highly usable systems. If you add another instance to the team in the form of an interaction designer and overcome these challenges, it is much more likely that the system created will become even more usable.
There are strong parallels between the integration of the test role in agile projects and interaction design in agile projects. For example, historically there has been an organizational boundary between development and testing with different departments, but these organizational boundaries have begun to blur as test and development is planned and carried out in close relationship. In Scrum projects, this is clearly where the testers are scattered in the development team responsible for ensuring that the software is developed and tested. Methods such as Scrum have introduced close cooperation between developers and testers. Exactly the same is true for the interaction design and agile development.