1. Overview
In this tutorial, we’ll learn about the Agile methodology in software engineering.
2. What Is Agile Programming?
Agile programming is characterized by iterative and incremental development. It focuses on building a minimum viable product (or MVP for short) as quickly as possible, getting continuous feedback from customers, and responding to changes in requirements or technology.
Moreover, Agile emphasizes flexibility and collaboration when developing software. It is based on the Agile Manifesto, a document that specifies the four values and 12 principles of agile software development.
Some examples of the most well-known agile frameworks are Scrum, Lean, Kanban, and Extreme Programming (XP).
3. Agile Values
According to the Agile Manifesto, the four agile values are:
- Individuals and interactions over processes and tools: even though having the right tools is important when developing software, having the right people who can communicate and interact with each other is more valuable and important when solving problems and developing software
- Working software over comprehensive documentation: agile prioritizes delivering working software to customers and gathering feedback from them over creating extensive documentation before developing software
- Customer collaboration over contract negotiation: when we communicate and get continuous feedback from customers, we make sure that the product is being developed according to their requirements so that the final product satisfies their needs
- Responding to change over following a plan: agile values having a dynamic and flexible plan when developing software so that when changes occur in the real world, and new information emerges, the strategy changes accordingly
4. Agile Principles
According to the Agile Manifesto, the 12 agile principles are:
- Satisfy the customer through early and continuous delivery of valuable software
- Welcome changing requirements, even late in development
- Frequently deliver working software
- Business people and developers must work together daily throughout the project
- build projects around motivated individuals, give them the right environment and support, and trust them to do the job
- The best way to communicate information within the development team is through face-to-face conversation
- Working software is the primary measure of progress
- Constant and sustainable development
- Attention to design and technical quality will increase agility
- Attention to simplicity
- Self-organizing teams generate the best architectures
- Teams should self-reflect regularly and change their actions accordingly
5. Agile vs. Waterfall
The waterfall methodology consists of sequential phases, and each phase depends on the result of the previous one:
Agile is not necessarily better than waterfall, and each one has its own use cases:
- We use Agile when we want to deliver to market quickly and then frequently update the product based on feedback
- We use waterfall when we have a clear set of project requirements that are not going to change later on
6. Summary
In this article, we learned about the Agile approach, its values and principles, and the differences between Agile and waterfall models.