Programming and playwriting

The book Range by David Epstein is a convincing plea to educate yourself as broadly as you can, and a warning for too much specialisation. Deepening your professional knowledge often comes down to narrowing your outlook, with tunnel vision as the dubious final station. Quantum leaps in innovation have often come about through cross-pollination of disciplines. The most creative minds take the roads less travelled, where their hyper-specialised intellectual peers would never wander.

I am not a genius at anything, but I do consider myself a solid generalist. I can sing, play the piano, and I have mastered some cello and guitar. I make passable photographs and I am not a bad cook. Except for my musical pursuits there is no hobby I have invested as much of my free time in as dramatic writing, especially if you count the literature classes during my English degree as laying the groundwork. I have written three plays that brought me neither fame nor fortune, but a lot of pleasure. And they have given me an unexpected insight into the trade from which I do make a comfortable living.

Software in its platonic state is just a bunch of instructions, lifeless and meaningless unless executed through an operating system. Likewise the script of a play are mere words until they are brought to life by actors on a stage in front of an audience. Shakespeare’s plays are 99% lines for the actors. A movie script contains much more clues on how the writer envisions the action, but they’re still just words. Behind these there exists a fictional universe of characters, emotions and plot twists to hold the audience’s attention. You can experience that world without trying to understand how it was constructed. In order to enjoy it you probably don’t want to dissect it. It would only take away the magic. Many people including myself suffered a temporary distaste for reading after the mandatory Dutch literature exam in secondary school, where they had to read and discuss 25 classics.

Yet if you want to write you have no choice. I had never realised to what a methodical degree you need to apply yourself to produce a ninety minute play. Before your characters can even say anything sensible you have to create this fictional world in your head where they can come alive. You describe in detail who they are, what they think of each other, and you do this explicitly, preferably on paper. Only once you know them well can you express what they say to each other. By that time you’re already two thirds into the whole process, but this is where the real fun starts for me.

Not every writer is equally good at dialogue, style, or character. Shakespeare was a master of imaginative imagery, but his plots were largely based on existing stories. If your true and only forte is writing catchy dialogue you will fly from one witticism to the next and you might be better off writing comedy skits. Or you could team up with someone who is good at structure and characterisation and create something great together. Every good line should either push the story forward or reveal something about the character, for which you have to know them first. Writing dialogue is the most fun part of the process, but you need to have done your homework first.

What does all this have to do with building software? Well, writing code, like writing catchy dialogue is the final destination of a creative process. Part of this process if thinking about the hardware that will run your software, who will use it and especially what for. Some agile schools of thought say you have to quickly start coding and not over-analyse. The proof of the pudding is in the eating. That may be so, but if your aim is to write code that optimally serves your user you have to regularly zoom out to see the big picture of architecture, the software’s purpose and your end users. If you fail to do that you’re really just hacking away without a clear aim. I admit it can be great fun too, but please do it in your spare time.

There are developers who like to dig deep into the innards of their programming language to get the most out of it. There are those who like to sit with stakeholders around a white board or design the architecture. These are all specialisms within one and the same pursuit: developing software. Not everyone can have straight A’s in every discipline, which is why you sorely need each other.