- Let the engineers who write the code also be responsible for operating it in production: deploying, instrumenting and on-call for monitoring.
- If you can avoid building something new, do so. Writing code is the most expensive way to solve any problem that doesn’t address a core business need, especially when there are open-source and hosted solutions for small/medium companies that deal with git repository hosting, observability tooling, managed databases, alerting etc., and even infrastructure for Kubernetes clusters and load balancers.
- Make deployment frequent and unexciting: engineers should be able to deploy with minimal manual steps and you should minimize code freezes or blackout periods like ‘don’t deploy on Fridays’.
- Switch from manual QA gates to automated testing for the deployment pipeline. Have a team for continuous testing in production, and do away with pre-production environments.
- Choose ‘boring’ technology over bleeding edge tech. It is least likely to be unpredictable and is backed by the most expertise when you do have to debug, unlike ‘unique’ systems.
Full post here, 11 mins read