What is an agile approach?
Much more than a simple project management "method", the agile approach is a paradigm shift, it is a philosophy, a state of mind, so different is it from the predictive and sequential project management methods known as classic.
The very notion of project management is called into question in favor of product management.
The agile approach is based on a simple principle: planning a project in its entirety upstream of development, down to the smallest detail, is counterproductive. Indeed, by definition, it is impossible to predict what is unpredictable. Given this fact, organizing and planning all aspects of a project will surely be a waste of time. Hazards will arise, disrupt the progress of the project and force the team to rethink its planning.
Where traditional project management methods have only one final delivery, sometimes leading to a disappointing result that needs to be modified, with all the waste of time and money that this entails (tunnel effect), agility proposes an iterative and incremental approach to product management allowing teams to create value more easily. Rather than focusing on a major release, an agile team delivers its work in small, actionable increments. Requirements, plans, and results are continuously evaluated (empirical approach). This gives teams a natural mechanism to adapt to change.
Iterative approach: the project is broken down into a series of operations repeated in identical development cycles, the iterations, with the intention of getting closer and closer to the desired result.
Incremental approach: adding features in increments, to ensure that each added value brings an improvement to the product without creating dysfunction.
The increment corresponds to the fully tested and operational result of the iteration.
Empirical approach: the project is built on the experience and observations acquired during the previous iterations without referring to fixed principles.
"We didn't invent the principles behind the Agile Manifesto. They are the principles of the scientific method. Galileo used them. Archimedes used them."
Dave West - Product Owner and CEO of scrum.org
These principles were adapted for IT development in the late 1980s. The first iterative development project management approach dates back to 1986. The first implementation of the Scrum framework was in 1993.
Published in 2001, the Agile Manifesto marks the birth of the "methodology" as we know it today. Indeed, seventeen experts in the development of computer applications wrote a manifesto intended to overcome the traditional modes of development, outdated according to them. The common denominator of their profession of faith was the term "Agile".
Since then, many agile frameworks such as Scrum, Kanban, Lean or eXtreme Programming have been adopted by development teams to reduce waste and increase transparency, while adapting to changing customer needs. Each embodying the core principles of frequent iterations, continuous learning and high quality.
The Agile Manifesto contains the essence and philosophy of the approach, broken down into four values and twelve principles. It illustrates the profound cultural change that is at stake.
"We discover how to develop software better by doing it and helping others to do it. These experiences have led us to value :
- people and their interactions more than processes and tools
- operational software more than exhaustive documentation
- collaboration with clients more than contractual negotiation
- adapting to change more than following a plan
We recognize the value of the latter, but value the former."
A human practice
Agility is a human practice where the individual and the well-being of each team member are seriously privileged. By providing a more friendly workspace and trusting teams, they are more productive.
In agile principles, importance is given to individuals and their interactions. To do this, teams self-organize so that they figure out for themselves how to be most effective. Teams align themselves around the solutions they choose together. Collaboration, communication, trust and team spirit are strengthened. Mutual understanding is also fostered.
Continuous improvement is essential in the world of agility. Through agile ceremonies, teams have a stronger ability to identify how to improve processes. They develop an ability to prevent past mistakes from happening again and better anticipate future problems. The Agile Manifesto considers that teams can always improve their way of doing things and their organization.
Operational software is software that perfectly matches the initial needs of the customers and/or end users. In agile projects, quality products are implemented.
Quality before quantity
In this value is hidden the term "operational". Teams do everything necessary to limit the risk of future bugs thanks to software engineering concepts such as unit tests, acceptance tests, load tests or qualitative code tests. Doing an agile project does not allow to develop faster but to have a better quality product.
Functional quality requires good functional documentation and technical quality requires good technical documentation.
Documentation that is incremented by evolutions
Just like the product, the technical and functional documentation is built up piece by piece and is fed as iterations and developments are made. This technique limits the waste of energy in writing documentation that could change over time.
Place the customer at the core of the project
In agile approaches, the highest priority is to satisfy the customer, so the products produced are totally user-centered.
Unfortunately, the presence of customers is not always possible, representatives such as Product Owners or Customer Care will be their spokespersons.
The customer from the preparation phase
The best way to deliver a product that meets users' expectations is to involve them throughout the process. During the preparation phase of a new product or feature, customers are regularly consulted to ensure that the future product or feature meets their expectations.
The customer throughout the execution
In order to get regular feedback (short feedback loops) and to know if the delivered functionalities are in adequacy with the customer requests, product demonstrations are organized at the end of each development cycle.
Product Owners and/or Customer Care will also work regularly with their customers to think about the next features or future improvements to features already delivered.
Indeed, the Agile Manifesto insists that customers are at the center of attention. The teams do their best to create a privileged relationship with the customers by involving them in the different phases of the product construction. It is the customers who validate each step of the project. The evolution of their needs is thus taken into account and adjustments are made in real time to meet their expectations.
An agile contract?
Instead of having a contract based on a complete set of specifications that imposes to deliver one hundred percent of what is indicated in the latter (fixed scope), an agile contract will rather fix the resources (implementation team) and the implementation time (iteration) but will not fix the scope (adaptation to changes) as shown in the diagram below.
Adapting to change
An agile organization is one that is able to adapt in time to unforeseen events. It welcomes changes in customer needs, even late in the project, through natural coping mechanisms. Agile processes exploit change to give the customer a competitive advantage.
Agility is therefore a strategic and behavioral model in constant balance between :
- an active dimension: doing and proving that the team can do
- a reactive dimension: being opportunistic in the face of change requests and spontaneously adopting the right operation
- a proactive dimension: being able to create value