There’s been lots of buzz on the topic of whether or not you should learn to code. As an engineer, I don’t have unbiased thoughts on the matter. I tweeted Jeff Atwood’s piece because, well, I agree that it’s pretty silly to think that the world is going to be a better place if the Mayor of New York City learns how to code. I agree with Atwood that his valuable time would be better spent elsewhere.
I believe there are essential skills you learn as an engineer who codes. It teaches you how to structure your thinking, and the process looks something like this:
- I have this thing I want to build.
- I have a finite set of tools that enforce a certain set of rules I must follow.
- And… go.
Coding is unforgiving. Its structure is well-defined and enforced by whatever interpreter or compiler you might be using. You are punished swiftly for obvious errors. You are punished more subtly for the less obvious ones.
Once you’ve mastered a particular language, you’ve also mastered a means of thinking. You understand how to decompose a problem into knowable units, and you learn how to intertwine those units into pleasant and functional flow. Perhaps you’ve figured out how to get that flow to perform at Herculean scale. There is no doubt in my mind that this is an essential and valuable skill for anyone to learn and master.
However, there is a language you could master that teaches many of the same lessons, appears far more forgiving in terms of syntax, and has immediate broader appeal.
The language you can learn is your own.
I argue that there is an essential set of skills that intersect both with writing words and writing code. Let’s revisit the process:
- There’s this thought I want to write.
- I have finite set of words, a target audience, and, likely, a certain article length that all serve as constraints.
- And… go.
Writing appears more forgiving because there is no compiler or interpreter catching your its/it’s issues or reminding you of the rules regarding that or which. Here’s the rub: there is a compiler and it’s fucking brutal. It’s your readers. Your readers are far more critical than the Python interpreter. Not only do they care about syntax, but they also want to learn something, and, perhaps, be entertained while all this learning is going down. Success means they keep coming back – failure is a lonely silence. Python is looking pretty sweet now, right?
The articles on Rands keep getting longer and longer, and as I’m finishing a piece, I worry, “Is it too long?” I worry about this because we live in a lovely world of 140-character quips and status updates, and I fret about whether I’ll be able to hold your attention, which is precisely the wrong thing to worry about. What I should be worried about is, “Have I written something worthy of your attention?”
Writing is the connective tissue that creates understanding. We, as social creatures, often better perform rituals to form understanding one on one, but good writing enables us to understand each other at scale.