What Is Agile Methodology?
A guide for beginners and practitioners alike. Learn more about Agile values and principles; advantages of Agile, Kanban, Scrum; and the main keywords in the Agile world.
Join the DZone community and get the full member experience.Join For Free
Agile is a software development methodology where the product is delivered in increments that can be used and later be added on to, instead of one whole product after a long development cycle.
The word agile means the ability to move quickly or easily, hence why it was chosen by the authors of the Agile Manifesto. The Agile Manifesto was a result of the need for a better software development methodology that will cover the gaps of existing development methods.
The traditional waterfall method uses a set of steps that result in a ready product at the end. Every step depends on the output of the previous step. Waterfall focuses on extensive documentation of design, requirements, and the development process.
Agile methodology uses the steps of a development lifecycle that are implemented frequently over a period of time called a "sprint." Requirements are planned and discussed within the team of each sprint and mapped for the team to pick. Agile focuses on a working prototype over documentation. Only the bare minimum is documented while a working prototype is delivered and updated every sprint.
This article covers Agile and everything you need to know in order to get started on an Agile team.
Agile Project Management Explained
Agile project management is an iterative software development method that incorporates new requirements and customer feedback in continuous releases.
Teams deliver in iterations and increments. Agile methodology has sprints that contain requirement planning, development, testing, and deployment in a dedicated period of time (usually two to four weeks). Therefore, a working prototype is delivered faster and customer feedback can be incorporated along with regular updates.
By breaking the development process into smaller cycles, an Agile team delivers requirements faster with more flexibility and collaboration within the teams.
Agile project management requires a change in mindset. It forces teams to think iteratively rather than waiting on every step of the process. It erases the need for continuous documentation and gives importance to working prototypes that are delivered faster.
The Agile Manifesto
The Agile Manifesto was first introduced by seventeen engineers when they were on a vacation in the Wasatch Mountains of Utah. In a need to overcome the challenges of traditional development methods, professionals from various domains came up with a solution in the form of the Agile Software Development Manifesto. History: The Agile Manifesto by a member of the Agile Alliance covers the story in detail.
The Agile Manifesto is a document that explains Agile software development and the Agile values and principles a team must adopt to become an Agile team.
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The values on the left that are bolded are preferred over the values on the right. The bolded values help teams fast-track the development process by focusing on product and customer feedback rather than processes, documentation, and negotiations. This doesn't imply that the values on the right are not important, just that the values on the left are prioritized over traditional methods.
Agile principles are another part of the manifesto that help guide and implement Agile methodology in teams. According to the Agile Alliance —12 Principles Behind the Agile Manifesto, the principles are as below:
- 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.
Agile Principles in Action covers more on each Agile principle and how it can be used by teams to adapt to Agile development.
The Advantages (or Benefits) of Agile
Agile methodology has quickly gained popularity due to its faster results and ability to overcome the shortcomings of traditional development methods.
Traditional development methods focus more on processes, documentation, and step-by-step approaches to development. This results in extensive development and deployment in the development phase of the process, making it difficult to include customer feedback or other business requirements in later stages.
Every small change needs an extensive amount of unit testing, integration testing, and deployment cycles in order to push the update to production. As businesses evolve with changes in technology and new customer needs, new updates need to be rolled out to stay in the competitive market. Therefore, this approach has many drawbacks for modern-day applications.
Agile focuses on the working model, and while working in sprints, teams plan the requirements, build designs, develop, test, and deploy to further environments. A working model is always available to customers with new changes rolled out frequently. Any new features or customer feedback can be included in program increments. Teams then pick them from the backlog and start developing as a part of the sprint.
Agile helps with overall customer satisfaction, rolling out business needs quickly, giving teams flexibility, and prioritization of requirements in fast-paced markets. The article 5 Benefits of Agile Project Management explains in detail the benefits of Agile and how teams can benefit from adopting an Agile mindset.
What Are Kanban and Scrum(Master) in Agile?
Kanban and Scrum are famous development frameworks that are adapted in Agile in order to use Agile to its fullest potential. Both Kanban and Scrum have similar goals but are different in the way they are implemented.
Below we study the definitions of Kanban and Scrum and later the differences between the two:
Definition of Kanban
Kanban is a method of differentiating tasks using categories in order to reduce the work-in-progress queues. Kanban is a Japanese word that stands for "virtual cards" or "signs." All the tasks are divided into the categories Planned, In-Progress, and Done.
Hence it is easier to manage the tasks in progress by having a limit so that they don't pile up and stop the team from picking new tasks from the backlog.
Kanban board consists of tasks divided into different statuses. The team is responsible for the task flow that is starting on a new task, moving it to In-Progress, and then moving it to Done once the task is finished.
To know more in detail about Kanban, Getting Started with Kanban for Software Development is a good read with all the information on Kanban that you'll need.
Definition of Scrum
Scrum is a standardized process that is used in complex requirements to ensure continuous delivery as per business requirements.
Scrum has a list of items that are to be worked on, pre-decided, and discussed with the team. This list is called a product backlog. Teams work in sprints in order to complete the tasks. Sprints can be from a week to one month long. Teams plan the items in the backlog and work on tasks. At the end of the sprint, teams have a retrospective. Points discussed in retro are included/adapted in future sprints. The team meets every day in a short call, aka daily stand-up (generally 15 minutes), to discuss the individual tasks completed, tasks planned, and any blockers they might have.
Each sprint results in a new feature in the working model. This way of Agile Scrum has helped teams achieve complex goals and deliver working prototypes faster while keeping up with customer feedback.
A Scrum team consists of:
- Product owner
- Scrum master
The product owner is responsible for the product backlog, planning, and discussing any doubts the team might have. The scrum master is responsible for daily stand-up calls and collaborating with the team in resolving any blockers they might have — basically keeping the team on the right track and ensuring Agile values and principles are followed.
What Is Scrum? How It Works, Best Practices and More covers more on Scrum.
Differences Between Kanban and Scrum in Simple Words
Kanban and Scrum are both Agile practices. Kanban is a process-based approach with tasks divided into categories and specific timelines for the tasks in each category. Scrum is an iteration-based approach wherein planning, implementation, testing, and retrospective take place each iteration. Program increment occurs every few iterations where teams meet and plan for future iterations.
While Kanban is a continuous process, Scrum is based on an iteration-based working model. An iteration/sprint can be anywhere from one to four weeks long. Changes are rolled out at the end of each sprint.
Area of Focus
Kanban being a continuous process focuses on identifying and reducing bottlenecks in the process. Scrum focuses more on delivering a working model at the end of each iteration. Kanban uses metrics to measure delivery using work in progress, cycle time, etc., while Scrum uses velocity.
Tolerance to Change
Once planning is done in a Scrum sprint, the team is not allowed to make changes in the requirement. Any new change is treated as a requirement that the team plans and adapts in future sprints. Meanwhile, in Kanban, change is acceptable at any stage in the cycle.
An Agile team consists of a scrum master, a product owner, and developers. There is no specific role distribution in Kanban.
Roles and Structure for Agile Team
To adopt Agile methodologies, organizations, businesses, and individuals need to adapt to the Agile mindset. Agile teams are structured in a way so that they can function in a fast-paced environment.
Roles in an Agile Team
Team Lead (Scrum Master)
A lead referred to as a scrum master in a Scrum team is responsible to keep the team on track by monitoring the progress, helping the team overcome blockers, and following the Agile values and principles agreed by the team.
A product owner represents the stakeholders or sponsors of the project and is responsible for adding features, including customer feedback, and maintaining the product backlog. The product owner also helps resolve any queries and clarifications needed in the requirements.
Team members include the development team that may or may not have the same set of skills but contributes to the project as a whole. Each team member is responsible for their respective tasks. Team members may include testers as Agile gives importance to testing from the early stages of development.
Stakeholders may be the direct investors, end-users, internal users that are impacted by the product, or any business individual "owning" the product.
Supporting Roles in an Agile Team
One of the supporting roles an architect is tasked with is making sure the team goal is in line with the organization's goals and values.
Another supporting role, a technical expert pitches in when the team needs additional technical help in tasks like builds, cloud infrastructure, or simply analyzing the project architecture and suggesting solutions for problems faced by the team.
Team Structure in Agile
In a generalist team, all the team members are aware of all the tools and software used but do not necessarily have in-depth knowledge about the same. This enables the team to be able to switch between tasks and collaborate effectively.
All members of the team are experts in their respective domains and can perform tasks effectively. Therefore teams have an expert point of contact for each requirement. In larger teams, this team structure is highly effective in tackling various requirements in different areas of the project.
Teams switch between tasks every sprint. If the team worked on development in a sprint, they may switch to testing or quality in the next and vice versa.
A sub-team is a small team that is a part of a larger Agile team. They focus on specific areas of the project that contribute to the main product goal. Sub-teams may work independently or in collaboration with other teams. They help in breaking down larger Agile teams and contribute effectively in a certain area of the project.
Cross-functional teams contain individuals from multiple areas of project development like software development, testing, infrastructure, quality assurance, etc. This helps in the end-to-end development of the product with reduced dependency on other products/teams.
If you are working in an Agile team or transitioning to Agile, 10 Tips for Transforming Into a High Performing Agile Team covers best practices and steps to consider in building a high-functioning Agile team.
Key Agile Concepts
- User stories: The smallest unit of work in Agile, user stories depict the changes needed to be made by developers.
- Lead time agile: Lead time is the amount of time from the time the tasks are created to their completion.
- Cycle time agile: Cycle time refers to the time a task is started to the time it is ready for deployment.
- Product roadmap: Product roadmaps represent the product evolution over time. Upcoming features and functionalities are a part of the product roadmap.
- Scaled agile framework: Scaled agile framework or SAFe Agile is a framework used to adopt Agile on an enterprise scale.
- Epic: Epic is a larger part of a functionality/requirement that can be broken down into user stories.
- Personas: Persona is a description of the end-user that is using the application. The description may be real or hypothetical.
- Product owner: A product owner represents the stakeholders or sponsors of the project and is responsible for the product backlog.
- Refactoring: Changing or updating already existing functionality or code to make improvements or add new updates while maintaining the same behavior.
- Story mapping: Story mapping is mapping the user stories in order of priorities along with the progress made, therefore representing the product backlog in a more distributed way.
- Three C's: Collaboration, communication, and coordination are the three C's in Agile.
- Unit testing: Developers add small programs/tests and checks on code to test values and the working of the code.
- Version control: Version control allows developers to maintain different instances of a codebase. It is a way of managing the code base so that a working model is always available for the users.
The Agile glossary covers the Agile keywords that will help you in the Agile world.
Organizations and businesses are transitioning towards Agile as business requirements need to be implemented faster while considering and including customer feedback. Knowing all the details and keywords of Agile helps individuals work effectively in their roles and adopt the Agile mindset.
DZone covers a wide range of articles on Agile with new content added regularly. Stay up to date with changing trends and various factors of Agile software development in our Agile Zone.
Opinions expressed by DZone contributors are their own.