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