programming is terriblelessons learned from a life wasted

Code is more than just Apps

When I’m not fighting programmers who are dismissive of learning, I often get into fights with other people in the industry, who seem heartbroken that people might go and learn a thing.

In Nick Marsh’s recent piece, “Why I’m not learning to code”, he opines that great coders are numb machines for delivering code at the expense of all other sensation, and that those learning to code are doing so to gain power, rather than be driven by curiosity or understanding.

Why I’m not learning to code—Because spending time understanding coders is more valuable than understanding code itself.

I think what the people looking for code power really want is to not be confused by code, and to be able to use the power of code to get what they want. But I think learning to code yourself is a very inefficient way of doing this.

If you want to make use of the power of code, and you aren’t already a coder, the best thing you can do in my opinion is to find some people who are really good at coding, and make yourself invaluable to them.

His argument is clear “Don’t learn to code if you want to build things, hire them instead”. Confusingly, the same author made a passionate plea for everyone to learn SQL, a few weeks later.

It took me a while to realise the power of knowing SQL. I guess it was because I’m so used to asking developers to give me answers to questions I have, or to relying on the user interfaces provided by the big web analytics providers. And that was always good enough.

But, as is always the case, you don’t know what you don’t know – and what I didn’t realise was how hamstrung and limited my understanding of how the apps I was working on worked, and what people were doing with them.

As a result I’ve become totally converted to the idea that everyone working on web products should learn some SQL. […] You don’t need to be a query master to make use of SQL to the highest level. You just need to be aware of how structured data works and be able to write some simple data extraction queries so you can self serve reports as and when you need them.

Although contradictory in titles and outcome, what separates them is the underlying assumption of what code is and what code is for. At first, code is seen as a means shipping a new iPhone fart app, but later on the author comes to see code as a means to communicating with the computer directly. What started as a defiant streak of wilful ignorance turned into a plea for everyone to learn.

The author isn’t the only one to struggle with this distinction. Even long time coders suggest “Why not learn to Plumb?” (and the answer of course is, why not?), but code is much more than just a way to funnel shit around, but a sandbox for learning and experimentation.

In the late 60’s Seymour Papert argued that teaching children to code would give them powerful tools for learning and creativity, and he was right—Code can be used to teach complex ideas in mathematics, help children understand grammar, to create art, music and, most importantly of all, have fun.

I’m not saying everyone should learn the web framework of the month, or that everyone should be able to recite QuickSort before being allowed to touch a keyboard, but in effect we’re dragging people around art galleries, and chastising them for picking up crayons: If you want art! Hire an artist!

It’s ok that everyone isn’t a poet, or a lawyer, or a journalist, but it’s a good thing that many are literate. It’s also ok that not everyone is an embedded engineer, a web developer, or a data analyst, but it is a good thing for more to be able to express their ideas on a computer.

Code is about communication, expression, and play—not just apps.