I have spoken in the past about the difference maker. The thing that allows some athletes to rise to a level beyond others. They have training techniques that their rivals don’t have. There is something else though. They also have the ability to better deal with pain. In sports we often see examples of this. Hockey players “playing through the pain”, triathlon athletes “toughing it out“, and ultra marathon runners “running through the pain“.
Top athletes deal with pain better. Their training strengthens them physically and mentally. They also don’t fear the pain.
“It’s not that I love putting my mind and my body into that place. But it’s one of the most transformational places to be mentally and physically. I like to say that adversity breeds transformation. It’s a lot like life. So when I’m out on the race course having a really tough time – that’s usually when the breakthroughs happen.”~Scott Jurek
Adversity breeds transformation. If we don’t push ourselves, we won’t improve. If you believe in continuous improvement then you should be pushing yourself regularly. If you don’t put yourself out there, you’re not creating the opportunity to get better.
Pain is known and obvious to us in our daily life. It affects our behaviour everyday. Does the same thing occur in software development? Absolutely. Decisions are made on a daily basis around the pain involved in writing software. We try to minimize the pain that our software will cause us and our customers.
Daniel M. Berry has a written an interesting paper entitled The Inevitable Pain of Software Development, Including of Extreme Programming, Caused by Requirements Volatility. In it he describes the pain involved in various processes including waterfall, requirements engineering and extreme programming.
I do agree with him that this pain exists. This is a situation where software development can learn from sports. We need to not fear the pain but train ourselves to get familiar with dealing with it. A great example is to not back down on writing tests or refactoring when it gets hard but to gear down and keep doing it. If the tests are hard maybe it’s time to refactor our code so they are easier to write.
We need to stick to our plans and do our best to deal with the pain, tomorrow will be better if we can push ourselves today.