Postel's Law, otherwise known as "The Robustness Principle" has been a guiding principle in software engineering for decades. The principle states:
Be conservative in what you do, be liberal in what you accept from others
Bits and bytes leaking into real life
Anyone who has spent some time in development realizes that "real life" has major impacts on the fundamentals of programming (OOP anyone?). It is a great feeling when we can go the other direction and reuse principles we follow on a daily basis to better our lives.
What does this mean for "The Robustness Principle"? To me this means toleration and empathy by default. When I learn the context or the situational decisions were made in I find it easier to accept and move on. The problem with this is I often do not have the luxury of knowing that context or situation.
Does this sound familiar to anyone?
Doug: oh man, i had to take over chad's cms project. there. is. no. god.
Ralph: haha, im sure it's rough. he worked a lot of late nights on it, they moved up the due date by 2 months
Doug: seriously though. every dto has an interface, what in the world was he thinking?
Doug: and he actually wrapped entity framework in a custom xml-based orm. ????????
Ralph: hmm don't know about the dtos, i seem to remember him mentioning an off shore team filling up his dtos with business logic, maybe that was a prevention method?
Ralph: and I know at one point we actually supported MS SQL and Oracle and we were mid transition from ado.net to EF as a team. sounds about right that he tried to abstract that out a bit so that the code base had an easier way of implementing both
Doug: sigh, ok. looks like it's refactor time after i finish up this story he started.
More often than not, I've found a lot of poor decision making was usually due to some sort of stresser and not laziness. We need to start asking the right questions to determine if the potential emotional path we're about to start on is worth the trouble it may cause.
We need to learn to set aside preconceived notions understanding that life and the things we think we know the most about are unimaginably overflowing with unknowns. When we start giving each other the benefit of the doubt we can start focusing on the real issues and do what we do best: problem solving and refactoring.