Safe release, trust increase
You can lose someone's trust with the click of a button. Decades of earning the trust of people can be lost very easily. Software engineering has been there for around 60 years. And yet you still see problems, even in top companies.
One error can cost millions of dollars and, worse, people's jobs. Really? In Quora you’ll see which was the costliest coding error anyone has ever made.
TLDR;
Please note that: The following is not a bulletproof guide; it is just a quick guide to help you start moving towards Operational Excellence. Each sub-bullet is a very large topic by itself that requires a full chapter to explain it, but, to keep it simple and practical, I summarize each one with key points. This article relates to the Release Management process. This guide mentions the steps before, during, and after a release. I suggest that you go deep into learning about the Release Management process since this article only mentions it briefly.
Proper software deployment practices
1. Plan and Prepare.
Before starting to write code, it is essential to go through a series of preparatory steps to ensure a clear understanding of the requirements, design, and potential challenges. Here’s a typical checklist of activities:
“If I had an hour to solve a problem, I’d spend 55 minutes thinking about the problem and 5 minutes thinking about solutions.” — Albert Einstein
Make sure you thoroughly understand the project before jumping to solutions.
1. Understand the Requirements.
2. Analyze the Impact.
3. Define Acceptance Criteria.
4. System design.
5. Work structure.
6. Environment Setup.
7. Research and Prototyping.
8. Plan for Code Quality.
9. Documentation.
10. Risk Management.
11. Time Estimation and Prioritization.
12. Team Coordination.
By thoroughly preparing before starting to write code, you can ensure that the development process is smooth, efficient, and aligned with the overall project goals.
2. Execute and Eject.
1. Version Control and Branching Strategy.
2. Write Tests First (Test-Driven Development — TDD).
If it ain’t tested, it’s broken — Bruce Eckel
3. Write (Clean) Code.
Recommended by LinkedIn
4. Continuous Integration (CI).
5. Continuous Delivery/Continuous Deployment (CD).
6. Feature Toggles.
3. Monitor and control
1. Monitoring and Logging.
2. Rollbacks and Recovery.
3. Blue-Green Deployments.
4. Canary Releases.
5. Security Checks.
4. Communicate and Congratulate.
1. Communication and Documentation.
2. Congratulate others.
3. Congratulate YOU (last but not least).
5. Retrospect and Refine.
1. Kick off retrospective process.
2. Set the mood.
3. What did just happen?
4. Decide and refine.
5. Close the Retrospective.
Conclusion.
Safe releases enable teams to innovate fearlessly, maintain user trust, and continuously deliver high-quality, dependable solutions that make a meaningful (valuable) impact. Think of it like this: a release process is like a seatbelt — sure, it might seem unnecessary until you really need it
By following these practices, software teams can significantly reduce the risks associated with deploying new changes to production, ensuring a stable and reliable release process.