Like a Box of Foxes

Glyn Faulkner's blog.

Blogs I Read

Honouring your creative fire Past meets present Jelena's mental health blog Casee Wilson's music blog Derek Sivers' blog

Programming has become too easy

July 03, 2017 — Glyn Faulkner

On an intellectual level, I like to see good engineering. Something simple and elegant that gets the job done well never fails to bring a smile to my face. Conversely, bad engineering practice gives me Rage. A particular bugbear is when I see basic functionality of the web -- displaying text and images, clickable links, form submission... -- reimplemented in JavaScript. But that's a rant for another day. For now, suffice to say that half-arsed reinventing of perfectly good wheels is rarely a good thing.

But for all my righteous anger and indignation, I have a dirty secret.

You see, the thing I enjoy about programming is the part where I'm solving hard problems in clever ways with simple tools. Unfortunately there are a lot of things you have to do when programming that aren't "solving hard problems". But I'm a realist: I can totally deal with gnawing on the bones of this unsatisfying skeleton as long as it is there to support some meaty core problems that I can really sink my teeth into.

When you give me a modern programming language, complete with garbage collection and a huge library covering all the common use-cases, and the kind of problem that just requires me to assemble the pieces... well, you've taken the fun out of it for me.

Let me give you a concrete example: a few years ago I was working as a systems analyst, and had to develop complex web applications using a proprietary scripting system that had originally been designed in the early 1990s for producing printed mail-merge letters. Among its many flaws, it had only six user-settable variables (conveniently named GSL_TMP1 to GSL_TMP6), which could only be assigned to once at the very start of your script's execution. Conditional statements could not be nested and lacked support for else if blocks. Looping was only possible over values returned from a small subset of database tables, which you queried with an awkward and primitive DSL which was little more than a list of key=value pairs. The syntax even incorporated non-printing ASCII escape characters, effectively forcing you to do much of the development in the platform's own editor, which lacked such basic amenities as syntax highlighting and multi-level undo! The result? Even the simplest of programming tasks morphed into an intellectual exercise requiring creativity and experimentation. Sure it could be incredibly frustrating, but I never got bored, even doing the most basic of web development.

Let's be clear, if the problem is hard enough to stand alone, then I'm delighted that modern programming languages give me all the support I need to let me focus solely on the real problem I'm solving, but for more routine tasks, I'd much rather have flawed tools that required a measure of creativity to work around their shortcomings.

On a related note, here's a great Ted-Talk from the Undercover Economist Tim Harford on how frustration drives creativity in other areas.

Tags: fun, creativity, programming, engineering

Tweet a comment!