The "Robustness Principle" as a world-view


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

In the original context regarding TCP communication this is a great principle. I believe It has grown well beyond the original intent and has fallen short on many occasions (see various browser implementations of css, javascript, html, etc). Lucky for you I'm not going to go down that path and I'm going to re-route the contextual quote focusing on its impact on our peers.

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?

Doug: whatevs

Ralph: and I know at one point we actually supported MS SQL and Oracle and we were mid transition from 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.