How to improve software delivery - advice from "Accelerate" by Nicole Forsgren
Some learnings and actionable advice from “Accelerate” by Nicole Forsgren.
Originally published as a Twitter thread.
- Experiment a lot. With high uncertainty, you can never know anything up front. Don’t try to predict the future. Try many things, see what happens. Make fast decisions, reverse the bad ones, continue the good ones, and iterate.
- To experiment, you need to improve the deployment process. Make deployments easy, fast, safe, and reversible. This lowers the cost of each experiment, decreases the batch size, limits WIP, and shortens the feedback loop.
- Now that the feedback loop is short, allow and encourage people to act on it. Give each person the authority to make fast (but reversible) decisions regarding the product, requirements, and specifications. Expect mistakes - they’re inevitable - but don’t be afraid.
- Mistakes will happen. Software development is a complex problem with high uncertainty. You can’t avoid mistakes. The goal is to make them small and reversible (small batches + easy deployments), learn from them, and avoid blame. Blame = a sign to avoid experiments and risks.
- Looks for virtuous cycles. Contrary to popular opinion, you don’t have to trade off quality for delivery speed. Quality improves speed (e.g. fewer mistakes), but speed enables quality (e.g. small, safe refactorings). There are a lot of virtuous cycles like that - find them.
- Summing up, some actionable advice: (1) Improve the deployment process. (2) Limit WIP. Decrease the batch size. (3) Constantly encourage team members to experiment, gather, and act on feedback. (4) Avoid blame and you ever do blame someone for a mistake - apologize fast.