Have you ever thought why we write Hello world so many times?
Do you think we are saying hello to the world we live in or to the world we are creating?
By writing software, you are daring to be the god or creating a simulation of the universe.
You think that this system you created will keep the order and the interactions you defined will not create cumulative entropy.
But it’s impossible, isn’t it?
The system you created will end up in a state that you would never ever imagine at least once and probably thousands of times.
And, I am not considering infrastructure related resiliency here, let’s suppose it’s perfect. I am referring the state consistency.
What to do then… Well, I don’t know 🙂 – But it’s a mission impossible, you can get better and prepare for the worst.
- As a software developer, you better understand the business domain in detail very well.
- Having analysts or domain specialists with a good system understanding and some healthy obsession, being them and you nice humans .
- Ideally, having integration tests for each and every scenario of your system would be great.
- this requires a well designed deployment automation that can create isolated test environments.
- any change should be simulated in tests first
- Related to the previous point define as many interaction combinations as possible.
- Make sure you don’t allow actors (users, systems) to leave the defined field of play.
- Be creative and imagine what could go wrong.
- Having logs that you can later understand would help.
- Periodic data & state integrity checks may help depending on situation.
- Have the budget of doing all these things. 🙂
Definitely not a complete list, what would you add?
Now let’s go and pretend to be the god of our little matrixes, or matrices, or whatever