โณ๏ธAgile
a software development methodology
The Agile software development methodology is one of the simplest and most effective processes to turn a vision for a business need into software solutions. Agile is a term used to describe software development approaches that employ continual planning, learning, improvement, team collaboration, evolutionary development, and early delivery. It encourages flexible responses to change.
Agile vs Scrum
Agile | Scrum | |
---|---|---|
Philosophy | Flexible, iterative approach to development. Focuses on individuals and interactions over processes. | Structured project management framework that implements the Agile philosophy. |
Practices | Practices like continuous integration, test-driven development, pair programming, user stories. No mandated practices. | Specific prescribed development practices including sprints, daily scrums, sprint planning, sprint reviews, retrospectives. |
Roles | No defined roles. Encourages collaborative teams and shared leadership. | Well-defined roles - Scrum Master, Product Owner, and Development Team (3-9 engineers). |
Management Style | Servant leadership style. Empowering teams to self-organize and make decisions. | Lightly controlled process with fixed sprint lengths. Scrum Master oversees the process. |
Requirements | Welcomes changing requirements at any stage. | Requirements are locked down at the start of each 2-4 week sprint. |
Estimation | Story points, ideal days, t-shirt sizing. Focus on velocity trends. | Time-based estimation in hours for each user story to complete sprint goals. |
Tracking Progress | Burndown charts, team velocity, flowcharts. | Sprint burndown charts to track daily progress within a sprint. |
Guidance Level | High-level principles and values. | Prescriptive framework with specific rules and practices for implementation. |
Scrum
Scrum is an agile development method that concentrates specifically on how to manage tasks within a team-based development environment.
One of the most popular frameworks for implementing Agile development is Scrum. Scrum is a framework that provides a structured approach to Agile development, with defined roles, events, and artifacts.
Some of the key roles in Scrum include:
Product Owner: The Product Owner is responsible for defining and prioritizing the product backlog, and ensuring that the development team is working on the most valuable features.
Scrum Master: The Scrum Master is responsible for ensuring that the Scrum framework is followed and that the development team has everything they need to be successful.
Scrum Team: The team manages its own work and organizes the work to complete the sprint or cycle.
Scrum Practices
The flow of Scrum
Scrum testing is divided into iterations called Sprints.
The Product Backlog is a list of requirements for the end product.
During each Sprint, the top user stories from the Product Backlog are selected and turned into a Sprint Backlog.
The team works on the Sprint Backlog to deliver the functionality for that Sprint.
The team checks their progress daily in a Daily Scrum meeting.
At the end of the Sprint, the team delivers product functionality. โ
Artifacts of Scrum
๐ User stories
These are short explanations of the functionalities of the system under test. For example, for an Insurance Provider, a user story could be "๐ Policyholders can update their payment details using the online system."
๐๏ธ Product Backlog
This is a collection of user stories captured for a Scrum product. The Product Owner is responsible for preparing and maintaining the product backlog, which is prioritized by the Product Owner. Anyone can add to it with approval from the Product Owner. ๐ The Product Backlog is a living document that evolves throughout the development process.
๐
Release Backlog
A release is a time frame in which a set number of iterations or Sprints are completed. The Product Owner coordinates with the Scrum Master to decide which stories should be targeted for a release. Stories in the release backlog are targeted to be completed in a release. ๐
๐ Sprints
A Sprint is a set period of time during which a defined set of user stories are completed. ๐ The length of a Sprint is usually 2-4 weeks, and is decided by the Product Owner and development team.
๐ Sprint Backlog
This is a set of user stories to be completed in a Sprint. During the Sprint Backlog, work is never assigned, and the team signs up for work on their own. It is owned and managed by the team, while the estimated work remaining is updated daily. It is the list of tasks that have to be performed in the Sprint. ๐
๐ซ Block List
This is a list of blocks and unmade decisions owned by the Scrum Master and updated daily. It is used to track any obstacles or issues that may be preventing the team from completing their work.
๐ Burndown Chart
This chart represents the overall progress of the work in progress and the work completed throughout the process. It represents in a graph format the stories and features not completed. ๐ The burndown chart is used to track progress and identify any issues or delays that need to be addressed.
Ceremonies
๐ Sprint Planning ๐
๐๏ธ Teams plan โ work for the next ๐sprint:
๐ฅ Scrum Team + Product Owner
๐ Select tasks from the backlog
๐ Identify the scope
๐ Start sprint!
๐ Daily Standup
โ What they did yesterday
โฒ What they'll do today
๐ค Blockers
๐ฅ Project Team
Brief (stand up!๐ฃ)
๐ฃ Sprint Review
๐ฃ Teams demo ๐ฌ work completed:
๐ฅ Scrum Team + Product Owner + Stakeholders
๐ Discuss what's done
๐ End of sprint
๐ Retrospective
๐ Teams reflect:
๐ฅ Entire Scrum Team
๐กWhat went well
๐ What to improve next sprint
๐ End of the sprint before planning
Why are ceremonies important?
They create โrhythm and ๐กinsights at key points:
โ Plans are made
โ Progress is tracked
โ Outcomes inspected ๐ต๏ธโโ๏ธ
โ Improvements identified
Agile vs Waterfall
Aspect | Waterfall Model | Agile Model |
---|---|---|
Development process | Sequential process that follows a linear approach to software development. Each phase of the process is completed before moving on to the next one. | Iterative process that focuses on delivering working software in small increments. The process is divided into sprints or iterations, with each iteration delivering a working product increment. |
Requirements | Requirements are gathered at the beginning of the process and documented heavily. | Requirements are gathered throughout the process and documented in a lightweight manner. The focus is on flexibility and adaptability to changing requirements. |
Documentation | Heavy documentation is required at each stage of the process, including requirements, design, testing, and maintenance. | Minimal documentation is required, with a focus on delivering working software. Documentation is done in an iterative manner and is kept up-to-date throughout the process. |
Flexibility | The Waterfall model is rigid and inflexible, with limited scope for changes or modifications once the development process is initiated. | The Agile model is flexible and adaptable, with a focus on responding to change quickly and efficiently. The development team can respond to changing requirements and adapt the process to changing business needs. |
Deliverables | A complete product is delivered at the end of the process, with little opportunity for feedback or changes. | Incremental deliverables are delivered throughout the process, with a focus on getting early feedback and incorporating changes quickly. |
Testing | Testing is done after the development process is completed, resulting in a longer feedback loop and less opportunity for changes. | Testing is done in parallel with development, resulting in a shorter feedback loop and more opportunity for changes. The focus is on delivering a quality product incrementally. |
Customer involvement | Customers are involved at the beginning of the process to provide requirements, but their involvement is limited during the development process. | Customers are involved throughout the development process, providing feedback and guidance to the development team. The focus is on delivering a product that meets the needs of the customer. |
Team structure | The Waterfall model has a hierarchical team structure, with a clear division of responsibilities and little opportunity for collaboration. | The Agile model has a collaborative and self-organizing team structure, with a focus on collaboration, communication, and teamwork. The team is responsible for delivering a quality product incrementally. |
The Waterfall model is a sequential and inflexible approach to software development.
The Agile model is an iterative and flexible approach that focuses on delivering working software incrementally and responding to changes quickly and efficiently.
Last updated