What is Adaptive Software Development (ASD)? Understanding the Agile framework

ASD is a flexible approach to the Agile development of complex software systems that encourages emergence, continuous testing and deeply integrated user feedback and collaboration

Adaptive Software Development (ASD) is an Agile software development framework designed by the project managers John Highsmith and Sam Bayer in the early 90s. It is a more iterative evolution of the Rapid Application Development Agile framework, designed around 1-month projects broken down into week-long iteration periods (comparable to Scrum sprints).

Highsmith’s book Adaptive Software Development, first published in 2000, details the theory and application of the Agile framework the author claims adds “rigour and discipline to the RAD approach, making it scalable to the uncertainty and complexity of real-life undertakings”.

The framework has three development lifecycle phases:

  1. Speculation
  2. Collaboration
  3. Learning

What is unique about Adaptive Software Development (ASD)?

As an Agile software development framework, ASD places particular focus on user feedback and collaboration to inform future iterations of the software development process.

ASD also starts from the philosophy that complex systems like software development do not need, as is generally presumed, complex rules. Highsmith argues that a handful of simple rules are not only all that is needed to order complex systems but that a minimalist approach improves efficiency.

Another unique characteristic of Adaptive Software Development is the belief software development should be ‘fun’ and the best software is happened upon by chance. He terms the chance coming together of circumstances leading to great software as “emergence”.

The collaboration and productivity tool Slack, the fastest-growing SaaS in history and now a public company, is a great recent example of what Highsmith calls emergence. Slack was the result of a pivot by a team working on a commercially unsuccessful gaming product.

Necessity had driven them to create a collaboration tool to fit their needs because they weren’t happy with any of the existing products on the market. The game whose development Slack was invented to help organise, Glitch, a heavily funded attempt to create a new and original massively multiplayer online role-playing game (MMORPG), was a flop but the tool developed to facilitate team collaboration on became a hit. Having listed in June 2020 Slack, only founded in 2009, is now a company worth $25.5 billion.

Slack became famous for achieving a $1 billion valuation within 8 months (according to business valuation services), without any spending on traditional advertising or even employing a chief marketing officer. But actually, the company’s own team had been using Slack’s early iterations intensively for months, developing new features as they needed them.

Slack may not have been officially developed to the Adaptive Software Development framework. But the way it was released in short-cycle iterations informed by especially intense and detailed user feedback, and the ‘accidental’ nature of its “emergence”, has all the hallmarks of ASD.

The Slack Handbook for Software Development Teams reads like an elevator pitch for the framework described in detail by Highsmith’s book on Adaptive Software Development.

The Adaptive Software Development framework

The ASD framework is stripped back to just enough guidelines to create order within the complex system of software development without risking suffocating emergence, which it specifically encourages in place of determinism.

ASD is a results-oriented framework and places more emphasis on the quality of outcomes than the tasks performed to achieve them.

These three phases reflect the dynamic nature of Adaptive Software Development. A explicitly replaces Determinism with Emergence. It goes beyond a mere change in the lifecycle to a deeper change in management style. Adaptive Software Development has a dynamic Speculate-Collaborate-Learn Lifecycle.

Short, adaptive development cycles stop the lack of task-focus from becoming a weakness. Somewhat uniquely for an Agile framework, ASD bases the phases of its development lifecycle on those of the older Waterfall methodology that iterative approaches replaced.

Waterfall’s Plan, Build Implement phases are simply rebranded as Speculate, Collaborate, Learn. The phase names intentionally reflect the unpredictability ASD accepts as inherent to complex systems.

The Adaptive Software Development lifecycle shifts the focus to results, defined as application features, not tasks.

The three phases of Adaptive Sofware Development

Adaptive Software Development’s three phases address the following accepted underlying assertions:

  • It is difficult to Collaborate without Learning or to Learn without Collaborating.
  • It is difficult to Speculate without Learning or to Learn without Speculating.
  • It is difficult to Speculate without Collaborating or to Collaborate without Speculating.

Let’s take a look at the ASD’s three phases in some more detail:

Speculation

The ASD framework rejects the term ‘plan’ for the first phase of its lifecycle as too deterministic and confident of the final outcome. In its place is the suitably open-ended ‘speculation’ phase, which leaves space for the project to innovate.

The speculation phase of the ASD lifecycle does not reject planning and big picture planning and the setting of objectives, for the project and iteration cycle due to start, takes place here. During the first speculation phase, the project mission is defined, which sets an approximate framework for the end product.

Iterations are cycles on the path to implementing the mission with each new speculation phase an opportunity for exploration and experimentation.

Collaboration

The collaboration phase is founded on the following principles:

  • Complex applications are not built, they evolve.
  • Complex applications require that a large volume of information be collected, analyzed, and applied to the problem.
  • Collecting, analysing and applying large volumes of information, or data, requires diverse Knowledge requirements.
  • Diverse Knowledge requirements can only be achieved through collaboration

The collaboration phase is controlled through a balance of traditional project management techniques and the kind of collaborative environment that leaves space for emergence.

Table comparing qualities, features and weaknesses between Agile Software Development and other Agile development frameworks

 

Learning

An Agile software development team working to the ASD framework is expected to continually improve its level of Knowledge. This is done in the learning phase that follows each iteration through practices including:

  • Technical Reviews
  • Project Retrospectives
  • User feedback via focus groups and other mechanisms

Iterations should be short so the team learns from small, not big, mistakes. The development team and users contributing their user experience to the process should assess their assumptions during each learning phase. The results of this assessment, such as changers to underlying assumptions, then inform the direction of the next iteration cycle.

The 6 characteristics of Adaptive Software Development

  1. Mission driven
  2. Feature based
  3. Iterative
  4. Time boxed
  5. Risk driven
  6. Change Tolerant

How does ASD compare to other popular Agile software development frameworks?

Table comparing qualities, features and weaknesses between Agile Software Development and other Agile development frameworks

Adaptive Software Development strengths

  • Designed for the rapid development of complex software products.
  • Short iterations help prevent costly mistakes or wrong turns.
  • Leaves plenty of opportunity to explore unplanned directions, allowing for emergence.
  • Encourages high levels of transparency between the development team and project sponsor.
  • End-users and their feedback are tightly integrated into the development process, improving the chances of outcomes they see as positive and increasing the diversity of knowledge available to the collaboration phase.
  • Intense testing of short iterations reduces bugs and vulnerabilities.
  • Result-orientated. The burden of responsibility for poor outcomes cannot be deflected.

Adaptive Software Development weaknesses

  • Uncertainty of the environment favours an experienced team with an adaptive mindset.
  • A loose starting plan consisting of just the project mission means maintaining focus can be a challenge.
  • Requirement for high levels of user involvement across iteration cycles is not always easy to ensure.
  • Intense testing at each iteration increases baseline costs.
  • Frequent changes to the project can result in low levels of documentation. This can be retrospectively mitigated once changes are locked into the evolving product.

Is ASD the right framework for your development product?

The Adaptive Software Development framework could be a good approach to Agile development if you have, or are confident you can arrange, deep involvement from your users and see your products as continuously evolving.

You must also attach enough value to the risk mitigation continuous testing offers, and the opportunities exploring new ideas or directions throw up, to be willing to accept the increase in your baseline costs that intrinsically involves.

ASD should be considered if rapid development and release is a priority.

Another Agile development framework may be more suitable if:

  • You have a more rigid view of how the final product should look.
  • Lack the experience and adaptability in your team to cope with the levels of uncertainty ASD entails.
  • Can’t provide the development team with broad and deep access to user feedback and collaborative involvement.

Featured blog posts