1 Development
1.1 Introduction
1.2 Thanks
1.3 The New Team Lead
1.4 You Can’t Do Everything At Once
1.5 Shattered Focus
1.6 Know Your Numbers
1.7 Know Your Clients Business Model
1.8 Know Your Team
2 Development Practices
2.1 Principles for Effective Delivery
2.2 Be The Change You Want To See
2.3 No Broken Builds
2.4 Taming Dependabot
2.5 Merge Small Commits
2.6 Refactor Ruthlessly
2.7 No Dead Code
2.8 Small Fast Feedback
2.9 Read The Error Message
2.10 Leave A Broken Test
2.11 All Bugs Are Missing Tests
3 Team Practices
3.1 Today I Learned
3.2 One Week Sprints
3.3 Why Are We Building This
3.4 Why We Pair
3.5 Automate Everything
3.6 When Should We Upgrade?
3.7 Ubiquitous Language
3.8 Bug Category Theory
3.9 Reduce Your Tech Surface Area
3.10 Standard Project Structure
3.11 Keeping the Team Happy
4 Dev Ops
4.1 Logging, Alerting, Monitoring and Auditing
4.2 Use Timing Log Statements
4.3 Know What Normal Looks Like
4.4 Health Checks
4.5 Fighting Fires
4.6 Fire Breaks
4.7 Clean Logs
4.8 You Built It, You Support It
4.9 Know Your Dependencies
4.10 Check Dependencies On Startup
4.11 Support Incidents
4.12 Alerts Should Be Actions
4.13 Integrate Frequently
4.14 Stages in a Build Pipeline
4.15 Non Functional Requirements
4.16 Migrating a Required Service
5 Sufficient Documentation
5.1 Standard Operating Procedures
5.2 Diagrams
5.3 Central Documentation
6 Testing Techniques
6.1 Visual Regression Tests
6.2 Test Your Mocks
6.3 Performance Tests
6.4 Property Based Testing
6.5 See The Test Fail
7 Cloud Infrastructure
7.1 Cloud Components
7.2 Content Delivery Networks
7.3 Cloud Economics and Developer Time
7.4 Caching
7.5 Monitor Your Bills
7.6 Architecture and Cost Control
7.7 Rely on Load Balancers
7.8 Microservices
8 Real Politics
8.1 Good Neighbours
8.2 Unreliable Third Parties
8.3 The Customer Is Always Right
8.4 It Is Who You Know
8.5 Change The Company You Work For
8.6 Value of Knowledge
8.7 Fast Knowledge Transfer
8.8 Level of Detail
8.9 Non Negotiable
8.10 Ordered Priorities
9 Strategy
9.1 The MVP Fallacy
9.2 When to Buy vs Build
9.3 Only Customise A Little
9.4 Lean On The Compiler
9.5 Allow Unexpected Things To Fail
9.6 Keep Things Small
9.7 Give Regular Updates
9.8 What Are We Building Next
9.9 How To Determine Value
9.10 Experiments
9.11 Deploy Slowly
9.12 Theory Of Constraints
9.13 Impact Mapping
9.14 Wardley Maps
10 A Delivery Process
10.1 How We Built the Magic
10.2 Prioritisation or The Hunger Games
10.3 Planning
10.4 Sprint Events
10.5 Timeout Bell
10.6 Gold Cards
10.7 Working on Stories
10.8 Acceptance Criteria
10.9 Support Rota
10.10 Five Whys
10.11 Ops board
10.12 Deployment Process
11 Glossary
11.1 Acceptance Criteria
11.2 Continuous Integration
11.3 Continuous Delivery
11.4 Convention over Configuration
11.5 Delivery Team
11.6 Migration
11.7 Mock
11.8 Pull Request
11.9 Semantic Versioning
11.10 Story Point
12 Reading List
13 Index