Agile
Last updated
Last updated
A flexible, iterative approach to project management and software development that prioritises customer feedback and adaptive planning.
Agile is a flexible way of working on projects, especially in software development. Instead of having one big plan that you stick to no matter what, agile lets you break things down into smaller, more manageable chunks. These smaller parts are called iterations or sprints, and you work on them one at a time.
The idea is to involve customers or stakeholders throughout the process. This means you're not just working in isolation; you're constantly checking in with them to make sure you're on the right track. And because you're delivering these smaller pieces regularly, they can give feedback and make changes along the way.
Another big part of agile is being adaptable. Plans can change, and that's okay. You're encouraged to adjust and refine your approach as you go, based on what you learn and the feedback you receive.
Agile also promotes teamwork. Instead of working in silos, everyone collaborates closely, sharing ideas and expertise. This helps to build a strong sense of ownership and accountability within the team.
User stories are a simple way to describe a feature or function from the perspective of the user. They help teams shift their focus from writing about requirements to having conversations about them. Each story is a short, written description that sparks discussions about what the user needs and how the product should be built to meet those needs. They are written using the following template:
As a (type of user), I want (some goal) so that (some reason).
As a customer, I want to be able to search for products by category so that I can easily find what I'm looking for.
As a user, I want to be able to log in with my social media account so that I can quickly create an account.
As a store owner, I want to be able to track inventory levels so that I can avoid stockouts.
As a student, I want to be able to submit assignments online so that I can complete my coursework on time.
As a teacher, I want to be able to grade assignments online so that I can provide timely feedback to students.
User stories are crucial in Agile environments, serving as the foundation of the development process. They center the development process around the user, ensuring the team builds what the user needs. By facilitating clear communication and collaboration between technical and non-technical team members, user stories foster a shared understanding of the product vision. This shared understanding helps teams prioritise features based on their value to the user, leading to a more efficient and effective development process. User stories are also flexible and adaptable, allowing for changes in requirements as the project progresses. User stories encourage collaboration between the development team, product owner, and stakeholders, leading to better decision-making and problem-solving. While user stories are not the only tool in the Agile toolkit, they are undoubtedly one of the most important, helping to ensure that the final product delivers value to the user.
Epics are a collection of user stories, tasks, or bugs that span across multiple sprints — with a common objective. They are a large body of work that is too big to be completed in a single sprint. It's a high-level user story that needs to be broken down into smaller, more manageable user stories to be delivered over multiple sprints. Think of an epic as a large project that encompasses multiple features or functionalities. By breaking down epics into smaller user stories, Agile teams can prioritize work, manage complexity, and deliver value incrementally.
Initiatives are collections of epics that drive toward a common goal.
Sprint planning is a crucial Agile ceremony where the development team and product owner collaborate to plan the work for the upcoming sprint. During this meeting, the team selects user stories from the product backlog that can be completed within the sprint timeframe. The team then breaks down these user stories into smaller, more manageable tasks. The goal of sprint planning is to create a shared understanding of the work to be done, estimate the effort required, and create a plan for completing the work within the sprint.
A framework provides a general structure or guideline that can be adapted and customised to fit specific needs while a methodology explicitly prescribes how to do something, it provides a specific process or set of rules to follow.
Imagine you are building a house. A framework is like the basic structure - the walls, the roof, the foundation. It gives you a shape, a starting point, but it doesn't tell you exactly what materials to use or how to decorate. You have flexibility to choose your own style within that structure. A methodology, on the other hand, is like a detailed blueprint. It tells you step-by-step how to build the house, what tools to use, what materials to buy, and even the specific order to do things in. It is a rigid set of rules to follow.
A framework provides a general structure while a methodology gives you a specific process to follow. Frameworks are flexible and allow for customisation while methodologies are more rigid and prescriptive.
Scrum
Kanban
Crystal
Feature-Driven Development (FDD)
SAFe (Scaled Agile Framework)
LeSS (Large-Scale Scrum)
DAD (Disciplined Agile Delivery)
Extreme Programming (XP)
Test-Driven Development (TDD)
Behavior-Driven Development (BDD)
Continuous Integration/Continuous Delivery (CI/CD)
Lean Software Development
This is one of the most widely used Agile frameworks. It emphasises iterative development, teamwork, accountability, and continuous improvement. Scrum uses time-boxed iterations called sprints to deliver working software.
Scrum is a framework used in agile project management, particularly in software development. It's structured around collaboration, iteration, and flexibility, aiming to deliver high-value products iteratively and incrementally.
In Scrum, projects are divided into small, manageable units of work called "sprints," usually lasting from one to four weeks. During each sprint, a cross-functional team works together to complete a set of tasks, focusing on delivering a potentially shippable product increment by the end of the sprint.
Key roles in Scrum include the Product Owner, who represents the stakeholders and defines the product backlog (a prioritised list of features or tasks); the Scrum Master, who facilitates the Scrum process and removes any obstacles the team may encounter; and the Development Team, which is responsible for delivering the product increment.
Scrum emphasises frequent communication, transparency, and adaptability, with regular meetings such as the daily stand-up (a short daily check-in meeting), sprint planning (where the team decides what work to tackle in the upcoming sprint), sprint review (where the team demonstrates the completed work to stakeholders), and sprint retrospective (where the team reflects on the sprint and identifies areas for improvement).
Kanban is a visual method for managing work. It focuses on visualising the workflow, limiting work in progress, and continuously improving the flow of work. Kanban is often used for continuous delivery and DevOps.
While Kanban is a standalone Agile methodology, it's often used in conjunction with Scrum. This is because they complement each other well. Scrum provides a structured framework with time-boxed iterations (sprints), regular meetings (sprints, daily stand-ups, retrospectives), and defined roles. Kanban, on the other hand, offers a visual approach to managing work, focusing on workflow, limiting work in progress, and continuous improvement.
By combining the two, teams can benefit from:
Improved workflow visualisation: Kanban boards help visualize the flow of work through different stages, making it easier to identify bottlenecks and areas for improvement.
Increased transparency: Kanban boards provide real-time visibility into the progress of work, allowing teams to track their progress and make informed decisions.
Enhanced focus: Kanban's emphasis on limiting work in progress can help teams focus on completing fewer tasks at a time, improving quality and reducing the risk of burnout.
Continuous improvement: Both Scrum and Kanban promote continuous improvement through regular retrospectives and a focus on learning from mistakes.
It's important to note that while Kanban can be used within a Scrum framework, it's not a strict requirement. Teams can choose to use either methodology independently or combine them in a way that works best for their specific needs.
Kanban and Scrum can be used separately. They are both distinct Agile methodologies with their own strengths and weaknesses.
Key Differences as Standalone Methodologies:
Scrum:
Time-boxed iterations: Scrum uses fixed-length iterations called sprints to deliver working software.
Defined roles: Scrum has specific roles like Product Owner, Scrum Master, and Development Team.
Regular ceremonies: Scrum follows a set of ceremonies like Sprint Planning, Daily Stand-ups, Sprint Review, and Sprint Retrospective.
Focus on predictability: Scrum aims to deliver predictable results within each sprint.
Kanban:
Continuous flow: Kanban emphasizes a continuous flow of work, without fixed iterations.
Visual workflow: Kanban uses visual boards to visualize the workflow and identify bottlenecks.
Work-in-progress limits: Kanban limits the amount of work in progress to improve efficiency and reduce context switching.
Focus on continuous improvement: Kanban promotes a culture of continuous improvement through regular retrospectives and kaizen events.
When to Use Which:
Scrum: Well-suited for projects with well-defined requirements and a need for predictability. It's ideal for teams that need a structured approach to deliver features in regular intervals.
Kanban: More flexible and adaptable, making it suitable for projects with evolving requirements or unpredictable workloads. It's ideal for teams that prioritize continuous delivery and value a more flexible approach.
In conclusion, while Scrum and Kanban can be used independently, they can also be combined to create a hybrid approach that leverages the strengths of both methodologies. The best approach for a team will depend on their specific needs, preferences, and project characteristics.
Crystal is a family of Agile methodologies that emphasises people and their interactions over processes and tools. It is a lightweight methodology that adapts to the specific needs of the team and project.
Feature-Driven Development (FDD) is a model-driven, short-iteration development process. It focuses on delivering features to customers in short iterations. FDD emphasises customer involvement, domain expertise, and teamwork.
A comprehensive framework for scaling Agile practices across large organisations, providing a structured approach to align teams, programs, and portfolios.
A lightweight framework for scaling Scrum to multiple teams, emphasising simplicity and self-organisation.
A hybrid framework that combines elements of various Agile methods, providing flexibility and adaptability to different organisational contexts.
Extreme Programming XP is a disciplined approach to software development that emphasises simplicity, communication, feedback, and courage. It uses practices like pair programming, test-driven development, and continuous integration.
A methodology where tests are written before the actual code, driving development and ensuring code quality.
A collaborative approach that focuses on defining software behavior through shared understanding between developers, testers, and business stakeholders.
A set of practices that automate the building, testing, and deployment of software, enabling frequent and reliable releases.
Lean is a methodology that focuses on eliminating waste and maximising value delivery. It borrows principles from Lean manufacturing and applies them to software development. Lean emphasises continuous improvement, customer focus, and rapid delivery.
Lean software development and Agile are often used together, but they are not the same. Lean is a methodology focused on eliminating waste and maximising value, while Agile is a philosophy that emphasises iterative development and customer collaboration.
Lean can be used as part of an Agile framework, but it can also be used independently. Some people consider Lean to be a subset of Agile, while others see them as complementary approaches leading to conflicting information as to whether lean is an agile methodology or not, stemming from this nuanced relationship between the two.
According to ProductPlan:
"Lean Software Development (LSD) is an agile framework based on optimizing development time and resources, eliminating waste, and ultimately delivering only what the product needs."
According to Atlassian:
"Often misunderstood as a subset of Agile, Lean is a distinct methodology with its own primary objectives — eliminating waste and improving operational flow."
Project Management and Collaboration Tools:
Jira: A comprehensive agile project management and issue tracking tool that supports any agile methodology, be it scrum, kanban, or your own unique flavor.
Trello: A visual Kanban board tool that helps teams organize and prioritize tasks.
Asana: A versatile project management tool that supports various agile methodologies, including Scrum and Kanban.
ClickUp: An all-in-one project management tool that offers a wide range of features, including task management, time tracking, and document collaboration.
Monday.com: A highly customizable work management platform that allows teams to tailor their workflows to their specific needs.
Version Control Systems:
Git: The most widely used version control system, enabling teams to track changes to their codebase and collaborate effectively.
GitHub: A popular web-based hosting service for Git repositories, providing features like code review, issue tracking, and project management.
Bitbucket: A Git repository management solution that offers features like code review, pull requests, and integration with other Atlassian tools like Jira.
Continuous Integration and Continuous Delivery (CI/CD) Tools:
Jenkins: A flexible and open-source automation server that can be used to automate various tasks in the software development lifecycle, including building, testing, and deploying applications.
CircleCI: A cloud-based CI/CD platform that provides a user-friendly interface and integrates with popular tools like GitHub and Bitbucket.
GitLab CI/CD: A built-in CI/CD pipeline in GitLab, allowing teams to automate their build, test, and deployment processes.
Communication and Collaboration Tools:
Slack: A popular team communication platform that enables real-time messaging, file sharing, and integration with other tools.
Microsoft Teams: A versatile collaboration tool that offers features like chat, video conferencing, and file sharing.