“Never Deploy on Fridays”
Ever since I started my career as a software engineer, I have heard this statement numerous times from managers, colleagues, teammates, and a bunch of strangers.
Their reasoning is simple. There's too much risk involved. If something breaks in production because of this latest code change, your users and other stakeholders would be frustrated and your whole weekend would be ruined.
Everyone has just accepted that this is an unsolvable problem, and therefore, anyone who attempts to deploy something on a Friday is acting irresponsibly.
We never stop to ask why releasing something is so risky.
The answer lies in the question itself. Risk is introduced when there is a lack of confidence. The engineers are well aware of how fragile their systems are. Any little change they make may cause ripples across the codebase. And the nature of these failures is unpredictable for even those who have built these systems from scratch.
I refuse to accept that it is impossible to design robust systems that don't give the developers a sense of anxiety every time they push a new release. The only way to let go of our fears and insecurities is to solve this problem like we would for any other complex engineering challenge.