Part 5: Agile Best Practices and Common Pitfalls

Part of the Agile Development 101 Series

The Hard Lessons

After years of practicing agile, I've made most of the classic mistakes. I've been on teams that "did agile" but never became agile. I've seen sprints that accomplished nothing, retrospectives that changed nothing, and backlogs that helped nobody.

But I've also experienced agile done well - teams shipping valuable features every sprint, collaborating effectively, continuously improving. The difference wasn't the framework or tools. It was mastering the practices and avoiding the pitfalls.

In this final article of the series, I'll share the practical wisdom I've gained: what works, what doesn't, and how to make agile actually deliver on its promises.

User Stories: Beyond the Template

Everyone knows the template:

As a [user type]
I want [goal]
So that [benefit]

But writing good stories is harder than it looks.

User Story Best Practices

1. Focus on the "Why"

Bad story:

As a user
I want a "Reset Password" button
So that I can reset my password

Good story:

Why it's better: Explains the actual problem, not just the solution.

2. Make Stories Testable

Every story needs clear acceptance criteria.

Template I use:

Example:

3. Keep Stories Small (INVEST Criteria)

Independent: Can be built without depending on other stories Negotiable: Details can be refined through conversation Valuable: Delivers value to users Estimable: Team can estimate scope Small: Can be completed in one sprint Testable: Has clear acceptance criteria

Splitting large stories:

Too large:

Split into:

Techniques for splitting:

  • By workflow steps

  • By business rules

  • By CRUD operations

  • By user roles

  • By data variations

Common User Story Mistakes

Mistake 1: Stories as Technical Tasks

Wrong:

Right:

Technical tasks (API creation) are implementation details, not user value.

Mistake 2: Stories Without Acceptance Criteria

Incomplete:

What does "done" look like? Without acceptance criteria, developers guess, Product Owners reject, and rework happens.

Mistake 3: Epics Disguised as Stories

Too big:

This is an epic spanning multiple sprints. Break it down.

Estimation: Finding What Works

I've tried many estimation approaches. Here's what I've learned.

Story Points vs. Hours

Hours estimation:

  • Seems precise (8 hours, 16 hours)

  • Actually inaccurate (developers are bad at time estimates)

  • Pressure to "account for" hours

Story points:

  • Relative sizing (this is twice as complex as that)

  • Focus on complexity, not time

  • Less pressure, more honest conversations

My preference: Story points using Fibonacci (1, 2, 3, 5, 8, 13)

Planning Poker

How it works:

  1. Product Owner describes story

  2. Team asks questions

  3. Everyone privately selects estimate (Fibonacci card)

  4. Reveal simultaneously

  5. Highest and lowest explain reasoning

  6. Repeat until consensus

Why I like it:

  • Everyone participates

  • Averages out individual biases

  • Surfaces different perspectives

  • Quick (5-10 min per story)

Example:

Estimation Practices That Work

1. Use Reference Stories

Keep a "story point catalog":

2. Estimate as a Team

Don't let one person estimate everything. Different perspectives reveal different complexities.

3. Re-estimate Rarely

Once estimated and pulled into a sprint, stick with the estimate. Velocity will normalize over time.

4. Don't Use Estimates for Performance Reviews

The fastest way to destroy honest estimation: tie it to performance reviews. People will sandbag estimates.

Estimation Anti-Patterns

Don't do this:

  • Convert story points to hours (defeats the purpose)

  • Compare velocity across teams (points are relative)

  • Pressure team to raise velocity (encourages gaming)

  • Estimate tasks without understanding requirements

Sprint Planning: Getting It Right

Sprint planning sets the tone for the sprint. Do it poorly, and you'll struggle for two weeks.

Pre-Planning Preparation

Before sprint planning:

  1. Backlog refined: Top stories have acceptance criteria and estimates

  2. Dependencies identified: No surprises during planning

  3. Team capacity known: Vacations, holidays, other commitments

  4. Sprint goal proposed: Product Owner has a theme in mind

I learned the hard way: Don't walk into sprint planning with an unrefined backlog. Planning takes 4 hours instead of 2.

Sprint Planning Flow

Part 1: What will we deliver? (1 hour)

  1. Product Owner presents sprint goal

  2. Team pulls highest priority stories into sprint

  3. Stop when capacity is reached (based on velocity)

Part 2: How will we deliver it? (1 hour)

  1. Team breaks down stories into technical tasks

  2. Identify dependencies and risks

  3. Confirm commitment

