The Robustness Principle
Back in January 1980, Jonathan Postel, an American computer scientist, was working on the TCP protocol. The result of his work would become a foundational part of the Internet as we’ve known it for the past three decades. As part of the TCP specification, Jon Postel wrote this:
Be conservative in what you do, be liberal in what you accept from others.
He called it the Robustness Principle.
Of course, when Jon penned that, he intended it for machines that would use TCP. In the decades that followed, however, the software engineering community would broaden the intended audience for the Robustness Principle beyond TCP. It would be invoked in computer engineering design discussions in general.
Here is an example to illustrate the meaning of this principle: Say I am about to write a computer program, mine, that needs to communicate with another computer program, theirs. I don’t know much about what to expect from theirs. According to the Principle, I should try to write mine in such a way that it can handle much of what is sent to it by theirs. On the other hand mine should be quite strict about what it sends to theirs.
When I first learnt of the Robustness Principle, it was out of its native TCP context. I don’t recall exactly where I first came across it but it had a lasting impact on me. I found myself applying it frequently, not just in my day-to-day professional life as a software developer, but more so in my personal life as well.
Whereas formal sciences typically draw their inspiration from natural and social sciences, this was one of those instances where a guiding principle had traveled in the other direction.
Here are three reasons I use the Robustness Principle as one of my guiding principles in life:
It encourages empathy. In order to “be liberal in what you accept from others”, you must begin by seeing things from others’ points of view. You must begin to feel as others might in their positions. This is empathy.
It acts as a check against the fundamental attribution error. This is really just an extension of the previous point on empathy, but one worth calling out nevertheless. Once I increasingly started seeing things from others’ points of view, I started giving them the benefit of doubt more, particularly when I felt they had somehow wronged me. Eventually I found myself deferring judgement of others’ actions until as late as possible, and sometimes reserving judgement altogether. Delaying or eliminating such judgement has protected me from this nasty cognitive bias.
It drives self-improvement. I interpret being “conservative in what [I] do” as holding myself to a higher, stricter standard than I would others. It means considering how my decisions and actions would affect others around me. It means being deliberate and considered in my decision-making. Over time, this can only lead to self-improvement.