What is Agile?
Agile methods are a relatively new approach to producing software. In contrast to traditional approaches that emphasize requirements analysis, design, and implementation as distinct phases, Agile methods seek to minimize up-front planning in favor of producing working code quickly and often. Feedback from these baselevels is used to ensure that the resulting product is useful. Scrum and XP (Extreme Programming) are two popular Agile approaches.
Agile methods organize development around short sprints, from one to four weeks in length. At the beginning of the sprint, the team decides on the function to be implemented. At the end, the resulting code is tested and the team reflects on their process. In theory, the project is re-evaluated at each sprint and could change direction completely to better meet user needs. In practice, there is generally a strong expectation that the stories defined at the beginning of the project are the ones that will be implemented (just as they would have been in traditional development) and there is little time to rework stories that users aren’t happy with.
Agile methods favor face-to-face interactions over formal documentation. Rather than write requirements down only to see them changed in the middle of development, Agile teams seek to have the customer or product owner tell them directly about a needed function, right before coding on that function starts. To organize development, high-level user needs are written on simple index cards. All the details of the design of that card are worked out in conversation with the customer.
Accordingly, the customer role on an Agile team is critical to its success. This role defines what needs to be done, prioritizes tasks, and works closely with the developers to work out each detail of the system. However, most Agile teams often struggle to get real end-user feedback into their development—there is little time during sprints for user visits, users may not be local, and developers usually do not have skills or training in getting the best information out of users.
At the same time, Agile teams often find that there is little time to think about the system coherently, either to envision a whole-product solution to the users’ needs or to design a coherent user experience. For development purposes, Agile methods split both the proposed system and time up into small independent chunks. There’s no time and no process for looking across the whole system.
User-centered Agile, bringing Contextual Design to Agile Methods
This is where Contextual Design supercharges Agile development. CD defines a Phase 0 that precedes Agile development, providing a framework for user research, ideation, and high-level design. Phase 0 is itself iterative, incorporating several rounds of user feedback to ensure the right product is built. Phase 0 gives the Agile customer team the knowledge to write the right user stories
Then, during Agile development proper, CD techniques help the UX designers work with developers and gather user feedback within the constraints of a sprint. CD provides methods for fast prototyping with users and for maintaining the coherence of the user experience—two of the major difficulties Agile teams encounter during development.
CD guides Agile development with a 4-10 week Phase 0:
- Contextual Inquiry field interviews to research customer tasks
- Consolidation to understand users’ real needs, not just their expressed wants
- Visioning to invent a coherent solution to the user problem
- Quick Interaction Design Patterns and the User Environment Design to maintain a coherent user experience architecture throughout sprints
- Paper prototyping to rapidly iterate designs with users.
Let us work with you
We can work with you to ensure the success of your agile project. We can help you:
- Define and scope the project appropriately for agile development;
- Identify the key user populations to guide development;
- Run a Phase 0, an initial user research and analysis process to scope and structure the system at a high level, this system concept being itself tested and iterated with users;
- Define and prioritize user stories for your first release;
- Develop user interaction patterns and architecture for your concept—and drive it consistently throughout the sprints
- Ensure that everyone knows their job during development sprints to ensure good user feedback, provide guidance to development, and keep the project on track.
Agile Design Services
For any design services you will be assigned an InContext team. The team members are guided by a project manager and overseen by a design expert. The project manager provides you with an up-front, day-by-day schedule and stays in close communication with your team and key stakeholder. At your option, let us help you find the right users and set up the field visits.
We run all our projects to the planned schedule, and you can rest assured that it will complete on the day we say it will. For any design service the InContext principals oversee the quality of the results.
Phase 0 Customer Research and High Level Design: If you have confidence in your own Agile skills, we can drive your project with Phase 0 customer research and high-level design. We put together a team consisting of our experts who gather and analyze the customer data you need for success. We design, test, and iterate a high-level system concept to set your project direction. Finally, we run a joint release planning session with your team to write and prioritize user stories. We ensure the involvement of your stakeholders and experts at key points in the project to set the design direction.
Hybrid Design Team Option: We create a cross-company team including our expert designers and your key personnel. The team works side by side, under the direction of our experienced project manager. Your people participate in key activities, being trained on new skills as needed. You get the results you need, on the day promised, and also get your people trained in key user research and design skills.
Outsourced UX Team: If your UX resources are stretched too thin, we can provide you the expertise you need on your project. Our experts gather and analyze user data, including your team members as desired. Working with your stakeholders, we develop and test a system concept. We write user stories and participate in prioritizing them for your release. Throughout development sprints we do low-level design and work closely with your developers to ensure they know what to do for every story. We test the system as it is developed to drive continual user feedback into the process.
Agile Coaching and Training Services
When you want your own team trained in customer-centered agile development, our coaching and training services give you a head start. Any of these services may be tailored to your specific needs.
Awareness talks: Familiarize your team with the key issues surrounding agile development and customer-centered design. These talks address the main issues teams stumble over when introducing agile methods to an organization.
Workshops: We work intensively with your team to address a particular problem. Evaluate your current Agile readiness or do an intensive user story writing workshop.
Courses: We teach Contextual Design in the context of agile development to your people in a classroom setting. We practice key skills, including the transition from CD to development.