The Art of Agile Development. 2nd Edition (ebook) Rydułtowy
Most companies developing software employ something they call "Agile." But there's widespread misunderstanding of what Agile is and how to use it. If you want to improve your software development team's agility, this comprehensive guidebook's clear, concrete, and detailed guidance explains what to …
Liczba ofert: 1
Oferta sklepu
Opis
Most companies developing software employ something they call "Agile." But there's widespread misunderstanding of what Agile is and how to use it. If you want to improve your software development team's agility, this comprehensive guidebook's clear, concrete, and detailed guidance explains what to do and why, and when to make trade-offs.In this thorough update of the classic Agile how-to guide, James Shore provides no-nonsense advice on Agile adoption, planning, development, delivery, and management taken from over two decades of Agile experience. He brings the latest ideas from Extreme Programming, Scrum, Lean, DevOps, and more into a cohesive whole. Learn how to successfully bring Agile development to your team and organization--or discover why Agile might not be for you.This book explains how to:Improve agility: create the conditions necessary for Agile to succeed and scale in your organizationFocus on value: work as a team, understand priorities, provide visibility, and improve continuouslyDeliver software reliably: share ownership, decrease development costs, evolve designs, and deploy continuouslyOptimize value: take ownership of product plans, budgets, and experiments--and produce market-leading software Spis treści: Foreword Preface For the Pragmatists Whats New in the Second Edition Who This Book Is For About the Guest Authors Gitte Klitgaard Diana Larsen Shane Warden Conventions Used in This Book Using Code Examples OReilly Online Learning How to Contact Us Acknowledgements I. Improving Agility 1. What Is Agile? Agiles Genesis Born Out of Crisis The Agile Manifesto The Essence of Agile Adaptive rather than predictive People-oriented rather than process-oriented Why Agile Won Why Agile Works Why Agile Fails 2. How to Be Agile Practicing Agile The Road to Mastery How to Begin Joining an Agile Team Introducing Agile Improving Existing Agile Teams Applying Individual Agile Practices 3. Choose Your Agility The Agile Fluency Model Focusing Zone Delivering Zone Optimizing Zone Strengthening Zone Choose Your Zones 4. Invest in Agility Make Time for Learning If theres no time for learning If theres no budget for help Choose or Create Agile Teams If you cant dedicate people to their teams If team members dont get along If you cant create long-lived teams If you cant get the business, customer, or user expertise you need If you cant get all the developer skills you need Choose Agile Coaches If you cant hire the coaches you need Delegate Authority and Responsibility to Teams If work must be assigned to individuals If tools dont support team-based work If teams have to use a corporate tracking tool If teams dont have access to stakeholders If Delivering teams dont have control over their release processes If Optimizing teams dont have control over their product plans and spending Change Team Management Style If managers have trouble letting go Create Team Rooms If a team is remote If you cant create a physical team room for an in-person team Establish a Learning-Friendly Purpose for Each Team If theres an important deadline If theres no valuable green-field work to do Replace Waterfall Governance Assumptions If waterfall governance is required Change Harmful HR Policies If HR policies are set in stone Address Security Concerns If theres no flexibility around security requirements If youre required to have a separate code review step 5. Invest in Change Understanding Change Large-Scale Change Making Changes Get Management Buy-In 1. Start with a Conversation 2. Get the Economic Buyers Approval 3. Make a Formal Proposal If this sounds like too much work If management thinks theyre already Agile If management isnt supportive Get Team Buy-In If team members are skeptical If a few team members refuse If the majority of the team refuses If people lie about their acceptance Get Stakeholder Buy-In If concrete commitments are required If stakeholders dont buy in Further Reading 6. Scaling Agility Scaling Fluency Organizational Capability Coaching Capability Team Capability Scaling Products and Portfolios Scaling Vertically LeSS Adopting LeSS FAST Adopting FAST Challenges and benefits of vertical scaling Scaling Horizontally Scaling Vertically and Horizontally My Recommendation II. Focusing on Value Welcome to the Focusing Zone Achieving Focusing Fluency 7. Teamwork Whole Team Customer Skills Product management (aka product ownership) Domain expertise (aka subject matter expertise) User experience design (aka interaction design) Development Skills Programming, design, and architecture Testing Operations Coaching Skills Practitioner-coaches Player-coaches Facilitator-coaches Generalizing Specialists Staffing the Team Fully dedicated team members Stable teams Team Size A Team of Peers The Hole Team Revisited Questions Prerequisites Indicators Alternatives and Experiments Further Reading Team Room Secrets of Collaboration Always ask, always help Drop in and drop out Create visualizations Work simultaneously Seek consent Agree to experiment Physical Team Rooms The cocktail party effect Designing your team room Multiple teams In-person equipment and supplies Sample team rooms Adopting a physical team room Virtual Team Rooms Remote equipment and tools Designing remote collaboration Junior team members Questions Prerequisites Indicators Alternatives and Experiments Further Reading Safety Understanding Psychological Safety How to Create Safety Enable all voices Be open about mistakes Be curious Learn how to give and receive feedback Use empathy Allow yourself to be vulnerable Leaders Role Model the behaviors you want to see Be explicit about expectations Dont shy away from conflict Questions Prerequisites Indicators Alternatives and Experiments Further Reading Purpose Start With the Vision Identify the Purpose Document the Purpose Charter the Purpose Review the draft purpose Consent to the vision Improve the mission Revise the indicators Commit to the purpose Promote the Purpose Iterate the Purpose Questions Prerequisites Indicators Alternatives and Experiments Further Reading Context Chartering Context Available skills Boundaries and interactions Committed resources Sponsor commitment Iterating Context Questions Prerequisites Indicators Alternatives and Experiments Alignment Chartering Alignment Get to know one another Create working agreements Define standards Iterating Alignment Adhering to Agreements Questions Prerequisites Indicators Alternatives and Experiments Energized Work How to Be Energized Supporting Energized Work Taking Breaks Questions Prerequisites Indicators Alternatives and Experiments Further Reading 8. Planning Stories How to Create a Story Customer Value Splitting and Combining Stories Tiny stories Special Stories Documentation stories Bug stories Nonfunctional stories Operation and security stories Spike stories Clean-up stories Meetings and overhead Architecture, design, technical infrastructure Questions Prerequisites Indicators Alternatives and Experiments Adaptive Planning Valuable Increments Focus on One Increment at a Time Slice Your Increments Release Early, Release Often Your First Increment Adapt Your Plans How to Create Your Plan Balancing Adaptability and Predictability Adaptive Planning and Organizational Culture Questions Prerequisites Indicators Alternatives and Experiments Further Reading Visual Planning Who Plans? Cluster Mapping 1. Brainstorm stories 2. Cluster stories into increments 3. Organize increments 4. Review and refine Breaking Down Increments 1. Brainstorm stories and cluster into small increments 2. Filter and repeat 3. Prioritize 4. Play the planning game Impact Mapping 1. Start with the goal 2. Brainstorm impacts 3. Incorporate actors 4. Prioritize impacts 5. Brainstorm increments 6. Break down increments Prospective Analysis 1. Create the chart 2. Brainstorm possible outcomes 3. Review and refine 4. Prioritize outcomes and create plan Story Mapping 1. Determine scope 2. Define steps 3. Distill out user activities 4. Identify outcomes and goals 5. Create the later map 6. Divide into increments 7. Play the planning game Iterating the Visual Plan Questions Prerequisites Indicators Alternatives and Experiments Further Reading The Planning Game How to Play 1. Customers decide the scope of the plan 2. The whole team brainstorms stories 3. Developers size the stories 4. Customers prioritize the stories 5. Repeat until the plan is complete Keep Your Options Open How to Win the Planning Game Prioritizing Development Decisions Facing Reality Iterating the Planning Game Questions Prerequisites Indicators Alternatives and Experiments Real Customer Involvement Personal Development Platform Development In-House Custom Development Outsourced Custom Development Vertical-Market Software Horizontal-Market Software Questions Prerequisites Results Experiments and Alternatives Incremental Requirements The Living Requirements Document When Experts Arent Part of the Team Work Incrementally Purpose and visual plan The planning game Mock-ups, customer examples, and completion criteria Customer review Documentation Product documentation Operations documentation Governance documentation As-built documentation Questions Prerequisites Indicators Alternatives and Experiments Further Reading 9. Ownership Task Planning Cadence Iterations Continuous flow Creating Tasks Visual Tracking Task grid Detectives whiteboard Cross-Team Dependencies Making and Meeting Iteration Commitments Incomplete Stories Emergency Requests Your First Week Questions Prerequisites Indicators Alternatives and Experiments Further Reading Capacity Yesterdays Weather Capacity and the Iteration Timebox Stabilizing Capacity Estimating Stories Conversational estimating Affinity estimating When Estimating Is Difficult Defending Estimates Your Initial Capacity How to Improve Capacity Improve internal quality Improve customer skills Support energized work Offload duties Support the constraint Provide needed resources Add people (carefully) Capacity Is Not Productivity Questions Prerequisites Indicators Alternatives and Experiments Slack How Much Slack? How to Use Slack Improving internal quality Develop customer skills Dedicate time to exploration and experimentation The role of overtime Questions Prerequisites Indicators Alternatives and Experiments Further Reading Stand-Up Meetings How to Hold the Daily Stand-Up 1. Walk the board 2. Focus on completion 3. Choose tasks 4. Take detailed conversations offline Be Brief Questions Prerequisites Indicators Alternatives and Experiments Further Reading Informative Workspace Subtle Cues Big Visible Charts Improvement Charts Gaming Questions Prerequisites Indicators Alternatives and Experiments Further Reading Customer Examples Describe Demonstrate Develop Questions Prerequisites Indicators Alternatives and Experiments Further Reading Done Done How to Be Done Done Making Time Organizational Constraints Questions Prerequisites Indicators Alternatives and Experiments 10. Accountability Stakeholder Trust Show Some Hustle Show Some Empathy Deliver on Commitments Manage Problems Respect Customer Goals Make Stakeholders Look Good Be Honest Questions Prerequisites Indicators Alternatives and Experiments Further Reading Stakeholder Demos Feedback Loops The Demo Cadence How to Conduct a Stakeholder Demo Be Prepared When Things Go Wrong Questions Prerequisites Indicators Alternatives and Experiments Forecasting Uncertainty and Risk Predefined Release Dates How to steer your plans Feasibility Forecasts Date and Scope Forecasts A date and scope example Reducing risk Custom risk adjustments Questions Prerequisites Indicators Alternatives and Experiments Further Reading Roadmaps Agile Governance Option 1: Just the Facts Option 2: General Direction Option 3: Date and Approximate Scope Option 4: Detailed Plans and Predictions Corporate Tracking Tools When Your Roadmap Isnt Good Enough Questions Prerequisites Indicators Alternatives and Experiments Further Reading Management Theory X and Theory Y The Role of Agile Management Measurement Dysfunction Stories and story points Code coverage Lines of code Say/do ratio Defect counts Why Measurement Dysfunction is Inevitable Delegatory Management Make measurements inconsequential Go to gemba Ask the team Define goals and guardrails When Metrics Are Required Questions Prerequisites Indicators Alternatives and Experiments Further Reading 11. Improvement Retrospectives Types of Retrospectives How to Conduct a Heartbeat Retrospective Step 1: The Prime Directive (5 minutes) Step 2: Brainstorming (20 minutes) Step 3: Mute Mapping (15 minutes) Step 4: Generate Insights (1030 minutes) Step 5: Retrospective Objective (1020 minutes) Follow Through Questions Prerequisites Indicators Alternatives and Experiments Further Reading Team Dynamics What Makes a Team? Team Development Forming: The new kid in class Storming: Group adolescence Norming: Were #1 Performing: Team synergy Adjourning: Separating and moving on Communication, Collaboration, and Interaction Start with a strong base of trust Support your growing trust with three-fold commitment Right-size conflicts with feedback Spark creativity and innovation Sustain high performance Shared Leadership Toxic Behavior Questions Prerequisites Indicators Alternatives and Experiments Further Reading Impediment Removal Identifying Impediments Circles and Soup Control: Take direct action Influence: Persuade or recommend Soup: Change your response Questions Prerequisites Indicators Alternatives and Experiments Further Reading III. Delivering Reliably Welcome to the Delivering Zone Achieving Delivering Fluency 12. Collaboration Collective Code Ownership Making Collective Ownership Work Egoless Programming Collaborating Without Conflict Working with Unfamiliar Code Benefits to Programmers Questions Prerequisites Indicators Alternatives and Experiments Pair Programming Why Pair? Pairing Stations How to Pair Effective Navigating Teaching Through Pairing Challenges Comfort Introversion and social anxiety Communication style Tools and keybindings Questions Prerequisites Indicators Alternatives and Experiments Further Reading Mob Programming How to Mob Why Mobbing Works The Mobbing Station Making Mobbing Work Team dynamics Energized work Research Strict navigator role Non-programmers Mini-mobs and part-time mobs Questions Prerequisites Indicators Alternatives and Experiments Further Reading Ubiquitous Language The Domain Expertise Conundrum Speak the Same Language How to Create a Ubiquitous Language Questions Prerequisites Indicators Alternatives and Experiments Further Reading 13. Development Zero Friction One-Second Feedback Know Your Editor Reproducible Builds Dependency management Local builds Five-Minute Integration Control Complexity Automate Everything Automate Incrementally Automating Legacy Code Questions Prerequisites Indicators Alternatives and Experiments Continuous Integration Continuous Integration Is a Practice, Not a Tool Integrate many times per day Never break the integration build Keep the integration branch ready to release The Many Flavors of Continuous Integration The Continuous Integration Dance Continuous Integration Without a CI Server Synchronous Versus Asynchronous Integration Multistage Integration Builds Pull Requests and Code Reviews Questions Prerequisites Indicators Alternatives and Experiments Further Reading Test-Driven Development Why TDD Works How to Use TDD Step 1: Think Step 2: Red bar Step 3: Green bar Step 4: Refactor Step 5: Repeat Eat the Onion from the Inside Out A TDD Example Start with the core interface Calculations and branches Loops and generalization Special cases, error handling, and runtime assertions Questions Prerequisites Indicators Alternatives and Experiments Further Reading Fast, Reliable Tests Rely on Narrow Unit Tests Test Outside Interactions with Narrow Integration Tests Simulate Nonlocal Dependencies Control Global State Write Sociable Tests Separate Infrastructure and Logic Use Broad Tests Only as a Safety Net Adding Tests to Existing Code Prerequisites Indicators Alternatives and Experiments Further Reading Refactoring How to Refactor Refactoring in Action Questions Prerequisites Indicators Alternatives and Experiments Further Reading Spike Solutions Quick Questions Third-Party Dependencies Design Experiments Making Time for Spikes Questions Prerequisites Indicators Alternatives and Experiments 14. Design Incremental Design Never Stop Designing How Incremental Design Works Levels of Design Within a class or module Across classes and modules Application architecture Risk-Driven Architecture Questions Prerequisites Indicators Alternatives and Experiments Further Reading Simple Design YAGNI: You Arent Gonna Need It Once and Only Once Coupling and Cohesion Third-Party Components Fail Fast Self-Documenting Code Published Interfaces Performance Optimization Questions Prerequisites Indicators Alternatives and Experiments Further Reading Reflective Design How Reflective Design Works Reflective Design in Practice Reverse-Engineering the Design Identifying Improvements Code Smells Shotgun Surgery and Divergent Change Primitive Obsession and Data Clumps Data Class and Code Class Squashed Errors and Coddled Nulls Time Dependencies and Half-Baked Objects Incrementally Refactor Questions Prerequisites Indicators Alternatives and Experiments Further Reading 15. DevOps Build for Operation Threat Modeling Configuration Secrets Paranoiac Telemetry Logging Metrics and Observability Monitoring and Alerting Questions Prerequisites Indicators Alternatives and Experiments Further Reading Feature Flags Keystones Feature Flags Application configuration User configuration Secrets Prerequisites Indicators Alternatives and Experiments Further Reading Continuous Deployment How to Use Continuous Deployment Detecting Deployment Failures Resolving Deployment Failures Roll back the deploy Fix the deploy Alternative: Fix forward Incremental Releases Data Migration Prerequisites Indicators Alternatives and Experiments Further Reading Evolutionary System Architecture Are You Really Gonna Need It? Aim for Simplicity 1. Start with an ideal world 2. Introduce imperfect components and networks 3. Limit resources 4. Consider humans and teams Controlling Complexity Evolutionary design Self-discipline Fast deployment Vertical scaling Refactoring System Architecture Multirepo components Monorepo components Components Microliths Microliths Modules Modules New modules Big ball of mud Modules Modules Microliths Microliths Components Modules Components Monorepo components Multirepo components Compound refactorings Prerequisites Indicators Alternatives and Experiments Further Reading 16. Quality No Bugs Dont Play the Bug Blame Game How to Build Quality In Prevent programmer errors Prevent design errors Prevent requirements errors Prevent systemic errors Fix Bugs Immediately Testers Role Tude Questions Prerequisites Indicators Alternatives and Experiments Blind Spot Discovery Validated Learning Exploratory Testing Chaos Engineering Penetration Testing and Vulnerability Assessments Questions Prerequisites Indicators Alternatives and Experiments Incident Analysis The Nature of Failure Conducting the Analysis 1. Set the stage 2. Gather data 3. Generate insights 4. Decide what to do 5. Close the retrospective Organizational Learning Incident Accountability Questions Prerequisites Indicators Alternatives and Experiments Further Reading IV. Optimizing Outcomes Welcome to the Optimizing Zone Achieving Optimizing Fluency 17. Autonomy Business Expertise Business Decisions Accountability and Oversight Funding Experiments and Further Reading 18. Discovery Validated Learning Adaptability Experiments and Further Reading 19. Into the Future References Index
Specyfikacja
Podstawowe informacje
Autor |
|
Dodatkowe informacje
Kategorie |
|