While at SoCraCan, one of the discussions I had was regarding uncertainty. The original question was how to reduce uncertainty, and it’s clear that, as Software Developers, we tend to deal with a lot of uncertainty, and we’re constantly trying to reduce it. That’s why we always want to make our feedback loops shorter, and we do that by writing tests and deploying often, to name a few things.
While that can make us have more confidence in our code, there are a lot of other factors that can bring around bouts of uncertainty to our daily business. Things like:
- A moving market.
- Changing business requirements.
- Unforeseen events (we’re really bad at seeing the future).
It’s natural human nature to grasp for certainty in everything that surrounds us. Unfortunately, when it comes to factors like the ones I outlined above, there is only one thing that we can say for certainty:
There is nothing we can do to be certain about what we can’t control.
As these things go, everything that’s external are things we can’t control. But the good news is, we don’t have to.
Trust
Even if we don’t realize it, as Software Developers we are some of the most trusting people on earth. Just take a look at your current project’s dependencies and count how many of them are actively developed by you our the team immediately close to you. We trust strangers to write good code that we can use all the time without trying to control it at all. And, depending on how stubborn you are, if something changes over there, we just eventually change the way we use it over here or choose a new dependency. It’s a simple cycle, based on trust and adaptation. So why are we opposed to changes that come from closer sources?
In my opinion, it is because deep down, we trust those we believe are similar to us more than those we feel more distant to ourselves, even if they're closer in reality. And that makes us more static and prone to cognitive bias. As Software Developers, and dare I say as human beings, we have to always remind ourselves that whatever we do is created by, sold by, used by, loved by and eventually discarded by other human beings who are mightly succeptible to change.
The human mind is ruled by entropy, and in constant flux. So why should we believe that our business is static? Why should we react with anger and disbelief when we hear about changes in our companies? Next time we start feeling the urge to oppose change, remember that change is the only natural outcome of existence. Anything but a changing world is artificial, and wether we believe a particular change is good or bad doesn’t really matter. What matters is that it exists.
Of course, there are moments when changing something is a bad idea. But remember that any status quo that’s maintained for too long will eventually break. Time consumes and erodes everything. And Software is no exception. So, just accept change. Live it, breathe it and write code that's easy to discard and rewrite. Because it will happen.