This post explores several approaches to prepare for absorbing changing requirements in product development projects. This post was inspired by Alistair Cockburn’s recent remarks.
Many development projects have formal requirements. Most often these are found in projects that follow a waterfall methodology or those that embrace the Big Design Up Front (BDUF) approach. Typically, these types of projects contain requirements that include features that must be in the final product and constraints related to the schedule and budget. Sometimes the requirements change significantly as the project progresses. The changes may be frustrating to the development team.
Cockburn made these comments on 2 July 2013 (VIDEO: the ‘set up to absorb’ comments are at at 38:30). The phrase ‘welcome changing requirements’ refers to one of the Principles behind the Agile Manifesto
“Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.”
To understand the context of his remarks, let’s review a few items from 2001.
Recollections from the meeting that produced the Agile Manifesto
Cockburn (pronounced Co-burn, the Scottish way ) was one of the 17 signatories of the Agile Manifesto in 2001. This meeting was not to develop something new. It served to summarize similarities in the approaches that had been used by the attendees for several years.
He recalled that the manifesto was crafted in one day. There was complete agreement over the wording. This includes the familiar phrases:
“Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan”
Work began on the Twelve Principles behind the Agile Manifesto the next day. His recollection is that there was not complete agreement on all of the wording for the principles.
During the one hour Q&A 2 July 2013 session, Cockburn playfully emphasized the word ‘welcome.’ It seems that Cockburn may not have been in complete agreement with the choice of the word ‘welcome’ in the ‘welcome changing requirements’ principle.
The Mindset Regarding Changes
Cockburn has been involved with enough development efforts to know that requirements change during projects.
Some changes occur because of incomplete research or misunderstandings. Some errors may be perpetuated in the documentation. Mismatches may be revealed because conditions in the marketplace have changed since the requirements were gathered.
Projects can be designed to respond to changing requirements. Cockburn has adopted an active approach to absorb changes.
When Cockburn spoke of ‘absorbing changes’ he was not suggesting something analogous to a sponge absorbing water. The better analogy is a shock absorber on a vehicle. It is a device designed to smooth the driving experience for the passengers. It improves comfort and safety.
Several Ways to Set Up a Project to Absorb Changes
There are many ways to prepare projects to absorb changes. In this post, I will summarize a few approaches that Cockburn has employed.
When the team has access to relevant, emerging information, they are more likely to be able to absorb changes. One way to share emerging information is with an information radiator. Cockburn coined the phrase “information radiator” in approximately the year 2000. According to Cockburn, an information radiator needs to be large (easily seen), easy to understand, public, and changing. Information radiators promote interaction. Current development information, including problems, should be visible to everyone on the team so that specific problems are perceptible to the individual that may have the solution.
Often, information radiators are positioned on the team room wall or some other conspicuous place. An information radiator facilitates distributed cognition.
The opposite of an information radiator is an information closet. Cockburn cautioned against the tendency to store necessary information online and assume that team members are interacting with it.
Capture educational information from interactive sessions in rich formats
To efficiently and effectively facilitate information transfer to new or less experienced members of the team, Cockburn advocates a one-to-one interaction format that is recorded. For example, the expert on a specific item can meet with a new team member to explain specific items. A white board or flip chart can be used to visually capture some of the information. The session should be interactive with questions and answers. The session must be recorded so that when the next new team member needs to learn about this item, they can start by reviewing the recording.
Instead of an emphasis on formal documents or presentations, this approach relies on the interaction that results from dialog.
Overall, this interactive approach emphasizes the pursuit of activities that maximize the production of value and minimize the time spent on project artifacts.
Ensure that the team includes Ri-level practitioners
To maximize the potential to respond appropriately to changes in requirements, Cockburn advocates that development teams include Ri-level practitioners.
Cockburn uses the concept of Shuhari to characterize the stages of learning to mastery. For a particular set of skills, an individual can be classified in one of three levels:
- Shu-level: An individual has learned a technique but is not aware of the limitations. They look for broad level clues.
- Ha-level: An individual has collected multiple techniques but may not know why they are appropriate for every context.
- Ri-level individuals invent and blend techniques. They insist on contextual clues before providing recommendations.
An individual can be a Ri-level practitioner in a narrowly defined area such as a particular programming language or in the broader context of product development. Having a critical mass of Ri-level individuals as part of the team improves the potential for selecting the appropriate options based on the specifics of the project.
In addition, individuals that have the insights to craft experiments and the skills to produce rapid prototypes are more likely to distinguish unvalidated inputs from validated inputs. They are more likely to distinguish opinions that may be unsubstantiated from refined information that can shape project requirements.
A Series of Cooperative Games
A cooperative team is equipped to handle changes better than a team that promotes non-cooperative functional areas (also known as silos). Cockburn envisions development as a cooperative game.
“I would like you to consider software development as a cooperative, finite, goal-seeking, group game. The goal is to produce a working system. The group, or team, consists of the sponsor, manager, requirements or usage specialists, software designers, testers, and writers. Usually the goal is to produce the system as quickly as possible, but there are other factors that affect the time goal: ease of use, cost, defect freedom, and liability protection. In general, it is a resource-limited game, which affects how the moves are made”
A cooperative game approach is consistent with a harmonious team effort toward a common goal. Within a cooperative game paradigm, changes to requirements are more likely to be viewed as a correction to achieve the common goal rather than a struggle to promote a particular perspective.
A team that has the benefit of items such as appropriate information radiators, efficient and effective training, an abundance of expertise that enables a variety of approaches to solve problems, and, a cooperative game approach is likely to thrive when presented with changes to project requirements. A team that has prepared for changes is more likely to thrive.
Cockburn advises teams to improve agility and adaptability. An environment that promotes the qualities of agility and adaptability is more likely to adjust to changes in requirements.
This type of team is more likely to enjoy better development experiences.