On my love for interfaces

Last modified:

One of my favorite software principles is "program to an interface, not an implementation".

I like it because so many wonderful side-effects fall out of it.

...and I'm sure many more.

All of those are wonderful. But at a deeper level, I think the reason I love it so much is because all of those side-effects promotes psychological safety.

Principles like this endure because they’ve stood the test of time. The catch is that you rarely internalize them until you’ve felt them in practice.

Sure, they produce “better” software. But what is better?

To me, it’s software that solves the problem it set out to solve, adapts easily, and is something people enjoy both using and working on.

Good principles not only make your output better, they make you better at the work.