HCI VISTAS, VOLUME-II, 2006-2007

 

Usability Engineering with

Agile Software Development

Guest Author: Rajesh Gode

Article INS-9./Sept. 2006
Background
Recently, I have been a part of a project that followed an Agile software development process (Extreme Programming). It was a new product development project where the product required to be launched within a specific timeframe. The Development team and the Usability Engineering (UE) team were functioning in an Agile way for the first time without any profound understanding about 'Agile' at the initial stages, with UE team leading the definition of the user interface. I must say that it was a great learning experience.
 
Here in this article, I wish to share some of the insights that I gathered during this involvement. My observations or learning is from the usability practitioner's perspective and not from the software engineer's point of view. If developers in my team are interviewed, they may voice different opinions.
 
Why an Agile methodology?
Agile methodologies (Extreme Programming, SCRUM) have started getting wider acceptance in the software industry and in many cases, customers insist on going the Agile way for various reasons.
  • In the traditional software development process, customers get the view of the software at a pretty late stage and it might no longer fit their real and changing needs. Agile promotes a more collaborative model for software development with significant and frequent interactions between the customers, developers, and stakeholders.
  • In the SDLC waterfall model, requirement gathering and analysis is the first stage, and then the product is developed. It hardly leaves a scope for requirement changes in the later stages. Agile welcomes requirement changes even at the later stages in the development cycle.
  • Many times, customer has a vision about the software but does not know the end points. In Agile, he could get involved in the development process at regular intervals and go on refining the vision even through few changes in the requirement.
  • In few domains where business scenarios are changing fast, Agile could be a better and faster way to come out with quick software to fulfill immediate requirements.

All said and done, the question that eventually arises is, how well an Agile methodology complements the User Centered Design (UCD) methodology. After all, an Agile approach is also a feature and technology centered software development approach and does not have any built in scope for UE activities.

Main 'UCD' considerations to work with an Agile methodology
In the Indian IT industry, involvement of the UE discipline in the software development as a process is not yet a common scenario. If usability practitioners find themselves in an Agile project then the following insights might be helpful.
 
Planning and Integration
Project planning could be one of the most critical tasks for going the Agile way that includes UE along with the development team. One needs to understand the philosophies & techniques of both these disciplines and carefully interweave their activities. Just starting all activities in parallel might not help. Exact inter dependencies need to be identified, planned and communicated across the team.
 
Pre-development UE Activities
In all the Agile processes, working software is the primary measure of progress. It does not have much scope for the detailed end user analysis and investing time in understanding users and their real requirements independent of features and functionalities. As actual coding might start from day one, do not get surprised if the development lead asks you, "when are you giving me the first screen for my requirement of this particular function? Today or tomorrow morning? Because developers need to start coding."
 
I would recommend that if the project is adopting an Agile process, the user centered analysis and high level design activities should be planned before getting into an Agile mode. Convicing customers or developers to carve out a space for UE activities before starting development could be the most challenginging task because everybody wants to jump at the design solution and start coding.
 
Drive the iterations with end-users
The common thread in Agile and UCD is the iterative nature of development. UCD iterates the design solution with end users and makes sure that it is optimized for the user requirements. However, in most of cases, Agile iterations happen with customer representatives where working software (a set of features and functionalities) is demonstrated, rather than the end users.
 
To make the best use of the iterative and adaptive nature of an Agile process, the UE team needs to be one or two iterations ahead of the development team. Along with customer representatives, a group of end users also needs to be involved. So the UE team can test their low fidelity prototypes with the end users through an informal and quick formative usability test (without any extensive documentation) and feed inputs to the development team. And this can continue in further iteration cycles.

'User Story' Opprtunities
User stories make an integral part of the Extreme Programming process. Customer briefs the functions in the form of user stories and then developers estimate the work involved using their expertise. The UE team can get involved or in fact drive all these sessions. They can define user personas and build detailed scenarios during these sessions. The UE team's involvement would not restrict these user stories to the extraction of features and functions but will add the human interaction angle to it and add considerable value.

Optimization of Rework
Optimization of rework is extremely important. Though Agile says that software engineers should be open for requirement changes even late in the development cycle, the rework shouldn't have its roots in the project planning, poor understanding about each other's processes, missed interdependencies and communication gaps. Otherwise, it can seriously influence the project schedule and costing.
 
I feel, how UCD would work with an Agile is an open subject where many more contributions are essential to reach more concrete guidelines. The parameters and purpose for choosing an Agile approach may also vary per project. However, we can consider that the Agile software development processes would play an important role in the future software development. The Agile methodologies thus have significant implications on the UCD methodology. Moreover, the Indian HCI community can be geared up to work with the advantages and limitations that the Agile methodologies offer.

The weathercock on the church spire, though made of iron, would soon be broken by the storm-wind if it did not understand the noble art of turning to every wind.
 - Heinrich Heine
 
References:
www.agilemanifesto.org, www.agilealliance.org
 
Rajesh Gode is presently a part of the Usability Engineering Center Of Excellence at Persistent Systems Pvt. Ltd., Pune, India. Rajesh is a Certified Usability Analyst and has been learning and practicing User Centered Design for more than a year. In addition, he has 7 years of experience in the field of visual & interactive design, which includes several websites & applications. He has completed Bachelor of Fine Arts.
© Copyright 2006-2007