Older software development procedures have the assumption that you can strategy at the front hand, and follow up that strategy to completion. In reality however requirements will change, priorities will change and new challenges will arise during the course of a project. This is where the development of a methodology based on positive attitude towards change came about. Understanding what is adaptive software development step by step is much easier once you break it down into its core phases.This approach is based on a very simple idea.
This approach is based on the principle that “change is change” and that with complex projects, planning ahead or being too “blue chewed” can cause more damage than benefit. It avoids the need to anticipate everything that might need to be accomplished ahead of time and offers groups sufficient flexibility to make course corrections based on what they discover throughout development.
This philosophy grew out of an observation that a heavyweight, structured approach to software development did not always work well when applied to the vagaries of software projects in the real world, especially where novel and/or rapidly changing business requirements are involved.
Step One: Speculate
The initial stage takes away the rigidity of the classic-style planning process and substitutes it with something more flexible (speculation). Not making a detailed roadmap but aiming for a general mission and objectives, indicating that specifics may vary during the completion of the project.
In this phase, the teams set up the general scope of the project, create an estimated timeline and define initial goals – and don’t commit to every detail yet. Such flexibility means the team is responsive, and not making assumptions that might prove wrong when the real work to develop the project gets underway.
Step Two: Collaborate
After initial goals have been broadly set, there is a lot of collaboration. This stage focuses on the ongoing and intimate involvement of the developers, stakeholders and often customers, so that everyone remains on the same page during the project’s development.
Instead of isolated teams working on some specification dropping from the heavens, such a collaborative situation invites a continuous flow of feedback. Whether it’s a project milestone or not, developers pay attention to stakeholders frequently, sharing progress and adapting according to feedback, not waiting until the completion of a milestone for the stakeholders to learn the results.
This further frequently requires cross-functional teamwork, meaning developers, designers, and business stakeholders collaborate all through the project as opposed to working in isolated silos.
Step Three: Learn
A final core phase focuses on learning using a reflection on structures. At the end of a development cycle, the teams stop to try to really understand what is going well, what is not and what should they do next. This is not a token retrospective – this is taken seriously as an integral part of the process and as a key input to the next iteration of work.
In many ways, this learning phase includes a recap in technical outcomes and in process effectiveness – does the team’s speculation hold true, do the members have their needs met, and should they tweak their methods before the next iteration of speculation, collaboration, and execution?The reason for these phases repeating themselves in cycles.
It’s not like three steps that lead to a single end of a project; these three steps are cyclical and happen at various points during a project lifecycle. Every cycle it takes advantage of what has been learned in the last and enables the project to develop from actual feedback instead of sticking to its original suppositions that may not be time-relevant anymore.
What makes this methodology especially useful in the case of any significant amount of uncertainty is this cyclical structure where it is not required that teams pretend to be able to make very accurate prognosis at the outset of a project.
Some important principles:
In addition to the three basic phases, there are a number of principles that underpin this methodology as it is put into practice in teams. Keep your team or teams focused on broader goals by implementing a mission-driven approach that avoids drifting off on a fixed list of tasks, potentially misaligned when times change.
Another popular principle is sometimes referred to as component-based development: the teams are developing and delivering functional components rather than a single, huge product once an entire development effort has been completed. This will prevent any serious problems being found after considerable amounts of effort and money have been spent and will provide earlier feedback. Risk management is also prominent, and teams do this throughout each cycle, rather than risk assessment only occurring at the beginning of the project.Similarities to other schemes of flexible methodology
Although some of the techniques offered in these forms of iterative development seem akin, the particular focus on the speculate/collaborate/learn cycle is unique from the others. The intentions and ideas behind many of the flexible methodologies are similar to those of embracing change and iterative improvement, but the structure and terminology of this one provides a framework that is well understood by some teams (particularly in cases of major uncertainty or innovation project). This distinction is part of what makes what is adaptive software development worth understanding on its own terms, rather than lumping it in with every other flexible methodology.
When This Approach is Appropriate
This methodology is often highly effective when there is a high level of uncertainty, new technologies, or when the needs are per se challenging to specify in advance. This flexible and learning-centric approach is best suited for teams developing innovative products, experimental features, and in fast-changing industries.
If the requirements for a project are well understood and stable, there might not be enough need for built-in flexibility and a more structured approach might be a bit more effective in those cases.
Teams – Practical Considerations
It is important that the approach is fully integrated and accepted by the organization, especially those stakeholders that will be expected to continue to engage themselves during the collaborative process and not just turn in requirements and wait for a product to be delivered. They must also develop their own culture of reflection in the learning as it is not a formality.
Tying It Together
Knowing what is adaptive software development is all about nailing its basic rhythm: to spec with a certain amount of flexibility and to work together closely during delivery, and truly learn from the delivery itself during another spec: to repeat them all. What this means is that teams are much more effective at dealing with uncertainty than with rigid, traditional planning processes, so it’s a useful framework for projects in which there is at least some degree of change but certainly anticipated.


