Complexity Will Haunt Your Entire Career

I've gone back and forth over the years trying to think of the most valuable attributes of software I love working on. Some candidates:

Over time I have to give the nod to simplicity. Simple software solves a well-defined, presently-understood problem in the most direct manner possible. Simple software doesn't try to outsmart the future. Simple software doesn't have an agenda. Without simplicity, no other positive attribute seems attainable.

Despite this, simplicity is almost nowhere to be found in our industry. Why is that? Ultimately I believe it is because our industry values intelligence over experience. Our industry fetishizes analytical skills over hindsight. Pervasive ageism drives experience from industry. Well-intentioned but inexperienced developers repeat mistakes of the past because they have an irrational faith in analytical techniques.

(Coincidentally my obsession with simplicity is also why I continue to be a huge fan of C. Not because C is simple - quite the opposite. C is so awful that no one will want to write any more code than they possibly have to.)

Complexity is the opposite of simplicity. Here are some of my favorite complexity antipatterns:

It isn't just your local Architecture Astronaut who is a big fan of these antipatterns - the executives of AWS, Azure and Google Cloud are also big supporters. They know that these antipatterns will eventually cause more project failures that drive migrations to their pre-baked solutions.

last update 2019-02-03