A bit of philosophical content here. It resonated with me a lot - I’ve been training table tennis most of my life, and I can relate to the analogy in this article. Unless you’re significantly better than the opponent, you’re actually just trying to minimize mistakes and keep the ball in play as long as possible.
When we develop long-living software, we’re just trying not to lose - to bugs, technical debt, scaling issues. I love this way of looking at why we do unit tests, code reviews and regular maintenance.
In the creative process of writing code, it’s not if the code will be wrong, it’s when the code will be wrong and fixing it in the easiest way possible.