Yeah, my week is kind of continuing apace. I’ve had even more stuff come up and won’t be able to record and stream the podcast today either. Currently, I don’t know when I can even try to get this done. I will let you know as soon as I have a plan. It’s all gone to hell in the first week already.
There’s an important paradigm in software engineering that I have been aware of for quite some time, but only now am in process of really internalizing: always plan for failure.
The software you’re writing will fail once in a while. Even if you manage to avoid any bugs[1], even if the hardware never fails[2], there will always be a rogue cosmic ray that will cause a bit flip once in a while, so your software ends up in some unpredictable and uncontrolled state. Recovering from that state is something you need to plan for and design your software accordingly.
I hope all is well with you, as it seems that you are not talking about software in particular.
But yeah, I totally agree with the concept, I think it’s also related to what is called “defensive programming”.
Another related rule of thumb is to be careful about non-reversible decisions: it’s easy when you can “undo”, but when this is not an option, decisions should be considered very carefully.