One of my favorite natural phenomenons is the pendulum swing. You pull the pendulum back and let go. It swings to the complete opposite direction and then back and forth slowly decreasing the distance until it settles in the middle. The most amazing part is that so many of our decisions are modeled the same way. We react to problems by going in the complete opposite direction. I’ve experienced this time and time again in life, and I’m sure you have too.
Years ago typed languages were king. Then it was seen to be too cumbersome, so we started using untyped languages like PHP. Later we see those code bases as nasty so now we are moving back to typed languages that are inferred or duck typed.
Early on, companies would say engineers are too expensive and then outsource all engineering. Then when that failed they moved most of the jobs back. Now some jobs are outsourced and some aren’t.
Relational databases weren’t meeting the development and scaling needs because they were too rigid and structured. Many people jumped ship to NoSQL databases where there is no structure at all. But then NoSQL databases had problems of their own so now people are looking at NewSQL databases, which is somewhere in the middle.
Monolithic applications are hard to maintain, develop on, and deploy in a large organization. So now people push for micro services, which are many tiny applications. But people are seeing very different problems with that architecture.
Think about a hard breakup you had. The next person you dated was probably the polar opposite of your ex. Chances are that wasn’t the perfect person either.
We tend to react to things not being perfect by going in the complete opposite direction. It seems that a better reaction would be to slightly correct course and actually address the problem at hand. Be “iterative” or whatever the kids call it these days. The next time you are in a meeting about architectural changes or re-organizations think about whether or not the change is a pendulum swing.