Agile
Last updated
Last updated
Agile (short for Agile Software Development) is a flexible software development method, performed using short iterations of 1 to 4 weeks. The goal of Agile is to help shorten product development time and bring products to customers as soon as possible.
In essence, Agile is like a methodology, a philosophy based on iterative and incremental principles, so it possesses high flexibility. This characteristic goes against traditional project management methods - which inherently deploy stages in a linear manner and are extremely passive in the face of unexpected changes.
Today, the Agile philosophy has gone beyond its traditional area of ​​software development to contribute to changes in the way of working, management, and production in other industries such as manufacturing, services, and sales. , marketing, education,... and has become the most popular project management method today with many representatives called "Agile family" methods.
Before the emergence of Agile, the Waterfall model was considered the gold standard for software development. Typically, the process will begin with a business analyst writing a business requirements document, describing what they need from the software. These documents are often very long and detailed, containing everything from overall strategy to technical specifications. Once all the documentation is complete, developers begin coding the software, completing it, and testing it. All of this process can take up to a few years to complete and for the software to be put into use.
Software development began to change with the development of the Internet. This is also the time when the effectiveness of the Waterfall method is questioned. It consumes too much time and effort of the implementation team, while lacking feasibility when it is only built entirely from research without real feedback from users.
In 2001, a group of 17 experienced software developers, including Kent Beck, Martin Fowler, Ron Jeffries, Ken Schwaber and Jeff Sutherland, came together to research and publish the Agile Manifesto with four key values and 12 principles that guide an iterative and people-centered approach to software development . The Agile Manifesto is seen as their belief in the perfect way modern software development should work.
With the Agile Manifesto, developers emphasize the importance of collaboration, adaptation and continuous improvement rather than being constrained by rigid implementation methods and extensive documentation. cumbersome of the traditional Waterfall method.
Iterative: The project will be implemented in repeated segments, usually with short time frames (from 1-4 weeks). In each segment, the project development team will perform all necessary work such as planning, analyzing requirements, designing, implementing, and testing to produce small parts of the product.
Incremental & Evolutionary: At the end of the segments, the team produces small parts of the final product, usually complete, functional, well-tested, and usable. . Over time, one segment follows another, and these working parts will accumulate and grow until all customer requirements are satisfied.
Adaptive: Because segments last only a short period of time and planning is constantly adjusted, changes during development (changing requirements, changing work technology, change in goal orientation, etc.) can all be responded to in an appropriate way.
Self-organizing and cross-functional teams: These team structures assign work without relying on rigid descriptions of titles or a clear hierarchy. The self-organizing team has all the necessary skills to be empowered to make decisions, self-manage and organize their own work to achieve the highest efficiency.
Empirical Process Control: Agile teams make data-driven decisions instead of theoretical calculations or presuppositions. Agile shortens the feedback cycle to easily adapt and increase flexibility so that you can control the process and improve labor productivity.
Face-to-face communication: Agile does not oppose documentation, but values ​​face-to-face communication rather than through paperwork. Agile encourages development teams to talk face-to-face to better understand what customers really need. In communication between teams, Agile encourages direct exchange and agreement on the design of the system and jointly implements it into required functions.
Value-based development: One of the basic principles of Agile is that "a well-running product is the measure of progress". Agile teams often collaborate directly and regularly with customers to know which requirements have higher priority, bringing more value as soon as possible to the project.
In the past, product development teams tended to focus on the best tools or processes to build products. However, Agile believes that those things are indeed important, but the people behind those processes are the most important factors.
Having the right team of individuals for the project is the most important factor for success. Good tools that fall into the hands of incompetent people become useless. In addition, interaction and connection between team members is also the key to teamwork and solving any problems that arise.
In the past, software engineers would spend a lot of time writing detailed documents about product design, specifications, etc. before getting down to actual coding. Detailed documentation is obviously a plus, however, there are other factors that they need to focus on more, which is providing a software that works well.
The Agile Manifesto puts delivering a functional product to your customers at the highest priority.
Previously, the project owner would draft the contract first, then the customer would be the one to complete the detailed picture of the required finished product. This can easily lead to conflicts between what the contract says, what the product can do, and what the customer actually requires.
With the Agile Manifesto, the focus is placed on continuous development. The implementation team will build an interaction and feedback loop with customers to ensure that the product created is right for them.
We always expect to build a perfect project implementation roadmap and never have changes, however, that almost never happens. The implementation process will always arise new problems that are not in the plan, and customer needs and requirements will always change.
The Agile Manifesto requires teams to have the ability to pivot and change direction at any time, with a flexible roadmap that changes by week, month or quarter.
1 – Agile's highest priority is to satisfy customers through early and continuous delivery of valuable products.
2 – Agile always welcomes change requests, even when they appear at the end of the implementation process, when everything is almost complete. Agile processes always exploit change to create competitive advantages for customers.
3 – Deliver working software to customers on a regular basis, from a few weeks to a few months.
4 – Business people and software developers must work together every day throughout the project.
5 – Focus on building the project around motivated individuals, providing them with the necessary environment and support, along with the belief in getting the job done well.
6 – The most effective method to convey information is face-to-face communication.
7 – Well-functioning software is the measure of Agile implementation progress.
8 – Agile processes promote sustainable development.
9 – Continuous attention to engineering and design improves agility.
10 – The art of maximizing unfinished business: Simplicity is essential.
11 – The best designs and requirements only appear in teams that are well-organized.
12 – The execution team needs to think about working effectively on a regular basis to make appropriate behavioral adjustments.
The Agile model is becoming increasingly popular, applied by many businesses to develop their products because it possesses outstanding advantages compared to traditional methods.
Easily make changes at any stage of the project, adapt quickly and effectively to changes, including product revision requests, market fluctuations, etc.
Develop and deliver products faster, because breaking the project into smaller parts allows the team to test each part, detect problems and fix problems faster.
Products have better quality because they always receive immediate feedback from customers and are optimized immediately afterwards.
Wastes less resources because the team always performs updated tasks, reduces waiting time, reduces time to fix product errors, reduces large amounts of paperwork, etc.
Project participants do not need to have all the information from the beginning, suitable for projects where the final goal is not clearly defined.
Besides the outstanding advantages, it is not difficult to recognize some remaining disadvantages when implementing the Agile model in practice:
It is difficult to plan a project, especially difficult to clearly determine the time to deliver the final product, not understand the true cost of the project, etc. because the project is divided into iterations. different.
Detailed instructions and training are required so that project members can clearly understand the Agile model and follow it clearly, especially in the beginning.
Few documents guide the project and do not clearly define expectations and deliverables from the beginning, because Agile model practitioners often believe that things will change so much that it is not necessary to record and save them. document storage.
Requires more commitment of time and effort from all parties, as everyone needs to continuously interact with each other throughout the project implementation process.
The cost of implementing projects using the Agile model is often higher than other development methods.
The table below lists 13 Agile methods , showing that the majority of companies today use Scrum as a basic approach. Besides, many companies have combined methods together. For example, 44.4% of companies use Waterfall, which means that a certain percentage uses both Waterfall and Scrum in their operations.
Let's learn in more detail about some of the most popular Agile methods.
Agile is a highly applicable product development model, suitable for projects that require flexibility, have high levels of complexity or uncertainty.
However, not all businesses are suitable for the Agile model. To successfully apply this model, some prerequisites are required:
First, members coordinate and communicate effectively internally. Good communication skills help the team understand customers and cooperate well with each other to ensure quality and speed.
Second, each member's autonomy must be guaranteed so that self-management groups can operate proactively and smoothly instead of just following superior instructions as in traditional models.
Third, activities are modularized through cross-functional teams. These teams need to be able to work at high speed and quality, with the customer at the heart.
Note that in fact, there are businesses that have applied the Agile model for 5-7 years but are still in a situation of "old wine in a new bottle". This is not surprising, because although Agile seems simple to understand, it is difficult to master, especially in a large enterprise. The main reason is because Agile focuses a lot on human factors including culture, communication, teamwork and cooperation between stakeholders. And changing culture and human behavior is never easy.
To solve this problem, businesses can consider hiring a good Agile coach. This training process can last from 3-12 months, or longer depending on needs.
Phase 1: Come up with ideas and build a project roadmap
Every product development project starts from the vision, ideation and roadmap building phase, with the participation of all stakeholders: software engineers, investors and any other stakeholders. Does anyone else have knowledge about the product?
For example, with the Scrum model, the implementation team will implement the tasks in phase 1 as follows:
Identify and document all business and user requirements
Embed these requirements into product features
Set goals for new products
Break down work items and prioritize tasks
Assign tasks to team members
Estimate time and cost for the project
This phase is especially important because it determines the initial scope of the project. Because the deployment process involves continuous iterations, implementation teams need to keep requirements to a minimum, and gradually add features in later stages of development.
Phase 2: Phase planning (Project development)
Once the ideation phase is complete, the execution team will receive a document that defines the entire project scope. This is when software engineers begin to organize their work into iterations (Sprints), analyzing customer requirements to complete the Product Backlog - an ordered list of necessary things. to improve the product, and build the first version of the product.
The project development phase will vary depending on the type of product the team deploys. This is also the longest phase in the Agile model, where the majority of the work will be done. The core goal of the execution team in this phase is to build some functional part of the product by the end of each Sprint.
Phase 3: Project implementation
In Agile development, the deployment phase depends heavily on what the team has created in previous phases. At this stage, the team needs to have a clear understanding of where the product will be deployed and how.
Phase 4: Testing
Testing activities take place throughout the Agile implementation process. Before releasing a product to the market, always ensure that it has gone through all the tests and quality assurance tests. The specialized departments will make the decision whether the product is fully functional and operates normally or not.
Phase 5: Product handover and maintenance
In the final phase of the Agile model, after delivering the product to the customer at the end of the Sprint, the project team will remain focused on continuous maintenance to resolve any issues, and to maintain functionality and performance at a high level.
Many issues will occur once users start interacting with the product, so the team may have to deal with some feature bugs or performance issues. But this also gives the team the opportunity to gather feedback and apply new improvements in subsequent Agile segments.
By applying the Agile model to project operations and implementation, businesses have saved a lot of time and resources in product development. The emergence of Agile, indeed, makes the process of finding and handling arising problems easier than ever.
However, applying Agile is not easy, it depends a lot on the flexibility of the leader himself. Bringing Agile into the business is not just like a project, it is also a major change to corporate culture and human resource development strategy.
Agile is just one of many project management methods. Ebook "Complete project management methods" will give you a more comprehensive view of the 6 most popular management methods today, the advantages and disadvantages and how to apply each method.