The Agile Developer's Handbook

Book description

A pragmatic companion guide to your Agile journey

About This Book

  • Make your team Agile by implementing industry-standard Agile techniques
  • Assess scope, scale up efficiently
  • Create the correct roles and identify the right candidates for your team
  • Finish your projects faster and stay ahead of the curve

Who This Book Is For

If you're a software developer or a project manager with little to no experience of Agile, but you want to efficiently implement it, this is the book for you.

What You Will Learn

  • Create a solid foundation that gives your team an Agile jumpstart
  • Understand how to select and evolve practices to increase your team's agility
  • Use experiments to accelerate your team's understanding
  • Fine-tune your approach by incorporating aspects of Lean and Lean Startup
  • Know how to foster an environment of continuous improvement and learning that will become self-sustaining

In Detail

This book will help you overcome the common challenges you'll face when transforming your working practices from waterfall to Agile. Each chapter builds on the last, starting with easy-to-grasp ways to get going with Agile. Next you'll see how to choose the right Agile framework for your organization. Moving on, you'll implement systematic product delivery and measure and report progress with visualization. Then you'll learn how to create high performing teams, develop people in Agile, manage in Agile, and perform distributed Agile and collaborative governance.

At the end of the book, you'll discover how Agile will help your company progressively deliver software to customers, increase customer satisfaction, and improve the level of efficiency in software development teams.

Style and approach

Think of this book like a manual, rather than a theoretical textbook. It's packed full of visual ways to understand Agile, helpful tips to get you set up quickly, tried and tested solutions when challenges arise, and heaps of support to get the day-to-day tasks in Agile done. You'll want to keep a copy on your desk, right next to your coffee cup.

Publisher resources

View/Submit Errata

