Programming: worlds without end

As someone who makes a living writing software, I experience the nature of my work and the opinions of the communities of programmers I encounter as generally consistent: programming is hard; tools help a bit; but there are no silver bullets, only lead ones. But there are remarkable discontinuities in this experience. From time to time, I meet or hear about someone doing something with software, using tools or techniques I’ve never heard of, that makes it all seem simple. I don’t know whether this appearance of simplicity (and mastery) is deceiving or genuine, but it plays a big part in my imagination of how programming could be, and I expect I’m not alone. I’m becoming convinced that there are people whose intellects, or even genius, are honed or engaged or unlocked by a technology that they completely get. It is perhaps not the tool but its joining with the hand that wields it that blesses the wielder with extraordinary abilities. This person programs in another world, one I may only glimpse. I don’t know whether to be encouraged or depressed about it.

What follows here is my encounter with the rumor of one of these programmers from another world.

Catching up on Twitter this morning, I came across a short blog post about the challenges of writing code for other people to use. The author’s point was that it is hard to think beyond what you yourself would want from a piece of software and beyond how you yourself would use the software. Reading through the comments, there were lots of people who agreed; and then I read a comment from a self-proclaimed accomplished programmer, Stefan Metzeler, that contained a contradictory claim — that programming isn’t hard at all when you have the right tools and put in the work to master them.

Judging from his words, Metzeler’s career has been focused on languages descended from Pascal, including one, Oberon-2, that I had never heard of. He praises the practicality of these languages, disparaging the industry-standard languages like C for their “pseudo-assembler syntax” and their incompatibility with the way the human brain works. Indeed, he likens using them to trying to do math with Roman numerals. Wow.

I felt there was something familiar about the argument as I read it. Then it came to me: this is like Paul Graham’s Beating the Averages all over again. The right tool can make you ten times more productive, accurate, better. We programmers love this stuff! It’s so exciting to think that maybe if I learned a new language or paradigm or framework then I could do remarkable things without too much trouble.

But it probably isn’t about the tools. They help, sure, but I’m not going to drop what I’m doing to master Oberon-2. I think the power is in the mind’s engagement with the language, or hardware, or philosophy… indeed with any intellectually rich artifact. For Graham it was Common Lisp. For Metzeler, it’s Oberon-2. It sounds like as a student in Switzerland he was steeped in the intellectual process behind Niklaus Wirth’s languages. That probably helped. For some people, for whatever reason, it’s Python, or Ruby, or Clojure, or JavaScript that shows them the way. They grok it, and it becomes something remarkably generative in their use of it. It’s like something out of myth: the sword only you can pull from the stone and that sings in your hand.

I ran this idea past my brilliant professor wife, and I was encouraged when she came up with examples in literary criticism and political philosophy of writers who’ve been influenced by a thinker or a school of thought and who have written interesting and transformative texts of their own. But it wasn’t the source material that gave them the ability to say something interesting — it was the thoughtfulness of their reading and what that thoughtfulness revealed to them. “Just reading Heidegger won’t make you a successful philosopher,” she pointed out. Too true.

Again, I am not sure whether to be encouraged or depressed by accounts of singing swords. I personally doubt there is any tool out there to make me a fantastically productive and creative programmer. But I think I’m inspired, nonetheless. It’s good to hear about new things and to be reminded that the experiences of people in our industry is so widely varied that we probably will only ever know a fraction of it.