Managing software projects has never been easy. There are continuos changes, risks, and sometimes the clients don’t know what they want. And that is why we have Agile.
What is Agile?
There is no straight answer.
Is it a project management methodology? Framework (like Scrum)? Tool (like Jira)?
Technically all are true.
Maybe we can define Agile as a mindset that helps us deliver valuable software despite uncertainty and risk. But what does that mean?
When working on a project, we usually build some features that the team didn’t agree on from the beginning. Other times, the clients don’t know what they want exactly. This makes it tough to create a complete plan from the beginning with all the project details, and its absense adds more risk to the project. By approaching the development process with an Agile mindset, we can manage this risk and stil deliver valueable products for our clients despite the lack of a specific plan.
History of Agile
Agile was created organically as a result of a market need to deal with the crisis product development faced in the 1990s. Back in the 1990s, it was taking somewhere in the range of 2-4 years to get a software solution to production from the time it was conceived.
This delay was not acceptable for enterprise business users. The market had started to evolve, and developers realized that both the needs and expectations from the business users would not remain static for long.
In the Spring of 2000, a group of industry experts gathered in Oregon to come up with some common ground on Agile. This meeting led to a famous gathering in Utah in February 2001 where 17 thought leaders finalized The Agile Manifesto. This historic gathering set the foundation for all Agile frameworks.
Since Agile was developed for software development, many think that software is the only place where Agile is valuable. However, today Agile is being applied in all industries across the globe.
How it works?
The Agile methodology is a way to manage a project by breaking it up into several phases. It involves constant collaboration with stakeholders and continuous improvement at every stage. Once the work begins, teams cycle through a process of planning, executing, and evaluating. Continuous collaboration is vital, both with team members and project stakeholders.
The first point is validation. Because of uncertainty, we need to check with the client regularly to ensure that we are on the right track. Additionally, we need to ensure that we are delivering our second point: value. We are not simply fulfilling requirements or creating features (of course we are but it’s not what we should focus on). We are delivering value to the client. And this value also comes from the uses/client, so the validation is so important.
Changes are an expected result of the regular validation process, so we can respond to that validation and provide more value.
To achieve that in an organized fashion, we have to do two things:
- Deliver fast (small parts so it's easier to validate them with the client)
- deliver frequently
And to achive that, we need to have a team that understands all of this cycle and focuses on the value that the client needs.
Agile is a Mindset
Ultimately, Agile is a mindset informed by the Agile Manifesto’s values and principles. Those values and principles provide guidance on how to create and respond to change, and how to deal with uncertainty. When you face uncertainty, try something you think might work, get feedback, and adjust accordingly.
Values of Agile Manifesto
It says that we improve software by valuing some items over others like:
- Individual interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile vs Waterfall
Waterfall Model methodology which is also known as Liner Sequential Life Cycle Model. Waterfall Model followed in the sequential order, and so the project development team only moves to the next phase of development, or testing if the previous step completed successfully.
The main differences between them are that Waterfall is a Liner Sequential Life Cycle Model whereas Agile is a continuous iteration of development and testing in the software development process. In Agile vs Waterfall difference, the Agile methodology is known for its flexibility, whereas Waterfall is a structured software development methodology.
Other differences include:
- Agile follows an incremental approach, while the Waterfall is a sequential design process.
- Agile performs testing concurrently with software development, while in Waterfall methodology, testing comes after the “Build” phase.
- Agile allows changes in project development requirements, whereas Waterfall has no scope of changing the requirements once the project development starts.
Advantages of Agile
- Persistent software delivery
- Increased stakeholder satisfaction
- Inspect and adapt
- Welcome to changes at any stage
- Design is important
- Daily interaction
Agile Frameworks
There are multiple frameworks to implement Agile in your project
Scrum
Scrum is the most popular one. It is a framework that helps teams work together. It encourages teams to learn through experiences, self-organize while working on a problem, and reflect on their wins and losses to continuously improve.
While the scrum I’m talking about is most frequently used by software development teams, its principles and lessons can be applied to all kinds of teamwork. This is one of the reasons scrum is so popular. Often thought of as an Agile project management framework, scrum describes a set of meetings, tools, and roles that work in concert to help teams structure and manage their work.
Kanban
Kanban is a popular Lean workflow management method for defining, managing, and improving services that deliver knowledge work. It helps you visualize work, maximize efficiency, and improve continuously. Work is represented on Kanban boards, allowing you to optimize work delivery across multiple teams and handle even the most complex projects in a single environment. Originating from manufacturing, it later became a territory claimed by Agile software development teams. Recently, it started getting recognized by business units across various industries.