Total time: 2 hours for 2-week sprint

Capacity Planning

Formula I use:

In story points:

Sprint Goal

Every sprint needs a goal beyond "complete these stories."

Bad sprint goals:

Good sprint goals:

A good sprint goal:

  • Describes user value

  • Can be achieved even if some stories aren't finished

  • Guides daily decisions

Daily Standup: Making It Valuable

Standup is often the most hated ceremony. It doesn't have to be.

Standup Best Practices

1. Keep It to 15 Minutes

How:

  • Timebox each person (2-3 min max)

  • Park detailed discussions ("let's sync after")

  • Stand (really, physically stand if able)

2. Focus on the Sprint Goal

Instead of:

Try:

3. Highlight Blockers Immediately

Blocker raised:

Scrum Master action:

Don't wait until retrospective to address blockers.

Standup Anti-Patterns

Status report to Scrum Master: Team members report to Scrum Master instead of synchronizing with each other.

Solution: Scrum Master stays quiet, team looks at each other.

Problem-solving during standup: 15-minute standup becomes 45-minute debugging session.

Solution: "Let's discuss after standup."

People tuning out: Phones out, not listening to teammates.

Solution: Make it engaging - use a token (only person with token speaks), walk the board instead of walking people.

Code Review: Agile and Quality

Code review is where agile meets technical excellence.

Code Review Best Practices

1. Review Quickly

My SLA: Review within 24 hours of PR creation

Why it matters:

  • Keeps work flowing

  • Reduces context switching for author

  • Enables continuous delivery

I use GitHub notifications and Slack alerts to stay on top of reviews.

2. Keep PRs Small

Ideal PR size:

  • < 400 lines of code

  • Touches 1-3 files (focused change)

  • Single logical change

How to keep PRs small:

  • Break features into incremental changes

  • Use feature flags for incomplete features

  • Merge supporting changes separately

Example - Building user authentication:

Each PR is mergeable and deployable, reducing risk.

3. Constructive Feedback

Bad code review comment:

Good code review comment:

Guidelines:

  • Be specific (what and why)

  • Suggest solutions

  • Assume competence

  • Ask questions, don't command

4. Automate What You Can

Automated checks (via GitHub Actions):

  • Linting (ESLint, Prettier)

  • Tests (unit, integration)

  • Security scanning (Snyk, Dependabot)

  • Code coverage

Reviewers focus on:

  • Logic and design

  • Edge cases

  • Readability

  • Architecture fit

Code Review Anti-Patterns

Nitpicking formatting: Arguing about spaces vs. tabs, brace style. Use automated formatters (Prettier, Black) and move on.

Approval without review: Rubber-stamping PRs to "keep things moving." Defeats the purpose.

Solution: If too busy to review properly, say so. Don't fake review.

Blocking on personal preference: "I would have done it differently" isn't grounds for rejection.

Solution: Distinguish between must-fix issues (bugs, security) and suggestions (style, alternative approaches).

Retrospectives: Continuous Improvement

Retrospectives are where teams improve. Here's how to make them effective.

Retrospective Best Practices

1. Create Psychological Safety

People won't speak up if:

  • Management attends (power dynamics)

  • Blame is assigned

  • Nothing changes based on feedback

Create safety by:

  • No managers (just the team)

  • Prime directive: "Everyone did their best with available knowledge"

  • Follow through on action items

2. Vary the Format

Formats I rotate:

Start/Stop/Continue:

  • Start: New practices to try

  • Stop: Things hurting us

  • Continue: What's working well

Went Well / Needs Improvement / Action Items:

  • Celebrate successes

  • Identify problems

  • Commit to changes

4 Ls:

  • Liked

  • Learned

  • Lacked

  • Longed for

Sailboat:

  • Wind (helping us)

  • Anchors (holding us back)

  • Rocks (risks ahead)

  • Island (goal)

Timeline: Draw a timeline of the sprint, mark highs and lows, discuss.

3. Make Action Items Specific

Bad action item:

Good action item:

Format:

  • Specific action

  • Owner assigned

  • Deadline

4. Review Previous Action Items

Start every retro with:

Hold the team (including yourself) accountable.

Retrospective Anti-Patterns

Same format every time: Team gets bored, participates less.

Solution: Rotate formats, try new activities.

No action items or too many: Nothing actionable emerges, or list of 10 items that won't get done.

Solution: 1-3 action items max. Focus on impact.

Rushed retrospective: 5-minute "anything to improve?" at the end of sprint review.

