Constraints Are a Good Thing

Recently a soon-to-be-ex colleague unexpectedly stated:

Thank you for teaching me to regard my own brain’s limitations as a great strength.

That is pretty much the nicest compliment imaginable. It also nicely summarizes my philosophy. There are certainly worse legacies one could claim.

I’m genuinely surprised that my inane utterances over the years were impactful enough to solicit this response. I don’t recall what exactly I might have said that stuck, but I’m guessing it’s stuff like repeatedly emphasizing that I have a limited cognitive buffer – which, in addition to being highly annoying, can be a major asset as it forces both me and others to reduce unnecessary complexity.

This admission thus procures some leeway to question prima-facie acceptance of IDEs, type systems, obscurant tooling and whatever else undermines plain-text computing. More generally, and perhaps more constructively, it’s a lever to prompt discussions about what we’re actually trying to achieve.

The title of this post is another one of those lessons I had drilled into me by cdent: Acknowledging constraints isn’t just useful to account for human factors, it also provides effective boundaries in navigating solution space when designing systems and interactions. (Back then, this mostly came up in the context of HTTP APIs.) You might even argue that constraints are a prerequisite for creativity.