Agile software development - Core Practices and Management
Learn the core agile practices, how to plan and measure iterations, and strategies for managing technical debt and team burnout.
Summary
Read Summary
Flashcards
Save Flashcards
Quiz
Take Quiz
Quick Practice
What is the typical duration of an Agile iteration or sprint?
1 of 17
Summary
Agile Development Practices: Core Concepts and Implementation
Introduction
Agile is a framework for managing software development projects that emphasizes flexibility, continuous delivery, and team collaboration. Rather than planning the entire project upfront and executing a rigid plan, Agile breaks work into small, manageable pieces and adapts to change throughout the development cycle. This approach has become the dominant methodology in modern software development because it reduces risk, improves quality, and delivers working software more frequently than traditional approaches.
Core Practices Overview
Iterative and Incremental Development
The foundation of Agile is breaking work into small time-boxed cycles called iterations or sprints, typically lasting one to four weeks. Each iteration follows a consistent pattern:
Planning - The team selects work to complete
Analysis and Design - Understanding what needs to be built
Coding and Unit Testing - Developers build features and test their own code
Acceptance Testing - Verifying that the work meets requirements
The key is that all these activities happen within the same iteration. At the end, the team demonstrates a working product increment to stakeholders—actual, functional software that represents real progress.
This approach reduces risk because you don't wait weeks or months to discover problems. Problems surface quickly, and the team adapts. It also allows your product to evolve based on feedback rather than being locked into initial requirements that may have changed.
Face-to-Face Communication and Information Radiators
Agile values direct, frequent communication. Traditionally, this meant co-locating teams in the same physical space, where conversations could happen spontaneously in front of a whiteboard.
While modern tools have made remote work viable, the principle remains: frequent, direct communication is critical. This isn't about status emails or formal reports—it's about quick conversations that resolve problems immediately.
One practical tool for communication is an information radiator: a large, visible display showing current project status. This might be a wall of sticky notes, a dashboard on a monitor, or any highly visible display that keeps everyone informed without requiring them to ask.
Daily Stand-Up Meeting
Every day, the team holds a brief stand-up meeting (about 15 minutes) where each member answers three questions:
What did I complete yesterday?
What do I plan to complete today?
Are there any impediments blocking my progress?
The stand-up is not a problem-solving meeting. If a detailed discussion is needed, that happens afterward with relevant people. This keeps the meeting short and focused on status and blockers.
Quality Built In From the Start
Rather than saving quality for the end (testing and bug-fixing), Agile builds quality into every iteration. Common techniques include:
Continuous integration - Code is integrated and tested frequently, not just at the end
Automated unit testing - Developers write tests as they code
Test-driven development - Writing tests before writing code
Pair programming - Two developers work together at one computer
Code refactoring - Continuously improving code structure without changing functionality
Design patterns and domain-driven design - Using proven architectural approaches
Because quality is built in from the beginning, the team can confidently demonstrate working software at the end of each iteration.
Iteration Planning and Fixed Parameters
The Fixed-Variable Principle
A core principle of Agile iteration planning is what gets fixed and what stays flexible. Each iteration fixes the following:
Time - The iteration length is set (typically 1-4 weeks)
Quality expectations - The team commits to a quality standard
Resources - The team members and their availability are determined
What remains flexible is the scope of work. The amount of features or tasks completed may vary as new information emerges.
This is the opposite of traditional project management, where you might fix scope and let time expand (saying "we need to do all these features, no matter how long it takes").
Why Scope Flexibility Matters
Adding extra work to an iteration that already has fixed time and resources creates a dilemma: something must give. Typically, it's quality that suffers. Developers rush, testing is skipped, and technical debt accumulates.
The iteration backlog represents a commitment: "This is the amount of work we believe we can complete with our current resources in this time period while maintaining quality." Respecting this commitment is essential to sustainable progress.
Common Pitfalls in Agile Adoption
Understanding what goes wrong is as important as understanding what goes right. Teams frequently encounter these obstacles:
Lack of overall product design - Starting with iterations too early, without thinking about the overall architecture, leads to constant rework as the system grows.
Scope creep during iterations - Adding new user stories to an iteration already in progress disrupts the team's flow and should be deferred to the backlog for the next iteration.
Insufficient training - Teams and organizations jumping into Agile without proper training is a leading cause of failed implementations. Everyone needs to understand the principles, not just the mechanics.
Weak product owner role - The product owner prioritizes what the team works on. If this role is staffed by a developer rather than a business representative, priorities may not reflect customer needs.
Unfocused teams - Teams working on multiple products simultaneously struggle to commit to iteration goals and maintain consistent velocity.
Over-planning - Spending excessive time preparing the backlog before iterations begin slows progress. Backlog refinement should happen continuously as the product evolves.
Task assignment instead of self-selection - When managers assign specific tasks to developers, it limits empowerment and prevents cross-training. Better teams allow members to pull work they're capable of doing.
Scrum masters coding too much - A Scrum master (the facilitation role) who spends significant time coding cannot fully focus on removing blockers and helping the team improve.
Lack of test automation - Manual testing becomes repetitive and time-consuming, making rapid changes risky and refactoring difficult.
Accumulating technical debt - Taking shortcuts to meet iteration goals creates technical debt that compounds over time, slowing future progress.
Velocity: Measuring Agility
Velocity is a metric that measures how much work a team completes per iteration. It's calculated by assigning estimates (often in story points or hours) to work items and summing completed items.
Over time, a team's velocity typically stabilizes. This number becomes predictable and allows the team to forecast how much work can fit in future iterations. If velocity is declining, it often signals problems like technical debt, burnout, or scope creep.
Note: Velocity is a team metric, not an individual metric. It's about how much the team delivers together, not about measuring individual productivity.
Technical Debt and Team Sustainability
Understanding Technical Debt
Technical debt refers to shortcuts taken during development that create future costs. Examples include poorly structured code, skipped tests, or deferred refactoring. Like financial debt, technical debt incurs "interest": as technical debt accumulates, development slows because:
More bugs appear in production
Simple changes take longer
The codebase becomes harder to understand
Unscheduled work (bug fixes) crowds out planned work
Over time, development costs rise and velocity falls.
The Refactoring Solution
Refactoring is improving code structure without changing its functionality. Regular refactoring prevents technical debt from building up. As the system evolves and grows, the code structure must evolve too. Without it, defect rates and remediation effort increase steadily.
Work-In-Progress and Burnout
When teams try to do too much simultaneously, work-in-progress (WIP) becomes excessive. This creates:
Context-switching - Developers switch between tasks, losing efficiency each time
Queueing delays - Work waits for available developers
Pressure - Teams feel pushed to take on more work during an iteration
Limiting WIP keeps the team focused and prevents overcommitment. It also protects team members from burnout.
The continuous, focused pace of Agile naturally increases burnout risk. Sustainable pace—where teams can maintain velocity indefinitely without exhaustion—is essential for long-term success.
Flashcards
What is the typical duration of an Agile iteration or sprint?
One to four weeks
What is demonstrated to stakeholders at the end of every Agile iteration?
A working product increment
Which three elements are typically fixed at the start of an Agile iteration cycle?
Time length, quality expectations, and resource count
In the Agile iteration planning model, which parameter remains flexible while time and resources are fixed?
Scope of work
What is the purpose of an information radiator in a workspace?
To show up-to-date product development status to anyone passing by
What is the typical duration of a daily stand-up meeting?
About fifteen minutes
What three things do team members typically state during a daily stand-up?
What they completed yesterday
What they plan for today
Any impediments (blockers)
When should detailed problem-solving occur relative to the daily stand-up?
Deferred to after the stand-up
What does an iteration backlog represent regarding the team's commitment?
The amount of work the team can complete during that iteration
How should new user stories be handled if they arise while an iteration is already in progress?
Deferred to the backlog
Why is it considered a pitfall to have a developer fill the Product Owner role?
It reduces effective prioritization (should be a business representative)
What is a common risk for a Scrum Master who also contributes code?
Inability to fully fulfill facilitation responsibilities
How does technical debt affect the amount of unscheduled work for a team?
It increases unscheduled work by causing production defects
What practice is essential as a system evolves to prevent rising defect rates and technical debt?
Regular refactoring
What is identified as a leading cause of failed Agile implementations?
Insufficient training
Instead of assigning tasks, how should work be distributed to ensure empowerment and cross-training?
Allowing team member self-selection
Why is a lack of test automation problematic for rapid development?
It increases the burden of repeated testing and hinders refactoring
Quiz
Agile software development - Core Practices and Management Quiz Question 1: What is the typical length of an agile iteration (or sprint)?
- One to four weeks (correct)
- One to two days
- One to three months
- Six to twelve weeks
Agile software development - Core Practices and Management Quiz Question 2: What is a likely consequence of adding extra scope to a fixed‑time, fixed‑resource agile iteration?
- Product quality may be degraded (correct)
- Iteration length automatically shortens
- Team size must increase to finish work
- Budget for the iteration decreases
Agile software development - Core Practices and Management Quiz Question 3: How is an information radiator typically presented in an agile workspace?
- As a large, highly visible display that anyone can see (correct)
- As a private document shared only with the product owner
- As a digital file stored on a server
- As a set of email updates sent weekly
Agile software development - Core Practices and Management Quiz Question 4: According to the material, which metric is most commonly used to gauge a team’s delivery speed and agility?
- Velocity (correct)
- Burn‑down chart
- Lead time
- Cycle time
What is the typical length of an agile iteration (or sprint)?
1 of 4
Key Concepts
Agile Practices
Iterative and Incremental Development
Daily Stand‑Up
Continuous Integration
Test‑Driven Development
Agile Iteration Planning
Roles and Responsibilities
Scrum Master
Product Owner
Project Management Concepts
Information Radiator
Velocity (software development)
Technical Debt
Work‑In‑Progress (WIP) Limits
Domain‑Driven Design
Definitions
Iterative and Incremental Development
A software development approach that delivers product functionality in small, time‑boxed increments called iterations or sprints.
Daily Stand‑Up
A brief, time‑boxed meeting where team members share what they did yesterday, plan for today, and raise impediments.
Information Radiator
A large, highly visible display that continuously shows up‑to‑date project status to anyone passing by.
Continuous Integration
A practice of frequently merging code changes into a shared repository and automatically building and testing each integration.
Test‑Driven Development
A development technique where automated tests are written before the code they validate, guiding design and ensuring correctness.
Domain‑Driven Design
An approach to software design that models complex business domains through a shared language between developers and domain experts.
Velocity (software development)
A metric that measures the amount of work a team completes in an iteration, often expressed in story points or similar units.
Technical Debt
The implied cost of additional rework caused by choosing an easy, limited solution now instead of a more robust approach that would take longer.
Work‑In‑Progress (WIP) Limits
Constraints on the number of tasks a team can have in progress simultaneously to reduce context‑switching and improve flow.
Scrum Master
A facilitator who ensures Scrum practices are followed, removes impediments, and supports the team’s self‑organization.
Product Owner
The role responsible for defining and prioritizing the product backlog to maximize the value of the product.
Agile Iteration Planning
The process of fixing iteration length, quality expectations, and resources while allowing the scope of work to be flexible.