Know-How

From Hobbies to Trade Skills to Artistic Expression, developed knowledge and improved craft is the mark of accomplishment — Coding is no different.

– Darius Dunlap

I wish schools still had Shop, and Band, and Art. I believe there is a kind of mental development that’s missing without them. And I believe that these kinds of classes — focused on doing and making — support and expand the skills of reading, writing, arithmetic, problem solving, and other key skills we all want kids to develop.

These days there is a lot of talk about “Learning to Code.” And that would be great, except for this aura of magic around it. Because learning to code is really a lot like learning carpentry, or photography, or learning to cook. The basics are pretty simple, though that is not evident to the uninitiated. And full expertise is a lifetime pursuit. And most of us are content with a modest competence.

Learning to code is easier than it has ever been. Not because it’s become simpler, but because the tools have become better, specifically in that they allow you to do something useful more easily and with less knowledge and skill.

Photography is undergoing and transformation in a similar way. It’s not that the pictures we take with our phones and fancy digital cameras are better than film for the expert photographer, but that these new tools provide immediacy. You can take a picture and instantly see it. You can learn from every photograph taken, right there, right then, and take another and another until you get the photo you want. You take more photos, too. Your photography improves at a pace and in ways that would have required much more patience, organization, focus, and effort a couple decades ago when the turn-around was so much slower.

Deep expertise still takes years, but the basics are more accessible than ever.

It’s the same for coding.

Mastering coding, or more properly Software Engineering and Computer Science, is not something every needs to do. it’s probably not something every could do, even if they tried. It’s a deep field and the complexity of the most advanced techniques are beyond those without an aptitude. At the very highest level, it requires not just superior mathematics and problem solving, but also philosophy and compassion — designing systems requires thinking beyond the immediate technical problem to understand how the system fits into the world and how people are going to use it. The people who can do all of this well are rare.

But for the rest of us, our needs are simpler. We can create something that solves a straightforward problem, using the excellent tools developed over the last several decades, and never have to think about the mathematics of drawing the curve at the corner of our icon or the physics of making our animation look natural, or the details of setting up a server and keeping it reliable and secure.

So “Learning to Code” is a lot like learning to cook. It doesn’t mean we will all become master chefs with Michelin-rated restaurants. But it does mean we can learn to make a good loaf of hand-made bread from natural starter that’s better than what you can get off the shelf at the grocers.

Most importantly, learning to code, like taking shop or joining the band in high school, helps you get better at other things. It helps you solve problems in other domains, and it develops your mind.