One of the many paradoxes of human creativity is that it seems to benefit from constraints. Although we [perceive] the imagination as requiring total freedom, the reality of the creative process is that it’s often entangled with strict conventions and formal requirements. Pop songs have choruses and refrains; symphonies have four movements; plays have five acts; painters still rely on the tropes of portraiture.
Constraints can seem like the last thing you’d want for a creative project, but they’re actually beneficial when it comes to doing good work. Anyone who has written knows the hurdle of the blank page, and the feeling that comes from being paralysed by innumerable choices. By restricting the choices available to us, paralysis disappears and we can focus on the task at hand. Don’t believe me? Consider the task of writing an entire story in less than six words. It seems impossible! How can you develop characters, expand a plot, and tell a tale in six words? Here’s how Hemingway did it:
For sale: baby shoes, never worn.
This story is short, powerful, moving, and worth telling. The imposed constraint of six words requires each word be chosen carefully to maximize the impact of the whole. The constraint leads to a beautiful outcome.
The Happy Path to Constraints
There are many ways to set constraints: standards levied from on high, governance by decree, or manual review by a third-party. All of these may work, but they introduce a disconnect between the group responsible for setting constraints and those responsible for implementing applications. Architecture should take a different approach that I’m calling happy path constraints. Two examples, one from Google and one from Netflix, suggest a path toward setting constraints for the better of both the organization and individual developers.
Interestingly, at my 7 years at Google no one ever mentioned the word governance.
We know that Google has amazing infrastructure, including world-leading deployment, runtime, and analytics tools. They achieve this by placing constraints where it matters most — one way to deploy to production, on one kind of operating system, on one kind of hardware. This strictness could be frustrating for development teams looking to innovate, but being able to run your application on world-class infrastructure is worth the restrictions. Google’s constraints provide an excellent run-time environment for developers, and developers who follow these constraints are rewarded with the best possible environment to run a service.
Netflix constrains application development through Chaos Monkey, a suite of compliance tests that simulate production failures. Any application that doesn’t comply with Netflix’s reliability requirements is pummelled into submission in production, ensuring that deployed applications conform to an ideal architecture designed around maximum reliability. Developers are given choice in how they build their services to operate in such a chaotic environment, and the Chaos Monkey tooling ensures that the right choices are rewarded and the wrong ones punished. Netflix’s constraints provide high reliability, and developers who follow these constraints are free to be innovative in how they achieve it.
A commonality between these two examples is that they don’t include architecture review boards, a draconian standards committee, or an ivory tower architecture group that espouses standards that the rest of the organization has to follow. Instead, these two groups build tooling and support into their development systems to make sure it is as easy as possible to arrive at the correct outcome.
Architecture at Workiva aims to take a similar approach. To standardize on a common way of solving some key problems, we constrain a developer’s choice by making the easy way to do something the best way to do something. Rather than dictating standards from on high, we strive to make the choice to follow a common standard the easiest and best choice. Make the right path the happy path, and allow your teams to innovate within these constraints.
Art consists in limitation. The most beautiful part of every picture is the frame.