This article follows the #TestCulture on the birth of the agile method. Culture points on the testing world, sharing of anecdotes and discussion around testing and automation, #TestCulture is a weekly appointment on Agilitest’ Twitter account, which takes place every Thursday at 4pm GMT.
To browse the thread, click on the tweet below:
The origins of Agility
It all started in 1986. Ikujiro Nonaka and Hirotaka Takeuchi - two academics - observed companies such as Toyota and defined three categories of companies:
- Companies which divide work into well-defined phases and do not move on to the next phase until the previous one has been completed.
- Companies where the phases overlap slightly, based on the observation that it is conceivable, for example, to start the architecture when 80% of the specifications have been completed.
- Companies where everything is done at the same time.
The emergence of the term “Agile”
The term “agile” appeared in the English-speaking business world in the early 1990s. In 1991, James Martin (English consultant and author in information technology, hee is known for his work on information technology engineering) based his vision on the continuous evolution of computer techniques and proposed a method for rapid application development.
A manifesto about Agility
In 2001, a manifesto for Agile Software Development was written in the United States by seventeen software development experts. Each of these experts had already developed new methods that were lighter than traditional methods inspired by civil engineering. If agile methods did not appear thanks to this manifesto, it does however officially refer to these methods under the term Agile.
Four values have been defined in the manifesto:
- Iterative
Delivers a full system at the very beginning and then changes the functionality of each subsystem with each new release.
- Incremental
The system as specified in the requirements is partitioned into small subsystems by functionality. New functionality is added with each new release.
- Self-organizing
The team has the autonomy to organize itself to best complete the work items.
- Emergent
Technology and requirements are “allowed” to emerge through the product development cycle.
Agile is currently an umbrella concept encompassing many methods. Agile methods will not out rule traditional methods because diverse processes for software engineering are still needed.
The Twelve principles of Manifesto for Agile Software Development
The four values of the Agile Manifesto have been broken down into twelve principles, in order to provide operational support to teams wishing to follow them.
- Customer satisfaction by early and continuous delivery of valuable software.
"Our highest priority is to satisfy the customer through early and continuous delivery of valuable software."
- Open to changing requirements, even in late development.
“Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage."
- Deliver working software frequently
"Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale."
- Close, daily cooperation between business people and developers
"Business people and developers must work together daily throughout the project."
- Projects are built around motivated individuals, who should be trusted
"Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done."
- Face-to-face conversation is the best form of communication
"The most efficient and effective method of conveying information to and within a development team is face-to-face conversation."
- Working software is the primary measure of progress
If the result of your work is not the way your customer expects it to be, you are in trouble.
- Sustainable development, able to maintain a constant pace
"Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely."
- Continuous attention to technical excellence and good design
"Continuous attention to technical excellence and good design enhances agility."
- Simplicity is essential
"Simplicity - the art of maximizing the amount of work not done - is essential." Customers are buying a solution to solve a specific problem they have. They are not paying for the amount of effort we invest. It’s important to do something in a simple way.
- Best architectures, requirements, and designs emerge from self-organizing teams
"The best architectures, requirements, and designs emerge from self-organizing teams."
- Regularly, the team reflects on how to become more effective, and adjusts accordingly
"At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.”
To conclude
Back in the day, the term "Agile" was defining a concept that was already present but not very popular. It gave the conditions to qualify a method that goes beyond the classical schemes. Today, this term is used a lot in digital marketing and new technologies, sometimes rightly and sometimes wrongly. No doubt that this method is going to remain a major trend and an ideal for many companies.