Every system is terrible, if you look at it long enough

It’s what I call the “curse of the present.” When you, as a developer, look at the choices used to build a particular application, you’re blown away at the poor decisions made at every turn. “Why, oh why, is this built with Rails when Node.js would be so much better?” or “how could the previous developer not have forseen that the database would need referential integrity when they chose MongoDB?” But what you may not realize is that you are seeing the application as it exists today. When the previous developer (or team) had to develop it, they had to deal with a LOT of unknowns. They had to make many decisions under a cloak of opacity. You are cursed with the knowledge of the present, so the system seems like a hackjob of bad decisions.

But as true as it is, it’s incomplete. It’s not only about the previous developer. It applies to pretty much all systems that you can access as a user. Things just constantly don’t make sense. And while there are many cases of a developer being inadequate, in many more cases IMHO what you are staring is a bunch of unknowns.

It is easy to assume that the guy who did this (this being anything at all) is just a stupid idiot. But that’s only because you don’t know or care. Who’s decision was it? You might think it was a developer, when in fact it was a clueless boss. Or maybe this was the most feasible approach. Or maybe it was the only possible one at the time. How much resources were allocated for this development? Anybody can do better you say, but could they be as good in 15 minutes only – cause that’s how much time was given. Do you know which technology was used and why? These are usually very transparent.

It’s easy to judge without knowing. And I guarantee you that any system can appear terrible if you stare at it long enough. But who needs all this negative energy? Nobody. Look around, try to understand, try to improve the system and learn something new in the process, and the world will surely become a better place.