Agility is the driving force behind ITD
Meeting the customer’s needs
In today’s fluctuating environment, it can be difficult for customers to anticipate their own needs as they can often change. An agile approach provides the flexibility and responsiveness required to offer better customer satisfaction.
The development of many projects in both IT and other sectors is still based on detailed specifications. The purpose of such a document is to plan everything in advance, from the moment the customer drafts the specifications to final “acceptance” of the project. Yet often, there is very little exchange between the customer and the service provider. After a few months or even years of development, the delivered projects commonly fail to match the customer’s real needs, which tend to vary over time!
An agile approach produces quite the opposite effect, as it is less predictive and static. Rather than detailing far-distant and fixed objectives, the idea is to draw up the outline and then fix a number of specific short-term objectives. Development can get under way sooner and customers receive partial but functional versions of the product on a regular basis. It is much easier for customers to track progress on a project and request adjustments.
Constantly adapting to needs
In practice, how does this work? The customer provides his view of the product and lists the top priority business functionalities to include. Based on this list, agreement is reached with the development team on the contents of the first release, planned for delivery two to three months later, depending on available resources. The first release includes features with the most business value, without neglecting the purely technological aspects of the project. Once a list of priority business and technical functionalities has been drafted, the iterative development cycle can begin. Bearing in mind the priorities, each iteration includes a significant number of functions that the team is fully capable of achieving over a short, fixed period of time (two to four weeks in general). An iteration includes design work, development and testing, and at the end of the iteration, the team must be able to demonstrate that the product increment works. In this way, customers can check that the product perfectly corresponds to their needs. They may request various changes or even adjust their priorities for the following iterations.
This approach sharply reduces the risk of failure, since the customer validates the different phases as the project moves along. It ensures that the final software release functions correctly and delivers features that offer maximum business value, taking into account the team’s actual development capacity and possible delays. It strengthens the relationship of trust and transparency between customers and teams. Another advantage is that it encourages team spirit and relies on a high degree of customer involvement. Each party is independent, yet responsible for achieving the same goal, that of ensuring that the project is a success.
An approach formally defined in the early 2000s
The definition of “agile software development” was publicly introduced in 2001, when 17 well-known software developers came together to draft the “Agile Manifesto” (see agilemanifesto.org). This program lists the basic principles and common criteria for agile development techniques. Many agile development methods exist, but the method adopted by IT-Development is today’s most popular technique, known as Scrum, (comparing it to the scrum formation in rugby).