Solution: Allocate 1 hour, treat it as important.

Common Agile Pitfalls and How to Avoid Them

Pitfall 1: "Doing Agile" vs. "Being Agile"

Symptoms:

  • Following Scrum by the book but not embracing agile values

  • Going through motions (standups, retros) without real engagement

  • No actual improvement cycle

Example:

Solution:

  • Focus on principles over process

  • Empower team to make decisions

  • Actually implement retrospective action items

  • Foster collaboration over compliance

Pitfall 2: Ignoring Technical Debt

Symptoms:

  • Every sprint is all features, no technical work

  • Codebase deteriorating

  • Velocity slowing over time

Example: Sprint backlog:

Solution:

  • Reserve 20% of sprint capacity for technical work

  • Make technical debt visible in backlog

  • Frame technical work in business terms ("Reduce deployment time from 30 min to 5 min")

My practice:

Pitfall 3: Unstable Product Owner

Symptoms:

  • Product Owner changes priorities mid-sprint

  • Unclear requirements

  • No time for questions during development

Example:

Solution:

  • Protect sprint commitments (new work goes to backlog)

  • If change is truly urgent, swap out equal work (don't just add)

  • Product Owner should attend daily standups

  • Establish clear communication channels

Pitfall 4: Overcommitting

Symptoms:

  • Consistently completing 60% of sprint commitments

  • Team working overtime to "make sprint"

  • Velocity unpredictable

Example:

Solution:

  • Use historical velocity, not aspirational

  • Build in buffer (commit to 80% of velocity)

  • Account for non-dev time (meetings, reviews, support)

  • Say no to scope creep

My approach:

Pitfall 5: No Definition of Done

Symptoms:

  • Stories marked "done" but not actually shippable

  • Frequent production bugs

  • "Done" means different things to different people

Example:

Solution: Create and enforce explicit Definition of Done:

Pitfall 6: Skipping Ceremonies

Symptoms:

  • "We're too busy for retrospectives"

  • Standups become status emails

  • No sprint planning, just work on whatever

Example:

Solution:

  • Commit to ceremonies, even when busy

  • Make ceremonies valuable (don't waste time)

  • If a ceremony feels useless, fix it in retrospective

  • Treat ceremonies as non-negotiable investment

My rule: Missing standups occasionally is fine. Skipping retros? Red flag.

Pitfall 7: No Team Ownership

Symptoms:

  • Work assigned by manager, not pulled by team

  • Individual responsibilities instead of team goals

  • "That's not my job" mentality

Example:

Solution:

  • Whole team owns sprint goal

  • Swarm on blockers instead of individual work

  • Pair/mob programming for knowledge sharing

  • Celebrate team success, not individual hero contributions

Scaling Agile: Beyond One Team

When you have multiple teams, new challenges emerge.

Multi-Team Coordination

Challenges:

  • Dependencies between teams

  • Shared resources

  • Synchronization

Approaches I've used:

1. Scrum of Scrums

How it works:

  • Representative from each team meets daily/weekly

  • Discuss dependencies, integration points, blockers

Example:

2. Feature Teams vs. Component Teams

Component teams:

Feature teams:

My preference: Feature teams for agility, component teams for specialized expertise.

3. Shared Backlog vs. Team Backlogs

Shared backlog:

  • One backlog for all teams

  • Teams pull work based on capacity

Team backlogs:

  • Each team has own backlog

  • Product Owner coordinates priorities across teams

Hybrid approach (my preference):

  • Shared product backlog (single source of truth)

  • Teams pull into team-specific sprint backlogs

Measuring Agile Success

How do you know if agile is working?

Metrics I Track

1. Velocity (Team Capacity)

What: Story points completed per sprint Why: Predict capacity, improve planning

Healthy pattern:

2. Sprint Goal Achievement

What: Did we meet the sprint goal? Why: Better than story point completion

Tracking:

3. Lead Time and Cycle Time

Lead time: How long from request to deployment Cycle time: How long from start to deployment

Goal: Reduce and stabilize

Example:

4. Deployment Frequency

What: How often do we deploy to production? Why: Indicates agility and risk reduction

Progression:

5. Team Satisfaction

What: Survey team regularly Why: Unhappy teams don't sustain agile

Questions:

  • Do you feel empowered to make decisions?

  • Are retrospectives valuable?

  • Is workload sustainable?

  • Do we collaborate effectively?

Metrics to Avoid

Don't measure:

  • Individual velocity (encourages gaming)

  • Lines of code (quantity over quality)

  • Hours logged (presenteeism)

  • Burndown perfection (reality is messy)

Transitioning to Agile

If you're moving from waterfall to agile:

Transition Approach

Phase 1: Education (Month 1)

  • Agile training for team

  • Read books, watch videos

  • Visit agile teams (if possible)

Phase 2: Pilot Team (Months 2-3)

  • One team tries agile

  • Start with 2-week sprints

  • Use Scrum framework

  • Learn and adapt

Phase 3: Expand (Months 4-6)

  • Share learnings from pilot

  • Expand to more teams

  • Refine practices

  • Build agile coaching capacity

Phase 4: Scale (Months 7+)

  • Multiple teams using agile

  • Coordinate across teams

  • Continuous improvement culture

Change Management

Expect resistance:

Address concerns:

  • Show quick wins

  • Celebrate successes

  • Listen to feedback

  • Adapt practices to context

Get executive support:

  • Agile requires cultural change

  • Leadership must walk the talk

  • Protect teams from anti-agile pressures

My Agile Journey: Lessons Learned

After years of agile, here's what I know:

What Matters Most

  1. People over process: The best framework poorly implemented fails. The okay framework with great people succeeds.

  2. Start small: Don't boil the ocean. Pick one practice, do it well, add more.

  3. Adapt to context: Textbook agile doesn't exist in reality. Adapt.

  4. Continuous improvement is the goal: Not perfect Scrum, not maximum velocity. Getting better every sprint.

  5. Ship working software: Everything else is secondary.

What Doesn't Matter

  1. Perfect adherence to framework: "We're not doing Scrum right" matters less than "Are we delivering value?"

  2. Velocity comparisons: Your 25 points β‰  another team's 25 points. Focus on your own improvement.

  3. Ceremony perfection: Missing a standup won't kill your agility. Missing the point of agile will.

What I'd Do Differently

If starting over:

  • Invest more in team building early

  • Establish Definition of Done from day one

  • Protect retrospective time religiously

  • Say no to scope creep sooner

  • Celebrate small wins more

Conclusion

Agile is a journey, not a destination. Key principles:

Master the basics:

  • Write good user stories

  • Estimate realistically

  • Plan effectively

  • Review code quickly

  • Reflect and improve

Avoid common pitfalls:

  • Don't ignore technical debt

  • Don't skip ceremonies

  • Don't overcommit

  • Don't go through motions

Remember:

  • Agile is about people, not process

  • Deliver working software frequently

  • Embrace change

  • Improve continuously

You now have the foundation to practice agile effectively. The rest is experience - start small, learn continuously, and adapt to your context.

Final Thoughts

Agile transformed my career. It taught me:

  • How to work collaboratively

  • How to embrace uncertainty

  • How to deliver value incrementally

  • How to continuously improve

It's not always easy. Some days, I miss the certainty of waterfall's detailed plans. But then I remember:

  • Shipping features every two weeks

  • Adapting to changing requirements

  • Working with empowered, motivated teams

Agile isn't perfect. But done well, it's transformative.

Thank you for joining me on this Agile Development 101 journey. Now go build great products!

Key Takeaways

  1. User stories need clear acceptance criteria

  2. Estimate with story points, not hours

  3. Keep PRs small for faster reviews

  4. Retrospectives drive improvement - make them count

  5. Avoid common pitfalls: technical debt, overcommitting, no Definition of Done

  6. Measure what matters: velocity, sprint goals, cycle time

  7. Adapt agile to your context - no one-size-fits-all

Series Summary

Throughout this series, we've covered:

  1. Part 1: Agile values, principles, and mindset

  2. Part 2: Scrum roles, ceremonies, and artifacts

  3. Part 3: Kanban and alternative frameworks

  4. Part 4: Jira, GitHub, Confluence integration

  5. Part 5: This article - practical wisdom

Additional Resources

Books:

  • "Scrum: The Art of Doing Twice the Work in Half the Time" by Jeff Sutherland

  • "User Story Mapping" by Jeff Patton

  • "The Phoenix Project" by Gene Kim (DevOps + Agile)

Online:

Certifications:

  • Certified Scrum Master (CSM) - Scrum Alliance

  • Professional Scrum Master (PSM) - Scrum.org

  • PMI-ACP - Project Management Institute

Previous: Part 4 - Agile Tools and Workflows Back to: Series Overview


This article concludes the Agile Development 101 series. Check out the series overview for all articles.

Last updated