Software development methods are very diverse and follow different standards, and Agile thinking is one of the most popular methods in software development. This article will clarify the basic concepts and core values of Agile so that you can firmly understand.
The definition of Agile
Agile methodologies come from the Agile Software Development Manifesto, based on 4 core values and 2 main concepts of iteration and increment.
Instead of looking for methods to solve specific problems, Agile allows us to associate with each actual context, mastering abstract (but guiding) principles and concepts will help you have a consistent view; create a solid foundation to explore more ways to apply.
4 Core values of Agile
These four core values are not a denial of the importance of processes, tools, documents, negotiations or plans. However, when placed in relation to factors such as individuals, collaboration, interaction, cooperation, and feedback with changes, especially in project models where there are still many unanswered questions, the 4 main elements must always be given top priority.
The following explanations will help you to understand more clearly what Agile is with each of its core values.”
Individuals and interactions, rather than processes and tools.
Processes are created to serve the work. We need to master the process instead of becoming slaves to it. Applying the process mechanically does not necessarily lead to the desired results.
Working software is more important than complete documentation.
The implication of working software is aimed toward users, emphasizing the importance of delivering valuable products that provide effective support to users, rather than just stopping at finishing projects.
For complex, long-lasting projects that often involve changes in key personnel, documentation is even more necessary to ensure consistent information for all parties involved.
Collaborating with customers is more important than negotiating contracts.
Collaborating with customers aims to communicate, exchange, and identify what customers really need. People often say one thing, but have a different need.
However, in software production, not every customer invests wholeheartedly in the product and frequently interacts with the development team to optimize the production process, while being willing to pay for the development efforts made by the software development team.
Many customers have limited budgets, also the information they provide about their product requirements is very vague. Therefore, it is extremely important to clarify the development scope in the contract. Otherwise, the project will be prolonged, causing both parties to have many obstacles.
Responding to changes, rather than following a plan
Instead of trying to create a quick plan, people who apply the Agile approach will aim to build a quick and just good enough plan.
For projects with unclear requirements, having the ability to adapt to changes will be much more important than creating detailed plans from the beginning.
Agile’s Iteration and Increment
In addition to the four core values mentioned above, The Agile approach also revolves around the principles of iteration and increment.
Iteration is a short-term segment to develop a small part of the system. A project will consist of multiple iterative phases.
In simpler terms, instead of developing a system in one month, if we apply Agile approach, we can completely divide the process into smaller ones, each lasting one week. In which, each week applies all the steps of defining – identifying requirements, building – developing the product, testing – evaluating, and releasing – launching the product. Although the process is repeated every week, it must create an increment in the developed product.
From the principles of iterative segmentation and creating increments, we have sprints.
Sprint of Agile approach based on loop and growth
It can be conducted that Agile is not only “a methodology” but a mindset, an approach and a practical implementation based on the principles and values stated in the Agile manifesto.