Integrating UX Design methodologies into software development
Integrating UX design methodologies into software development projects can be a complicated task. UX design and software development should complement each other but in practice they approach development from different perspectives (Ferreira et al., 2011). Software development processes such as Agile and Lean boast quick incremental, iterative project management with a focus on delivering small sets of working software features to customers as quickly as possible. On the other hand, UX design methodologies while also focusing on quick iterations (of design), advocate spending considerable effort on user research, validation and analysis before development begins. The organisation and planning of projects and teams, and level of communication, collaboration and UX strategy can all hinder the effectiveness of integrating UX into software development projects.
Why UX Design and Software Development
High quality software products that are functional and useful require the skills and expertise of different professions. Software development processes are effective at producing working software but often overlook the actual requirements of real users. UX design focuses on gathering requirements and acting on behalf of the end user to create and improve the usefulness and usability of products. When integrated effectively the outcome is a product that is functionally sound, usable and useful to the end user. For this to happen both software development and UX design need to combine methodologies, integrate and collaborate.
In the next section various factors that contribute to the effectiveness of integrating UX in Agile Software development (ASD) will be explored.
Educate the Organisation
A fundamental problem with many organisation and individuals is the misunderstanding of the role of a UX Designer, with them often being perceived and labelled as UI, graphic designers, or individuals who merely create wireframes and make the product functional. A massive proportion of a well rounded UX Designers’ skillset include the ability to encapsulate what exactly the user needs and how to validate it through in-depth user research and user testing. Drawing from experience this happens in well established large organisations where long term senior stakeholders are stuck using old processes to manage projects. In these situations individuals and organisations will often take on the task of representing the user needs and wants, or delegate user research and usability testing activities to unqualified/inexperienced members of teams which can often lead to the incorrect, inaccurate and wrong processes being used to create requirements, test hypotheses and validate completed work. Sometimes even taking these tasks on themselves. These mistakes can be minimised by educating organisations and individuals on the role of the UX Designer.
Make Time for Product Discovery and User Research
The aim of product discovery is to identify what the product is, what the users goals are and what functionality is necessary to achieve these goals. This is done by conducting user research. However, user research can be extremely time consuming and is often neglected or left out prior to starting ASD projects in favour of conducting usability testing during sprints. This in inefficient as it only identifies usability issues with a product and doesn’t take into account the usefulness of the product itself. This can be detrimental to the product upon release as even if the product is 100% functional, if it is not usable it increases the risk of failure.
One of the foundations of effective User Experience Design is user research. It is conducted to understand the needs, motivation and expectation of users. Research suggests (Brhel et al., 2015) that the needs and goals of users be clearly defined prior to conducting any ASD project to ensure usefulness and usability. Up front analysis of user requirements directly affect the product vision, which in turn contribute to what functionality and features will be included in the product itself (Brhel et al., 2015, Salah et al., 2014).
Drawing from experience requests for functionality and requirements on projects can often come from senior management and product owners based on personal opinions and biases backed up with little or no evidence or validation. By validating user requirements through actual user research with real users it minimised the possibility of wrong functionality and feature requests being implemented and increases the possibility of a user centered end product.
This is vital to create products that are not only usable but also useful. If not prioritised it could lead to the development of functionality not used thus consuming budgets, time and resources. For this reason it is recommended that the product discovery be separated from the product planning stage (Brhel et al., 2015) and be carried out prior to starting ASD.
Incremental and Iterative Design
Brhel et al. (2015) conducted a systematic review of 83 publications about user centered design in ASD. The paper identified 5 principles for User centered Agile Software Development. Principle two states “User-centered agile approaches should support software design and development in short iterations and in an incremental manner.”
Users are often unable to articulate what they need so working in increments allows for slices of functionality to be built and evaluated from sprint to sprint. Feedback from the previous sprint can be factored into future sprints. Also, the scope of the product can often grow based on feedback from users so an iterative incremental approach is more suitable than delivering all requirements up front.
Include a Sprint Zero
Following on from the Product Discovery stage, research suggests reserving a sprint zero to allow for designers to create and identify a suitable design concept from the start (little design up front), and for developers to size the workload (how long they think it will take to code) and to understand how it functions (Brhel et al., 2015). Drawing from experience this is a fundamental step for the integration of UX in ASD. Design teams on small and large projects are often distributed and siloed once a project has kicked off. Research and ideation during a sprint can be difficult to undertake as delivery of other work is prioritized. Allowing for a Sprint Zero designates time for design teams to work together to brainstorm, ideate and develop consistency in thinking and design. Also, if designers don’t have time to validate user requirements and conceptual design ideas prior to starting the project, the risk of failure increases.
Designers Work One Sprint Ahead
Research suggests UX designers work one sprint ahead of development to conduct research and prepare designs for the next sprint (Brhel et al., 2015, Bertholdo et al., 2014). This is done so adequate research and conceptualization of features can be explored in parallel to development (Brhel et al., 2015) including preparing wireframes, designs and prototypes; conducting usability tests with stakeholders and validating functionality. Drawing from experience this is an effective method for designers to generate ideas and validate designs with developers, product owners and other stakeholders.
Although Agile methodology promote and value working software over comprehensive documentation, for UX to be integrated effectively some artifacts are extremely beneficial. The inclusion of user stories is helpful to describe user features and document progress. Personas, and scenarios are examples of conceptualizations of user needs. Prototypes, wireframes, and mock-ups are extremely useful for communicating designs between cross functional teams. And from a design perspective having a central design record for documenting design goals, decisions made, and usability testing results helps to achieve a cohesive design (Brhel et al., 2015). Drawing from experience, central design records are useful for onboarding designers to get staff up to speed on projects, organisation design principles, guidelines, process and strategy. They can also be used to save time and resources by referencing and benchmark previously conducted research.
Day to Day Success
Ferreira et al. (2012) proposes successful integration of UX design into ASD on a day-to-day basis relies on practices that support and maintain four principles:
- mutual awareness
- expectations about acceptable behaviour
- negotiating progress
- engaging with each other.
Developers and designers need to be aware of each other’s work and how it affects their ability to make informed decisions during sprints (Ferreira et al., 2012). Communication and collaboration are key to achieving this.
Designers and developers should make themselves available throughout a sprint to discuss designs and code. Ambiguous directions and requirements in wireframes and designs can be clarified quickly if all team members are easy to reach. This can be difficult with remote teams. Drawing from experience in house teams communicate and collaborate more effectively and efficiently than remote teams. With remote teams, time and meetings need to be allocated to discuss any issues. Once a meeting has ended there is no more communication or collaboration until the next meeting.
Sprints can be positively propelled forward by developers and designers negotiating together regardless of role, by asking and answering questions, keeping each other informed of decisions and involving each other in decision making. This can also increase motivation and productivity as teams bond and achieve targets and success together.
Another vital part of integrating UX into ASD is a well structured and balanced team. Usually this comprised of individuals with different skill sets from design and development working together on a project. In ASD, teams can be divided into feature or component teams. Feature teams are well suited to ASD as they are scalable for large and small projects (Rubin, 2014). Each team member has a specific skill set and is responsible for completing a certain part of the task being developed and designed in that sprint. These are usually created in the form of user stories. Although each member may work on their own, all team members work in tandem to complete the task for that sprint. In comparison, component teams work in departmental style silos where each team is responsible for designing and developing a different part of a feature (e.g. GUI, middle tier and database) (Rubin, 2014). Feature teams are user centric and have many advantages over component teams when used in Agile Software development such as:
- Having complete end to end functionality to enable real user testing of working software
- Evaluate how well users needs are being met
- Allow for iterative and incremental development of software
- Inform internal/technical decisions
- Design and development waste is reduced by using feedback to influence what features to develop and what not to. In component teams this is not validated until all teams have completed their part
- Focus the team’s attention to deliver working software. (Cohn, 2009)
Integrating UX into Agile Software Development relies on the inclusion of numerous factors. From an organisation level it is necessary to have a complete understanding of the agile process and UX design process before starting a project. It about strategic pre-planning and planning of a project including product discovery, sprint zero and development in incremental iterations. On a day to day basis it’s about constant engagement, communication and collaboration between designers and developers. This is done by teams not only accomplishing their own work but also spending considerable effort engaging with other team members to clarify designs and contribute to articulation work (Strauss, 1988). The coordination of developers and designers need to be explicit to overcome mutual awareness and differences in acceptable behaviour and expectations. This is done using artifacts as discussed above combined with constant engagement allowing for designers and developers to coordinate their work more smoothly and contribute to a more meaningful end product.
Bertholdo, A.P.O., Da Silva, T.S., Melo, C. de O., Kon, F., & Silveira, M.S.(2014). Agile usability patterns for UCD early stages, in: Design, User Experience, and Usability. Theories, Methods, and Tools for Designing the User Experience. Springer International Publishing, Cham, CH, 2014, pp. 33–44.
Brhel, M., Meth, H., Maedche, A., & Werder, K. (2015). Exploring Principles of User-Centered Agile Software Development: A Literature Review. Information and Software Technology (61), 163–181.
Cohn, M (2009). The Benefits of Feature Teams. Retrieved Oct 30, 2016 from https://www.mountaingoatsoftware.com/blog/the-benefits-of-feature-teams
Ferreira, J., Sharp H., & Robinson, H. (2012). Agile Development and User Experience Design Integration as an Ongoing Achievement in Practice. 2012 Agile Conference
Rubin, K. (2014). Distinguishing Between Feature & Component Teams. Retrieved Oct 30, 2016, from http://www.innolution.com/blog/distinguishing-between-feature-component-teams
Salah, D., Paige, R. F., & Cairns, P. (2014). A Systematic Literature Review for Agile Development Processes and User Centred Design Integration. Proceedings of the 18th International Conference on Evaluation and Assessment in Software Engineering — EASE ‘14.
Strauss, A. (1988) “The articulation of project work: An organizational process,” The Sociological Quarterly, vol. 29, no. 2, pp. 163–178