Agile is an approach to software development under which requirements and solutions evolve through the collaborative efforts of self-organizing and cross-functional teams and their customer(s)/end user(s) . It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. Yes, it is an approach or mindset and does not intend to add processes or methodologies within the organization that is intending to apply it. Indeed, when the Agile Manifesto was proclaimed in 2001, its goal wasn’t to delegitimize methodologies but to restore credibility to the word methodology through 4 core values: “individuals and interactions, working software, customer collaboration, and responding to change”. This shift of paradigm was a response to the frustration of many organizations, specifically in the software development industry, where the Waterfall model was used since the 1970’s.
The 12 principles, written along with the Agile Manifesto, describe the necessary culture switch within organizations willing to embrace the Agile approach.
These principles are:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- 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.
- 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 enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Differences between Agile and Waterfall
Agile was created specifically in opposition to Waterfall and therefore, both approaches do not share many similarities besides their common goal: deliver a high quality product efficiently.
Waterfall is a more rigid and structurally sequential process where each phase cannot be started before the previous one is completed. Agile, on the other hand, is a more flexible process: it empowers the team with the prioritization of tasks, as long as it leads to the constant delivery of business value.
The Agile approach is also characterized by a preference for short recurring planning cycles over in-depth planning at the beginning of the project. There is no need for defining requirements in advance with Agile. Requirements are documented as the project progresses. In general, with Waterfall, things that have been done in previous phases cannot be changed, whereas Agile welcomes necessary changes at any time.
Here are the main differences between Waterfall and Agile.
When should an organisation use Agile instead of Waterfall ?
If Agile and its frameworks were the solution to all projects, why would Waterfall still exist ?
Agile is obviously not perfect and one should be aware of the pros and cons.
To this effect, let’s go through the strengths and weaknesses of Agile.
There are some circumstances under which transitioning to Agile may be too risky or unsuitable. Agile requires that both the organization and the customer be on board. Issues like changing the organization delivery method or having the business stakeholders available whenever needed can be real challenges.
If those conditions are met, Agile would be generally preferred over Waterfall when:
- The scope of the project isn’t clearly defined
- Stakeholders need to be able to modify the scope during the project execution
- Changes need to be implemented during the entire project
- The team members can adapt to changes and organize their work autonomously
- Frequent deliveries need to be made without waiting for the end of the entire project
How can Agile be implemented ?
Approach VS Framework
As we have seen, Agile itself is an approach and doesn’t provide organizations with practical ways to implement its principles and values. Several Agile methodologies (AKA frameworks) have been developed to help achieve the Agile mindset. Those frameworks provide organizations with processes, techniques and artefacts as tools to apply the Agile approach.
Let’s look at the table below to understand the differences between the Agile approach and Agile frameworks.
Which frameworks are most used ?
At least a dozen Agile frameworks exist within the software development industry. Some are easier to implement while others are applicable only under certain circumstances. According to the 12th state of Agile report, a comprehensive survey of Agile practices worldwide, Scrum is by far the most popular framework used by 56% of Agile practitioners.
Here is an overview of the most popular Agile frameworks:
Scrum: Scrum is the most popular way to implement Agile. It is an iterative software model that defines a set of roles, responsibilities, and meetings that repeats during the entire project. Sprints, usually lasting one to two weeks, allow the team to deliver software on a regular basis.
Kanban: Kanban, meaning “visual sign” or “card” in Japanese, is a visual framework to implement Agile. It promotes small, continuous changes to your current system. Its principles include: visualize the workflow, limit work in progress, manage and enhance the flow, make policies explicit, and continuously improve. Kanban has no time restriction and the concept of time-boxed iterations doesn’t exist.
Other less popular but nonetheless emblematic frameworks such as Extreme Programming (XP), Dynamic Systems Development Method (DSDM) and Lean Software Development (LSD) are also used successfully by IT and non-IT organizations.
Scrum VS Kanban
Scrum, Kanban and their related hybrid model being the most used, let’s see under which circumstances each one is more relevant than the other.
I am still not sure. Should I go Agile completely ?
Now that you have a better idea of what Agile and its frameworks are, you may be wondering what approach would be more suitable to your organisation and your projects.
As a general rule, we have seen that Agile is recommended over Waterfall when changes are expected throughout the project or when the scope is unpredictable.
Alternatively, if your project has a fixed scope and you know that requirements are not likely to change, Waterfall may be a safer approach. Unfortunately, in many cases, the choosing of the most appropriate approach will not be as evident, let alone deciding on the right framework.
If you are not completely sure that Agile is the right choice for you or if you cannot decide which methodology to use but want to give it a try, we could suggest using a hybrid Waterfall/Agile approach, at least for a while.
For example, Agifall, presented by Mark Fromson at the Vancouver Digital Project Managers Meetup Group, follows a waterfall approach and uses Agile methodologies (from Scrum and Kanban for the most part). This approach introduces robust stages of analysis, strategy and planning phases into tasks and proceeds with time-boxed cycles to complete them. Inspired from the Kanban methodology, phases are started, in parallel, as soon as enough information is available.
Instinctively, the hybrid approach may seem easier to implement than a pure agile approach. However, it is actually less demanding on project managers, but rarely more efficient, to force an approach on the project than to taylor the approach to the specifics of the project. Balancing the many antagonistic principles of the Waterfall and Agile approaches within one approach requires a lot of finesse. In a future blogpost, we shall try and explore the factors to consider when creating a customized hybrid approach.
 Wikipedia – https://en.wikipedia.org/wiki/Agile_software_development