Can You Understand How Technology Works Without Understanding Code?
from the yes-and-no dept
There’s an interesting debate that’s broken out in the tech world, kicked off by tech/coding superstar Jeff Atwood arguing that people shouldn’t learn to code. He was mostly responding to an announcement by NYC Mayor Mike Bloomberg that he wanted to learn how to code:
Jeff found this to be a misuse of Bloomberg’s skills:
He goes on to explain why he thinks this is a bad idea, even as he’s a fan of programming himself. I won’t go through his full list of points. You can read them on his site yourself, but it does feel like a lot of his complaint isn’t so much about people learning to code, but the idea that people learning to code will mean more people coding for a living. For example, there are these two points:
- It assumes that adding naive, novice, not-even-sure-they-like-this-whole-programming-thing coders to the workforce is a net positive for the world. I guess that’s true if you consider that one bad programmer can easily create two new jobs a year. And for that matter, most people who already call themselves programmers can’t even code, so please pardon my skepticism of the sentiment that “everyone can learn to code”.
- It implies that there’s a thin, easily permeable membrane between learning to program and getting paid to program professionally. Just look at these new programmers who got offered jobs at an average salary of $79k/year after attending a mere two and a half month bootcamp! Maybe you too can teach yourself Perl in 24 hours! While I love that programming is an egalitarian field where degrees and certifications are irrelevant in the face of experience, you still gotta put in your ten thousand hours like the rest of us.
While I understand the points he’s raising in both of these cases, it feels like he’s taking the “everyone should learn to code” argument way beyond what is generally meant in that discussion. I don’t think anyone is saying that people should learn to code for a living. Lots of people learn math, but don’t become mathemeticians or even use math in their daily jobs — but it doesn’t mean it hurts to understand math.
In fact, I think that Jeff recognizes this. He notes that a better focus would be:
The general populace (and its political leadership) could probably benefit most of all from a basic understanding of how computers, and the Internet, work. Being able to get around on the Internet is becoming a basic life skill, and we should be worried about fixing that first and most of all, before we start jumping all the way into code.
And that’s something I think everyone agrees on. It’s just that some folks are suggesting that the way to better understand computers and the internet is if they have some familiarity with code. And thus, I actually think that Jeff and those arguing against him, may actually be in agreement. It’s just that some people think that understanding code is a good way to understand computers and the internet.
One of the better responses to Jeff points out that learning to code is different than preparing for a job as a coder. As that post notes:
Learning to program is not the same thing as training for a programming career. Learning new skills opens up new perceptual avenues and cognitive spaces. I’m learning to sew right now, not because the world needs another tailor but because I want to be able to recognize quality in clothing and create pieces that I can’t find. Novice coders feel the same way about their digital goods and should be encouraged to continue. Learn to program.
Perhaps where the major difference comes in is that Jeff believes that learning to code is not a stage in understanding computers and the internet, and he compares it to plumbing:
I can also recognize plumbing problems when I see them without any particular training in the area.
However, as esmoov writes in his response, Jeff may have just internalized what he has learned about plumbing:
He may not have had formal training (the professional/personal equivocation again) but he has been trained by an unruly digestive movement, a low water tank and the horrible things 18-22 year-olds do to and around toilets. My dad showed me how to fix a broken chain in the tank. Before I learned that, toilets had three states: working, clogged and broken. After learning to fix the chain, I added a new state to which my toilet-perception could resolve: loose or broken chain. Again, the ability to take in, cut up and categorize the world is a product of the things learned.
Indeed. I don’t think that learning the basics of programming solves all internet/technology illiteracy, but it certainly helps people to understand the lay of the land better. It’s not necessary, but it can help them better understand the problems and potential solutions when they come up — even if they don’t intend on programming themselves. It can lead them to recognize, for example, how bizarre it might seem to copyright an API or patent software itself. That’s a concept that’s a little harder to comprehend if you don’t understand programming at all. That isn’t to say that understanding programming is completely necessary, but it certainly can help in getting people to a point of digital literacy.