1. Why Agile?
Before agile became mainstream, most software projects followed a sequential, plan-driven approach commonly known as the Waterfall model. In Waterfall, each phase (requirements, design, implementation, testing, deployment) must be completed before the next begins. This works well when requirements are stable and well-understood upfront — think building a bridge or manufacturing a car. But software is different.
Software requirements change constantly. Users don't know what they want until they see it. Markets shift. Technology evolves. The Standish Group's CHAOS reports have consistently shown that over 60% of software features are rarely or never used, and that only about 29% of IT projects succeed on time, on budget, and with satisfactory results. The majority of failures can be traced back to poor requirements, late feedback, and inability to adapt to change.
The Problems with Waterfall
- Late feedback: users only see the product at the very end, when changes are most expensive
- Big-bang integration: components built in isolation often fail when combined
- Change resistance: any change to requirements triggers costly rework across all phases
- Documentation overhead: detailed specs become outdated before code is written
- Risk concentration: all risk is pushed to the end (integration and testing phases)
In February 2001, 17 software practitioners met at a ski lodge in Snowbird, Utah. They represented XP, Scrum, DSDM, Crystal, FDD, and other lightweight methodologies. Despite their different approaches, they found common ground and signed the Agile Manifesto — a document that would reshape the software industry.
Agile emerged not as a single methodology, but as a set of values and principles that prioritize human collaboration, working software, and adaptability over rigid processes and comprehensive documentation. It acknowledges that uncertainty is inherent in software development and builds processes that embrace rather than resist change.
2. The Agile Manifesto
The 4 Core Values
The manifesto declares four value pairs. In each pair, while the items on the right have value, the items on the left are valued more:
Agile does not mean "no documentation" or "no planning." It means we don't treat a 200-page requirements document as a substitute for talking to users. We still plan — we just plan in shorter cycles and adapt as we learn. A well-maintained Product Backlog is documentation.
The 12 Principles
Behind the manifesto are 12 principles that guide agile teams in practice:
- Customer satisfaction 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 to 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.
- Face-to-face conversation is the most efficient and effective method of conveying information.
- 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.
Principle #10 (simplicity) is the most underrated. It's not about doing less — it's about not building what isn't needed. Every feature has a maintenance cost. The most productive thing a team can do is say "no" to features that don't deliver real value.
3. Scrum Framework
Scrum is the most widely adopted agile framework. According to the 17th State of Agile Report (2023), 87% of agile teams use Scrum or a Scrum-based hybrid. Scrum is defined in the Scrum Guide (scrumguides.org), a concise 13-page document maintained by Ken Schwaber and Jeff Sutherland, the co-creators of Scrum.
Scrum is built on three pillars of empiricism: transparency (everyone sees the same reality), inspection (regularly check progress and artifacts), and adaptation (adjust when things deviate from the goal).
The Three Roles
| Role | Responsibility | Key Skill |
|---|---|---|
| Product Owner | Owns the Product Backlog. Maximizes the value of the product. Makes priority decisions. | Business acumen, stakeholder management |
| Scrum Master | Facilitates Scrum events. Removes impediments. Coaches the team on agile practices. | Servant leadership, facilitation |
| Development Team | Self-organizing, cross-functional (3-9 people). Builds the increment each sprint. | Technical skills, collaboration |
The Scrum Master is not a project manager. They don't assign tasks, track hours, or report status to management. They serve the team by removing blockers and protecting the sprint from scope changes. If your SM is updating Gantt charts, something has gone wrong.
The Three Artifacts
- Product Backlog: an ordered list of everything that might be needed in the product. Owned by the PO. Continuously refined (groomed). Items at the top are more detailed and ready.
- Sprint Backlog: the set of Product Backlog items selected for the sprint, plus a plan for delivering them and achieving the Sprint Goal. Owned by the Dev Team.
- Increment: the sum of all completed Product Backlog items during a sprint, plus all previous increments. Must meet the Definition of Done and be potentially releasable.
The Five Events
Every Scrum event is time-boxed — it has a maximum duration that cannot be exceeded. This creates healthy constraints and forces focus.
The retrospective is arguably the most important ceremony. Without it, teams don't improve — they just repeat. Classic format: What went well? (keep doing), What didn't? (stop doing), What to try? (experiment). The output should be 1-2 concrete action items that go into the next sprint backlog. If your retros produce no actions, they're a waste of time.
4. Kanban
Kanban originated in Toyota's manufacturing system in the 1950s. The word literally means "visual signal" or "card" in Japanese. David J. Anderson adapted it for knowledge work and software development in 2010. Unlike Scrum, Kanban does not prescribe roles, ceremonies, or time-boxed iterations. It focuses on three things: visualize work, limit work in progress, and manage flow.
A Kanban board has columns representing stages of your workflow (e.g., Backlog, To Do, In Progress, Review, Done). Cards move from left to right as work progresses. The key innovation is the WIP limit — a maximum number of cards allowed in each column.
Why WIP Limits Matter
Work in Progress (WIP) limits are the single most important element of Kanban. Without them, a Kanban board is just a visual task list. Here's why they work:
- Reduced context switching: studies show that context switching wastes 20-40% of a developer's productive time. Finishing one thing before starting another eliminates this waste.
- Faster flow: Little's Law (from queuing theory) states that
Lead Time = WIP / Throughput. Reducing WIP mathematically reduces lead time. - Earlier bottleneck detection: when a column hits its WIP limit, work backs up, making the bottleneck visible. The team can then address the root cause.
- Higher quality: focused attention on fewer items leads to fewer defects and better craftsmanship.
# Little's Law: L = λ × W # L = average number of items in the system (WIP) # λ = average arrival rate (throughput) # W = average time in the system (lead time) # Example: Team delivers 8 items/week, has 24 items in progress lead_time = WIP / throughput lead_time = 24 / 8 # = 3 weeks per item # Reduce WIP to 16: lead_time = 16 / 8 # = 2 weeks per item (33% faster!) # The math is clear: less WIP = faster delivery
A good starting WIP limit for "In Progress" is number of team members minus 1 (or just the number of pairs if you pair program). Adjust based on observation: if the column is always empty, the limit is too high. If work queues behind it constantly, the limit is too low or you have a systemic bottleneck.
5. User Stories & Estimation
A user story is a short, plain-language description of a feature told from the perspective of the person who desires the new capability, usually a user or customer. The canonical format is:
As a [type of user], I want [some goal], So that [some reason/business value]. # Example: As a logged-in customer, I want to filter my orders by date range, So that I can quickly find a specific purchase for a return. # Acceptance Criteria (Given-When-Then): Given I am on the orders page When I select a start and end date Then only orders within that range are displayed And the total count updates accordingly
Good user stories follow the INVEST criteria:
- Independent — can be developed in any order
- Negotiable — details are discussed, not dictated
- Valuable — delivers value to the user or business
- Estimable — small enough to estimate effort
- Small — fits within a single sprint
- Testable — has clear acceptance criteria
Estimation Techniques
| Technique | How it Works | Best For |
|---|---|---|
| Story Points (Fibonacci) | 1, 2, 3, 5, 8, 13, 21 — relative complexity compared to a reference story | Sprint planning, velocity tracking |
| Planning Poker | Each member independently picks a card, then discuss differences | Reducing anchoring bias, team alignment |
| T-Shirt Sizing | XS, S, M, L, XL — quick gut-feel estimates | Early backlog grooming, roadmap planning |
| #NoEstimates | Track throughput (items/week) instead of estimating individual stories | Mature teams with consistent story sizes |
The Fibonacci sequence (1, 2, 3, 5, 8, 13, 21) has increasing gaps between numbers. This reflects reality: as tasks get bigger, our ability to estimate them accurately decreases. The gap between 5 and 8 is intentional — it forces teams to acknowledge uncertainty rather than pretending they can distinguish between a "6" and a "7."
Definition of Done (DoD)
The Definition of Done is the team's shared agreement on what "done" really means. Without it, "done" is subjective — one person thinks it means "code written," another thinks it means "tested and deployed." A good DoD eliminates ambiguity and ensures consistent quality.
# Definition of Done — Team Agreement done_when: - "Code reviewed by at least 1 peer" - "Unit tests written and passing (>80% coverage)" - "Integration tests green on CI" - "No critical/high SonarQube issues" - "API documentation updated (if applicable)" - "Deployed to staging environment" - "PO has accepted the increment" # The DoD is not negotiable during a sprint. # Items that don't meet the DoD are NOT done.
6. Agile Metrics
What gets measured gets managed — but only if you measure the right things. Agile metrics should focus on outcomes (value delivered) and flow (how smoothly work moves through the system), not outputs (lines of code) or utilization (hours worked).
| Metric | Definition | What It Tells You |
|---|---|---|
| Velocity | Story points completed per sprint | Team capacity and predictability over time. Use the average of last 3-5 sprints for planning. |
| Lead Time | Time from request to delivery | Total time to value for the customer. Includes waiting time. |
| Cycle Time | Time from "in progress" to "done" | How long work takes once the team starts it. Measures team efficiency. |
| Throughput | Number of items completed per time unit | Delivery rate. More stable than velocity when story sizes vary. |
| Sprint Burndown | Remaining work vs time within a sprint | Whether the team is on track to complete sprint commitments. |
Burndown Charts & Cumulative Flow Diagrams
A Burndown Chart plots the amount of work remaining (y-axis) against time (x-axis) within a sprint. The ideal line is a diagonal from top-left (all work remaining) to bottom-right (zero remaining). If the actual line is above the ideal, the team is behind; below means ahead.
A Cumulative Flow Diagram (CFD) is Kanban's primary diagnostic tool. It shows the number of items in each state (To Do, In Progress, Done) over time as stacked area bands. Key insights:
- Widening bands: indicate a bottleneck (work is piling up in that state)
- Flat top line: means no new work is entering the system (scope freeze)
- Horizontal distance: approximates lead time
- Vertical distance: shows WIP at any point in time
Never use velocity to compare teams or to set performance targets. A team that is told "your velocity must increase by 20%" will simply inflate estimates. Velocity is a planning tool, not a productivity measure. The moment you weaponize it, it becomes meaningless.
7. Agile Tools
Tools support the process — they don't define it. A team using sticky notes on a wall can be more agile than a team with a $50,000 Jira instance. That said, for distributed teams and complex projects, digital tools are essential.
# Create an issue with labels and assignment gh issue create --title "Add user authentication API" \ --label "feature,sprint-3" --assignee @me # List open issues for the current sprint gh issue list --label "sprint-3" --state open # Close an issue when the PR is merged gh issue close 42 --reason completed # View project board status gh project item-list 1 --owner @me --format json
Start with GitHub Projects. It's free, integrated with your code, and supports both Kanban and Scrum-style boards. Use labels for sprint tagging, milestones for release planning, and GitHub Actions to automate board updates when PRs are merged.
8. Agile Anti-Patterns
Adopting agile is easy. Being agile is hard. Many organizations adopt the ceremonies and vocabulary of agile without embracing the underlying values. Here are the most common anti-patterns to watch for:
| Anti-Pattern | Symptom | Fix |
|---|---|---|
| Zombie Scrum | All ceremonies happen but nothing valuable ships. The team goes through the motions. | Focus on the Sprint Goal. If the increment isn't usable, the sprint failed. |
| Hero Culture | One person carries the team. Knowledge silos form. When the hero leaves, the project collapses. | Pair programming, shared ownership, rotate responsibilities. |
| Scope Creep | PO adds work mid-sprint. Commitments become meaningless. | Sprint boundary is sacred. New items go to the backlog for next sprint. |
| Skipping Retros | "We're too busy to reflect." Same mistakes repeat every sprint. | Retros are non-negotiable. Even 30 min is enough. |
| Status Meeting Daily | Daily Scrum becomes a report to the manager. People disengage. | The daily is for the team, by the team. Managers observe, don't lead. |
| Agile in Name Only | Deadlines fixed, scope fixed, no team autonomy. Waterfall with standups. | Fix either scope or timeline, not both. Give the team real decision power. |
The #1 sign of fake agile: the team has no power to say no. If the PO, manager, or stakeholder can override sprint commitments without consequences, you don't have Scrum — you have a to-do list with extra meetings. True agile requires team autonomy and mutual respect for commitments.
9. Scrumban — The Best of Both Worlds
Many mature teams evolve toward Scrumban, a hybrid that combines Scrum's structure with Kanban's flow optimization. Scrumban works particularly well for teams that:
- Have a mix of planned work and unplanned support/bug-fix work
- Want to keep sprint cadence but reduce planning overhead
- Need WIP limits to manage flow but still value regular retrospectives
| From Scrum | From Kanban |
|---|---|
| Sprint cadence (for planning and retros) | WIP limits on board columns |
| Product Owner role | Pull-based work (no sprint backlog commitment) |
| Retrospectives | Continuous flow (no sprint scope freeze) |
| Sprint Review / Demo | Cycle time as primary metric |
Scrum: new teams, product development, when you need structure and cadence. Kanban: operations, support teams, continuous delivery pipelines. Scrumban: teams that have outgrown pure Scrum and want flow optimization without losing the rhythm of sprints.
10. Agile Checklist
Use this checklist to assess whether your team is practicing agile effectively. Click to check off items:
Process
- Product Backlog exists and is prioritized
- Sprint length is defined and consistent
- Sprint Planning at start of every sprint
- Daily Scrum (15 min, team-focused)
- Sprint Review with stakeholder demo
- Retrospective with action items
Quality
- Definition of Done agreed by team
- User stories with acceptance criteria
- Estimation done (poker/T-shirt)
- Board visible and updated daily
- WIP limits enforced
- Code review on every PR
Culture
- Team has autonomy to self-organize
- PO available daily for questions
- No scope changes during sprint
- Metrics tracked (velocity or cycle time)
- Continuous improvement from retros
- Sustainable pace (no crunch)