Systemic change is difficult. I’m talking about software projects/systems, but there are a lot of parallels with societal systems too, like governments or states.
I’ve been in large projects with hundreds of thousands of LOC where a lot of the code was painful to read and full of code smells and so on. It happens over time as projects get maintained by different developers and teams or different enhancements or changes are made. It becomes more difficult/costly for new developers to work on the project as things are brittle and may easily fall apart.
I’ve also had the dubious pleasure of living under a system of government heavily burdened by corruption and inefficiency and patronage and nepotism and inequality and a bunch of other problems.
You Will Be Tempted To Throw Everything Out And Start Over
In such situations, you will often find yourself fed up. You will be tempted to throw everything away and start over and rebuild everything from scratch. You wonder who made all of these past decisions that have resulted in such a terrible system and what the heck were they thinking?
Unfortunately, you can’t just throw everything away. People still need to eat, and the system users still need to do their work. You can instead do some kind of system-wide one-time big-time change. But the problem with that is…
Change Is Risk
More often than not, the existing system works. Or at least, it works well enough that the system isn’t totally unusable. The software system’s users can still perform the needed functions, albeit maybe with some number of bugs. The state’s citizens can still mostly survive and there aren’t riots on the streets or people dying of mass starvation or anything like that. Life is hard, but there is life.
Looking to change things means some level of risk, and of course some level of cost. There are several possible outcomes:
- Change happens and things become better. Hooray! The change was worth it!
- Change happens but things remain the same. Uhh, why did we spend all that time and effort for the change then?
- Change happens but things actually get worse. This is the worst of all worlds. We wasted time and money and energy and things got worse! Why didn’t anyone warn us this could happen!
Often we can’t predict with any certainty which outcome will happen. We can make educated guesses, by comparing to past experiences or other people’s experiences. But each software project is unique. This is kind of a blessing since it means it’s hard for programmers to run out of work. But it’s also more of a curse since it means we can only reuse small parts from other projects with no guarantee that the entire whole will work cohesively together.
Countries/states/governments are unique too. Each people has their own geography, culture and history and unique problems arising from such. And to make matters worse, countries are made up of people, and most people will have differing opinions on which things are better and which things are worse. This makes it much more difficult to form a consensus.
****Granted that change is risk. But sometimes we have to take those risks anyway. We have to decide whether the risk is worth the possible upside vs the potential downside.