The Developer's Drum Kit

Ben Madley, 19 Oct 2020

This morning, I came across a blog post on Engelbart’s Violin from 2012, describing how Douglas Engelbart (inventor of the computer mouse) created a device

Engelbart's Microwriter.

Engelbart's Microwriter.

which, through combinations of the six buttons, would let you type with a device that fits in your pocket. This was a specialist instrument with a steep learning curve.

The Microwriter inspired the quote:

In Alan Kay’s metaphor, the problem with bootstrapping in Douglas Engelbart’s Augmentation Research Center was that while “Engelbart, for better or for worse, was trying to make a violin,” “most people don’t want to learn the violin.” User-friendliness, not coevolutionary learning, became the norm in the design of human-computer interfaces.

from Thierry Bardini in Bootstrapping: Douglas Engelbart, Coevolution, and the Origins of Personal Computing. (p. 215.)

The author of the post had a longing for a piece of equipment for the software developer that somehow embodies the violin. If you spend decades working with a piece of equipment why should it be something that can immediately be picked up. Although I don’t agree with it, the article is worth a read.

The violin is, of course, a very new invention in the grand scheme of music. An image of a bowed, stringed instrument dates back to 13000 BC while the violin was created in the 1500s. The violin took time and we should expect our violin to take time too.

We also can’t hold the violin on a pedestal. It certainly has it’s detractors. Parents hate the violin. Not only is the violin hard to learn, the beginner only produces a screechy mess. I’ve had violinists tell me that it doesn’t sound good until Grade 5. Consider that. Not coding well for years. And I don’t mean a lack of good design, poor naming or no confidence refactoring. Not being able to get the letters from your head onto the page. Getting a job is already hard for junior developers. Netflix famously won’t even hire junior developers. Who would hire them when they’re further hampered by not being able to type?

Past the keyboard and mouse, the professional developer has tools that are not in the hands of the novice. An amateur can dabble in cloud computing, kubernetes and CI/CD, but these remain tools that do take years to develop expertise. As close to violins as he have at the moment.

I don’t like the violin analogy. I don’t think it is something to strive towards. I prefer to think of my equipment as a drumkit. Consider this quote from Gee Paw Hill talking about a different idea (how he centres himself before tackling a problem):

You ever watch a king-hell drummer set up a full kit for a serious concert? She’ll get things into a rough approximation of her standard arrangement. Then she tinkers. Raise that a half-inch. Move that just a little further to the right. She’ll hit a thing twice.

As she proceeds — it might take an hour — she’ll play short phrases where she hits two things, or three. They get progressively closer to sounding like whole little chunks. (It’s really quite cool to watch. I, for the life of me, can never quite tell what she’s sensing.)

What she’s doing is situating herself, centering herself in the elements of her problem and her range of tools for solving it.

This is how we spend our many hours and many years with my keyboard and development environment. Learn it, Sense it, Move it. Development environments are pretty wonderful. People really like VS Code and I’ve started using PhpStorm and I’m a huge fan. We are given lots of control over these systems. In PhpStorm you have hundreds of code inspections, linting rules and code fixes. I use relatively large fonts because they help me read the code more easily whereas a former colleague used small fonts because they helped them. I’ve seen a PyCharm configuration with gap between lines as big as a line itself. Many developers keep a personal curated .vimrc. This is all of us moving our drums trying things out and moving them again.

Through this we can reach our own expertise. For a long time I used Atom with Vim keybindings. It lets you do powerful editing that is hard to achieve in Atom or Vim on its own. I’ve written a package for Atom because it didn’t do something I wanted.

The drum is the instrument we should be striving towards. Most people, when given a drum can put out an even beat at a reasonable tempo. Expert drummers can reach the same musical heights as expert violinists. This is what we want our development to be. We want the beginner to be able to start and the experienced to be able to decide for themselves. This is what we’re allowed to do. Modern environments help beginners by providing suggestions, typehints and corrections. The experienced still get this but they can add in whatever additional tools and shortcuts are provided as they see fit. There is still learning, but it’s learning decided by the user. From my musical days, I’ve got a pretty good hand span (just barely C to E on a piano or Q to ] on my keyboard). This lets me be happy with shortcuts another user might need to rebind. Thanks to the drumkit they can.

Some time later an edit was added to the article.

Some people said, after reading this: “He thinks that computers ought to be costly and difficult to use.” Sorry, idiots. The message here is that a computer system should maximally reward learning. (The way Emacs does.) And that this should certainly be true of a computer one uses for 8-14 hours a day, for decades.

He’s not wrong. Learning a good shortcut, might get you 5 seconds saving a day for 40 years. We don’t need to start with such difficulty just so we have more to learn. Most of us do this to earn a living.