Production Oriented Development
This is a great article from a battle tested veteran. Lot's of sane advice and some, some controversial ones, some nuanced ones.
- Engineers should be on-call and operate their own code. They know where the skeletons are hidden. Also, experiencing the pain of production failure is the quickest way of fixing them.
- Buy beats Build. NIH (Not Invented Here) syndrome is very strong amongst tech teams but it's generally a recipe for disaster. Use SaaS tools, managed-code tools or hosted services to reduce the burden on yourself and your team.
- Make deploys easy. The easier a process, the more it's followed. Deploy pipelines should be simple, quick and pain-free. Frequent deploys have a lot of advantages. Your customers receive value faster, the changes are smaller and it's easier to debug.
- QA teams slow everyone down. This is a highly controversial statement and has a lot more nuance. Manual QA cannot keep up with release cycles. Aim to automate
as much testing as possible. Also, move QA teams to testing in production to ensure business continuity rather than being road blocks.
- Be boring! Boring technology is battle tested and bug free. Always bias towards using an old, boring technology instead of bleeding edge frameworks.
- Things will always break. Planning for failure response is a more scalable strategy rather than prevention of failure. The former leads to better systems, while the latter leads to failure. I personally connect to this advice. We can't plan future incidents, but we can plan our response to them.
Full post here, 11 min read