When I was a young lad I had my heart set on being a car designer when I grew up. This dream carried on into my teens, then for some reason it vanished. Around the same time I discovered I could 'work' computers, and that I quite enjoyed it.
Fast forward a great many years and I am looking back at over two decades of experience as an IT engineer. But my interest in design has never really waned - I still find great pleasure in things that have been designed well.
Just over six years ago I discovered the furniture manufacturer, Vitsœ. Although they started life as a Danish/German partnership they are now very much a British company - based in the UK with an Englishman at the helm. They produce a shelving system, called the 606, and I invested in some for my home office.
The 606 is extremely flexible in its usage, it can form an office space...
or somewhere to keep a record collection...
or even a kitchen...
Impressively, it also scales; from a small start...
to massive installations...
But the most impressive thing about this bespoke shelving system is that it's not bespoke at all. There are a few building blocks that form the basics, and a very simple mounting system that, fundamentally, works with gravity. What's even more amazing is the system was designed in 1959, and is still the same today. Should you want to add to your 606 shelving layout purchased in the 60s, you can still buy components that work with it.
To me that is nothing short of incredible, mostly because of the forethought that went into the design. As I explored the history of Vitsœ I learned of the German designer behind the 606 system - Dieter Rams. We've discussed Rams on this blog before, because as a company we are fond of his principles of good design.
Before I joined Ansible I had been using it for over a year, and I found parallels in much of its working to some of Rams's design principles.
Good design makes a product useful
As I worked with Ansible I discovered I could engineer whatever I wanted - anything I'd been doing with other configuration management tools for the prior seven years, in fact. In my current role with the company I get to travel and meet lots of interesting customers, and increasingly I find them being creative with this simple, but flexible and powerful tool.
Good design makes a product understandable
I used to work with Solaris a lot, an operating system I had a great deal of respect for. However, writing SMF configuration files in XML was hardly fun! So it is with JSON too - another datastructure designed for computer communication, not human consumption. YAML, on the other hand, is human readable - designed that way. And with no complex ordering (Ansible runs tasks in serial) it is plain to see one's dependencies, there, clearly, in front of our eyes.
Good design is long lasting
SSH as a secure protocol has been around for a long time and is tried and tested. When I first discovered Ansible I loved the fact it didn't have its own overly-complex transport mechanism. Here was a transport - an access method - already in ubiquitous use, so no messing with firewall rules or trying to convince enterprise security teams of its security credentials. I also found great delight in the modular, open, design that permitted easy extension. This harked back to the UNIX Philosophy - small, purposeful, tools that could take data in and put data out, thus enabling 'pipelines' (a tenet of DevOps CI and CD workflows). These features all helped me to deliver to one of the favourite things I used to promise clients, "I'll engineer for the things you can't yet see".
The most important observation that I have made about good design though is it's not entirely about aesthetics. Good design focuses on people. We would do well, in the software industry, to pay attention to Rams's ten principles, and to remember that ultimately we're using technology to make our lives easier, or better. Let's all pay heed to what Albert Einstein is quoted as once saying...
"Make everything as simple as possible, but not simpler"
This post first appeared on ansible.com.