October 2010 Archives
I have been researching the way that Agile Methodology handles the User Interface aspect of software/web development. Agile is a Methodology that includes the customer in the process of development; development cycles are short, and since the customer is involved throughout the process, requirements are flexible based on customer input. The benefits of Agile are to involve the customers so that the project succeeds; one of the common reasons why software/web projects fail is that the end solution is not what the customer wanted; this is due to a significant amount of documentation and development being completed before the customer becomes involved. Involving the customers throughout the process makes sense.
There are varying research papers written about incorporating UI in Agile. Based on the amount of research discovered in this area, it seems that many have had problems with adapting UI to Agile. The following paragraphs explain some of the research I have discovered in relation to UI and Agile and my own thoughts and opinions.
Neilson Norman Group states that Agile is more focused on the implementation, and the usability is overlooked in favour of coding (1). I'm not an expert on Agile, but from what I understand, companies are responsible for creating and developing the Agile methodology to work for them. If a company is not that focused on usability (independent of the methodology they utilise), then usability will tend to be overlooked in Agile.
According to Stefan Blomkvist, problems between Agile and usability stemmed from the fact that usability designers were not being involved and their suggestions were ignored while programmers and programming were the focus (2). Blomkvist concludes that usability will suffer using Agile if the usability experts are not involved. This is a problem irregardless of the software methodology used. Many companies do not have a usability designer, and the lack of this skill encourages the UI to be owned by the whole with several people inputting into the UI with programmers building the UI; this creates a lack of consistency and degrades the importance of good usability (3). I have worked with and in companies that do not have a dedicated UI expert, and usability is developed by the programmers without much thought, resulting in functional but unintuitive, poorly-designed, and inconsistent user interfaces. First impressions and ease-of-use are equally important as functional software.
While many are blaming Agile for not involving UI, Patton explains that adopting Agile does not affect the UI within a company; simply, if a company had good practices for UI before Agile, then they would continue the strong experience and continue to adapt and evolve and Agile simply enhances the communication and makes all areas more visible (4).
Usability and Agile issues can be solved by identifying users and detailing work to be completed, preparing in advance, and communication and teamwork.
Some of the problems with usability and Agile include failing to identify user roles and failing to provide enough detail in the user stories. One of the first tasks to complete when a company adopts Agile is to identify and develop user roles and user characteristics. For example, are the users frequent visitors? If identifying users is not done, the customer can be mistaken and confused for the user. Detailed user stories are also necessary in order to get the task completed to expectation.
The second item to promote usability in Agile is preparing in advance. Alan Cooper states that the usability needs to be looked at and developed in whole before the software development can begin (5). Charles Kreitzberg believes that not much time is given to designing up front, and companies could save a lot of time and later rework in iterations by spending a little bit of time designing and creating prototypes up front (6). A style guide should be created with consistent branding, fonts, colours, and other elements. Usability designers should also look through the backlog and identify potential features that require some design work and prepare for this in advance. Usability designers could work one iteration ahead of the programmers (6). This is how it is being used at the moment for the company I am working with; designs are conceptualised in the first iteration and developed in the second. This idea of keeping the design iteration or more ahead has been discussed by multiple developers and researchers.
The final item that promotes good usability is communication and teamwork. Programmers and usability designers should work together to utilise their skill sets; the usability designer should have ownership of the user interface to maintain consistency. Blomkvist and Kreitzberg both state that programmers should be paired with usability designers and work in parallel. A UI expert should be available and constant throughout the cycle.
In conclusion, Agile should not hinder the usability aspect. Perhaps there are a few areas that can be improved, such as programmers and UI experts working collaboratively, ensuring that user stories are detailed and consistent overall, identifying user roles, and preparation.
(1) Neilson Norman Group Report. Agile Usability: Best Practices for User Experience on Agile Development Projects. [http://www.nngroup.com/reports/agile/].
(2) Blomkvist, Stefan. User-Centred Design and Agile Development of IT Systems. [http://www.it.uu.se/research/publications/lic/2006-012/2006-012.pdf] December 2006.
(3) Ambler, Scott W. User Experience Activities on Agile Development Projects. [http://www.agilemodeling.com/essays/agileUsability.htm] 2006-2009.
(4) Patton, Jeff. Twelve Emerging best practices for adding UX work to Agile development. [http://agileproductdesign.com/blog/emerging_best_agile_ux_practice.html] 27 June 2008. Patton, Jeff. 12 Best Practices for UX in an Agile Environment - Part 1. [http://www.uie.com/articles/best_practices/]. 1 August, 2008.
(5) Cooper, Alan. The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity [March 2004].
(6) Kreitzberg, Charles B. and Little, Ambrose. Agile Ux Development. [http://msdn.microsoft.com/en-us/magazine/dd882523.aspx]. June 2009.