Table of contents

  1. Title Page
  2. Copyright and Credits
    1. The Agile Developer's Handbook
  3. Packt Upsell
    1. Why subscribe?
    2. PacktPub.com
  4. Contributors
    1. About the author
    2. About the reviewer
    3. Packt is searching for authors like you
  5. Preface
    1. Who this book is for
    2. What this book covers
    3. To get the most out of this book
      1. Download the color images
      2. Conventions used
    4. Get in touch
      1. Reviews
  6. The Software Industry and the Agile Manifesto
    1. Why the software industry needed to change
      1. Delivery as a software product
      2. Delivery as a software project
      3. Product versus project
      4. Scope was the priority
      5. Estimates
        1. Uncertainty buffers
        2. Estimates became ironic
        3. Variability in our estimates
      6. And then there's missing the point entirely
        1. Where's the business value?
      7. So the project mindset isn't good?
      8. The Agile values
      9. The Agile principles
    2. Incremental – adaptive versus waterfall – predictive
      1. The Waterfall process and predictive planning
      2. Incremental delivery and adaptive planning
    3. Agile is a mindset
      1. An Example of "Being Agile"
        1. Scenario
        2. Our response
    4. Summary
  7. Agile Software Delivery Methods and How They Fit the Manifesto
    1. Understanding Scrum
      1. Background
      2. Introduction to the mechanics of Scrum
        1. Sprint Planning – part 1
        2. Sprint Planning - part 2
        3. The Daily Scrum
        4. The Sprint Review
        5. The Sprint Retrospective
        6. Additional events
    2. XP - Extreme Programming
      1. Background
      2. Introduction to the mechanics of XP
        1. The planning game
          1. Part 1 – Release planning
          2. Part 2 – Iteration planning
        2. Implementing the iteration plan
        3. Iteration demo
        4. Iteration retrospective
    3. Kanban and Lean Software Development
      1. Background
        1. Reducing waste
        2. Single-piece flow
        3. How Kanban/Lean fit into the Agile movement
      2. Introduction to the mechanics of Lean/Kanban
        1. Getting started with Kanban
          1. Step 1 – Make the team's work visible
          2. Step 2 – Make the work policies of the team explicit
          3. Step 3 – Improve flow
          4. Step 4 – Kaizen or continuous improvement
    4. Choosing the right framework
      1. Designed for small teams
      2. They don't include product discovery phases
      3. Not all frameworks prescribe technical practices
      4. There are similarities with subtle differences
      5. Mixing and matching Agile methods
    5. Summary
  8. Introducing Scrum to your Software Team
    1. Why Scrum is an excellent place to start
      1. Iterations and iteration length
    2. Starting a new Scrum team
      1. Prerequisites
      2. Preparing to Sprint
        1. Activity – defining the Product Backlog
        2. Activity – release planning
        3. Activity – introducing the Product Backlog
        4. Activity – estimating User Stories on the backlog
        5. Activity – setting up the Scrum Board
        6. Discussion – Sprint Zero
      3. Day one of the Sprint
        1. Event – Sprint Planning
          1. What can we achieve in this Sprint?
          2. How will we achieve it?
          3. The Sprint Goal
        2. Event – first Daily Scrum
      4. A day in the life of a Scrum team
        1. Measuring and reporting progress with visualization
          1. Avatars
          2. Done stickers
          3. Burndowns
          4. Sprint Goal confidence
        2. The importance of visible workspaces
        3. Removing impediments
        4. Managing delivery as a team sport
      5. The last day of the Sprint
        1. Event – Sprint Review
        2. Event – Sprint Retrospective
          1. The importance of team retrospectives
    3. Summary
  9. Gathering Agile User Requirements
    1. The pitfalls of traditional big upfront requirements
    2. Why User Stories produce results
    3. What a User Story is and how to use it
      1. The User Story format
      2. Additional story card elements
        1. The stub
        2. Acceptance criteria
        3. Story size
        4. Notes
      3. Card, conversation, confirmation
      4. Acceptance criteria versus the Definition of Done (DoD)
      5. Telling the team "what", not "how"
    4. Brainstorming a bunch of User Stories
    5. Estimating Agile user requirements
      1. Planning Poker
        1. Playing Planning Poker
    6. References
    7. Summary
  10. Bootstrap Teams with Liftoffs
    1. What's a team liftoff?
      1. ACTIVITY – Agile training
      2. ACTIVITY – Sharing the vision
        1. Step 1 – Meet the sponsors
        2. Step 2 – The company purpose
        3. Step 3 – The product vision
        4. Step 4 – The current mission
        5. Step 5 – Define success
          1. Defining success metrics
      3. Activity – Forming a team charter
        1. Step 1 – Defining done
        2. Step 2 – Working agreement
        3. Step 3 – Team calendar
    2. References
    3. Summary
  11. Metrics that will Help your Software Team Deliver
    1. A brief introduction to measurements for Agile software delivery
      1. Understanding measurements
      2. Qualitative versus quantitative measurements
      3. Negative versus positive metrics
    2. Quantitative metrics
      1. Team velocity
      2. Sprint Burndown chart – TEAM
      3. Release burndown charts
        1. Simple Release Burndown chart
        2. Enhanced Release Burndown chart
      4. Code quality
        1. Code complexity
    3. Qualitative metrics
      1. Defining what success looks like
        1. Defining our success
        2. Using our Team Success Indicators
      2. User Happiness Index
    4. Summary
  12. Software Technical Practices are the Foundation of Incremental Software Delivery
    1. Building the thing right versus building the right thing
    2. Refactoring
      1. How does this keep us Agile?
      2. Things to try
    3. Test-Driven Development
      1. How does this keep us Agile?
      2. Things to try
    4. Pair programming
      1. How does this keep us Agile?
      2. Things to try
        1. Activity – pair programming ping pong
    5. Emergent design
      1. How does this keep us Agile?
      2. Things to try
        1. Activity – emergent design discussion
    6. The DevOps culture
      1. Continuous Integration
        1. How does this keep us Agile?
        2. Things to try
      2. Continuous Delivery
        1. How does this keep us Agile?
        2. Things to try
      3. Continuous Deployment
        1. How does this keep us Agile?
        2. Things to try
    7. Summary
  13. Tightening Feedback Loops in the Software Development Life Cycle
    1. Implementing incremental delivery in Agile
      1. Working with software in small, manageable chunks
      2. Inspection and adaption
      3. The importance of User Experience (UX)
      4. Shifting left
      5. Shifting right
    2. Introducing some Lean thinking to improve flow
      1. The coin game results
      2. Systems thinking – Optimizing the whole
      3. Changing our workflow
      4. Kaizen and developing a small, continuous improvement mindset
        1. Fail Cake
          1. Root cause analysis with the Five Whys method
    3. Adopting Lean Startup methods to validate ideas
      1. Build, Measure, Learn
      2. An example of Lean Startup MVP
        1. Background
        2. Hypothesis
        3. Approach
      3. Learning rapidly by doing and failing fast
    4. Summary
  14. Seeking Value – How to Deliver Better Software Sooner
    1. Moving from project to product thinking
      1. Cynefin – A sense-making framework
      2. The advantages of a product team
      3. Moving from project to product
    2. Setting objectives to create alignment of purpose
      1. Using Objectives and Key Results (OKRs)
      2. Hypothesis-Driven Development (HDD)
      3. Data, Insights, Beliefs, Bets (DIBBs)
    3. Seeking value
      1. How to seek value
      2. Telling our team "the why" not "the what"
    4. Summary
  15. Using Product Roadmaps to Guide Software Delivery
    1. The importance of Product Roadmaps
    2. Product Discovery to create roadmaps
      1. User Story Mapping
        1. Activity – creating a User Story Map
          1. Step 1 – User roles
          2. Step 2 – The first User Journey
          3. Step 3 – Alternative paths, sub-tasks, details, and business rules
          4. Step 4 – Naming the activities
          5. Leveraging the User Story Map
      2. Impact Mapping
        1. Activity – Creating an Impact Map
          1. Question 1 – Why are we doing this?
          2. Question 2 – Who will help us?
          3. Question 3 – How will they help us?
          4. Question 4 – What will we do?
          5. Leveraging an Impact Map
      3. Working collaboratively with the team to create a shared understanding
      4. Using Spikes to reduce business and technical unknowns
    3. Using Rolling Wave Planning for adaptive delivery
    4. Summary
  16. Improving Our Team Dynamics to Increase Our Agility
    1. How to create high-performing teams
      1. Collaboration is the key
      2. Knowledge work and high-bandwidth communication
        1. Communication lines
      3. Psychological safety – what it is and how to create it
      4. Further reading
    2. The stages of team formation
    3. Stage 1 – forming
      1. Helping our team process this phase
        1. Relationship-building games
    4. Stage 2 – storming
      1. Helping our team process this phase
        1. Coach – diversity is a good thing
        2. Coach – conflict happens, how to navigate it
          1. Positivity and successful relationships
        3. Activity – process the conflict
          1. Group decision making
          2. Coach – focus on the task, not the person
          3. Coach – conflict protocols
          4. Coach – giving feedback
    5. Stage 3 – norming
      1. Helping our team process this phase
        1. Activity – experiments in process
        2. Activity – improve the team's ability to self-assess
    6. Stage 4 – performing
      1. Helping our team process this phase
        1. Activity – 360 team review
    7. Stage 5 – adjourning/mourning
      1. Helping our team process this phase
    8. Learning by practicing
      1. Hackathons
      2. Innovation Days
      3. Running a hackathon or innovation day
      4. Google's 20% time and other alternatives
    9. Summary
  17. Baking Quality into Our Software Delivery
    1. Cross-pollination of skills
    2. Mob programming
      1. Why does mob programming work?
      2. How does mob programming work?
      3. Ergonomics
    3. No more bugs
      1. Bugs caused by the way we write code and design our software
      2. Bugs caused by our understanding of the problem
      3. Bugs caused by the nature of the problem changing
      4. Refactoring our environment
    4. No more estimates
    5. Summary
  18. The Ultimate Software Team Member
    1. The power of motivation
      1. Extrinsic drivers
      2. Intrinsic drivers
        1. Mastery
        2. Autonomy
        3. Purpose
      3. Activity – moving motivators
      4. Why are intrinsic drivers important?
    2. The entrepreneurial developer
    3. The team player
      1. The problem with "rockstars"
    4. The growth mindset
      1. Growth mindset versus fixed mindset
        1. An example of a fixed mindset behavior versus a growth mindset behavior
      2. How can we embrace a growth mindset?
      3. Fostering a learning habit
    5. Summary
  19. Moving Beyond Isolated Agile Teams
    1. How an Agile approach will organically flatten an organizational structure
      1. From a hierarchical organization to collaborative governance
        1. The Big Agile board
      2. A network of teams
    2. Self-selection to create a true-self organization
      1. Further reading
    3. Modern leadership
      1. Changing to a fly-by-wire system
      2. Implementing a fly-by-wire approach
        1. Setting the challenge
        2. Cultivating culture
        3. Ensuring team engagement
          1. Feeling recognized
          2. Feeling relevant
          3. Feeling successful
          4. Creating engagement
      3. Example – Changing up the performance review
        1. Performance review 360 – Intermediate level
        2. Performance Review 360 – Advanced level
    4. The art of Agile leadership
      1. Experiment – Creating informal networks as a nervous system
      2. Experiment – Communities
    5. Organizational styles for flatter structures
      1. Further reading
    6. Summary
  20. Other Books You May Enjoy
    1. Leave a review - let other readers know what you think

Product information

  • Title: The Agile Developer's Handbook
  • Author(s): Paul Flewelling
  • Release date: February 2018
  • Publisher(s): Packt Publishing
  • ISBN: 9781787280205