# Accelerate (book)

Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations is a software engineering book co-authored by Nicole Forsgren, Jez Humble and Gene Kim. The book explores how software development teams using Lean Software and DevOps can measure their performance and the performance of software engineering teams impacts the overall performance of an organization.
The work in the book contains research conducted by Google's DevOps Research and Assessment (DORA) team for State of DevOps Reports. Before being acquired by Google, DORA conducted this research for the DevOps company Puppet and later became an independent team (with Puppet continuing to produce reports by a new team).

## Four Key Metrics

The authors examine 23,000 data points from a variety of companies of various different sizes (from start-up to enterprises), for-profit and not-for-profit and both those with legacy systems and those with modern systems.
The four metrics identified are as follows:
* Change Lead Time - Time to implement, test, and deliver code for a feature (measured from first commit to deployment)
* Deployment Frequency - Number of deployments in a given duration of time
* Change Failure Rate - Percentage of failed changes over all changes (regardless of success)
* Mean Time to Recovery (MTTR) - Time it takes to restore service after production failure
The authors further measure how various technical practices (like outsourcing) and risk factors impact performance metrics for an engineering team. These metrics can be crudely measured using psychometrics or using commercial services.

## Criticism

The computer scientist Junade Ali has criticised the research work in Accelerate (and the work in the DORA State of DevOps Reports) on multiple grounds. Research conducted by Ali and the British polling firm Survation found that both software engineers (when building software systems) and public perception (when using software systems) found other factors mattered significantly more than the outcome measures which were treated as the "Four Key Metrics" (which ultimately measure the speed of resolving issues and the speed of fixing bugs, and are used to create the findings in the book), and risk and reward appetite varies from sector-to-sector.
Additionally, Ali criticised how the research relies upon subjective measures to evaluate performance without controlling for cognitive bias (despite prior research showing software engineers overpredict performance) and methodology flaws which can lead to respondents rating factors in software quality and delivery speed as optimal on the basis that they are happy at their workplace (rather than critically evaluating the performance in particular domains).
Ali has also criticised the research on the basis that reputable opinion polling firms who comply with the rules of organisations like the British Polling Council should publish their full results and raw data tables, which the DORA team did not do - and additionally that the sponsors of the polling (Google Cloud and previously Puppet) create products which have a vested interest in having software engineers deliver faster (despite research indicating high levels of burnout amongst software engineers), which the results of the research ultimately supported. Despite the authors arguing that speed of delivery and software quality go hand-in-hand, Ali has offered several counter-examples; including the comparatively high quality of aviation software despite infrequent changes, contrasted with rapid application development being pioneered in the software that resulted in the British Post Office scandal and agile software development being used in the software responsible for the 2009–2011 Toyota vehicle recalls.
The software developer Bryan Finster has also discussed how, as correlation does not imply causation, organisations who are considered "high performing" in the research are not high performing because they focussed on the DORA metrics, but instead focussed on delivering value to users and arguing the metrics should be used as "trailing indicators for poor health, not indicators everything is going well".

## 24 Key Capabilities

The authors outline 24 practices to improve software delivery which they refer to as "key capabilities" and group them into five categories.

### Continuous Delivery

* Use Version Control for all Production Artifacts
* Automate Your Deployment Process
* Implement Continuous Integration
* Use Trunk-Based Development Methods
* Implement Test Automation
* Support Test Data Management
* Shift Left on Security
* Implement Continuous Delivery (CD)

### Architecture

* Use a Loosely Coupled Architecture
* Architect for Empowered Teams

### Product and Process

* Gather and Implement Customer Feedback
* Make the Flow of Work Visible through the Value Stream
* Work in Small Batches
* Foster and Enable Team Experimentation

### Lean Management and Monitoring

* Have a Lightweight Change Approval Processes
* Monitor across Application and Infrastructure to Inform Business Decisions
* Check System Health Proactively
* Improve Processes and Manage Work with Work-In-Process (WIP) Limits
* Visualize Work to Monitor Quality and Communicate throughout the Team

### Cultural

* Support a Generative Culture
* Encourage and Support Learning
* Support and Facilitate Collaboration among Teams
* Provide Resources and Tools that Make Work Meaningful
* Support or Embody Transformational Leadership