2BIG in DevOps
Ian Hellström | 25 November 2019 | 2 min read
Needless complexity in production systems is contrary to best practices and common sense. Yet quite a few developers relish beautifully crafted solutions that, in theory, can cater to everyone’s taste, but in practice serve no one. Stability and predictability are paramount to operations, yet the desire to experiment with technologies and frameworks often outweighs such considerations. To that end I’d like to present a simple principle for DevOps: 2BIG.
The ideas behind 2BIG are intuitive:
- Better Is Good because a solution needs to be better, not perfect, to be considered good (enough).
- Boring Is Good because the fewer surprises in operations, the better.
Better is Good
In software development, and outside, a proposed solution does not have to be perfect. Perfection is subjective anyway: one person’s perfect is another person’s poor. Software needs to be fit for purpose.
‘Better is Good’ is essentially Occam’s Razor for development: the simplest solution that can solve a problem is preferable. It frees up time to do more urgent and important tasks instead of tying resources to answering questions no one asks, least of all the customers.
That does not mean software ought to be seen as a black box, in which the mess inside it is irrelevant as long as the outputs are the same for identical inputs. Complexity that is there to accommodate future needs is perfectly acceptable; complexity that merely exists to placate developers’ sense of aesthetics is pure bloat.
And that leads us to the second BIG principle:
Boring is Good
Overly designed applications and convoluted architectures make life for operations terrible, not to mention maintenance and support for the development team itself. As stated in Google’s book on SRE:
The price of reliability is the pursuit of the utmost simplicity.
Irrespective of who said it: everything should be made as simple as possible, but no simpler. Stated differently, boring is good.
Boring often means software behaves predictably, which together with sensible levels of automation can eliminate toil. Boring does not mean that technology migrations are forbidden; if there are pressing reasons to switch technologies, that is fine. That, however, is ultimately a business decision, not a technological one. The desire to experiment with the latest shiny fad must be weighed against the clear need for reliable software.
So, don’t make your products too intricate. Make them 2BIG-compliant!
Good are improvements that are better, not necessarily perfect. Good are predictable technologies, even though you might ache to try something new and different.
2BIG: better is good and boring is good.