What is Agile Software Development?
The Agile Manifesto helps explain:
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
8 Agile Development Values
- light documentation
- heavy collaboration with cross-functional teams
- welcomes change, even late in the software development lifecycle
- co-location of team members
- continuous unit testing (emphasis on working software)
- iteration, including code refactoring
- frequent input from the customer and customer representatives
- little up front planning since requirements change based on stakeholder input, market conditions, and other factors
User Interface Design and Agile Development
Many of the values in Agile software development are people-centric and of course, the discipline of UI is also people-centric.
User Interface Design Values in the Software Development Lifecycle (SDLC)
- customer input, early and often
- collaboration with customers, key stakeholders, and developers
- iterative design with iterations based on collaborative insights as well as input from developers, and key stakeholders
So far, this sounds like a perfect match to traditional user interface design. And yet, there can be friction between Agile SDLC process and high quality User Experience Design.
Developers can focus on small areas of functionality. Meeting a requirement or a User Story in a small number of screens, gives Software Developers a well defined area to work in. It also gives the User Experience Designer a small area to work in, and that is one point where problems can begin.
There are two user experience design values that can get crunched here.
- consistency of the user experience
- lack of understanding the “Big Picture” may influence design decisions in a way that won’t work by the end of the project
Challenges of Doing UX in an Agile Environment
By working in small sprints (usually 1-2 week time periods), on small, well defined chunks of functionality (User Stories), the focus is down in the trees. But UX needs to focus equally on trees and forest, in order to turn out a consistent, high quality user experience. This is challenging when the designer doesn’t know where the project is going. And by intent, Agile methodology doesn’t know exactly where the project is going, because up front planning is minimal, and requirements can and will change, even close to the time the project is wrapping up.
Design changes based on the scope of the interface. An interface with 100 tasks, needs to work differently than an interface that only does 5 things. Data display design is different depending on the quantity of the data, and exactly what the data needs to convey. These are just a few of the things that can be hard to hit in a moving target.
My next article will focus on best practices for designing the user interface with an Agile team.