Please Learn to Eat the World

TL;DR Code is eating the world the same way writing ate the world. We don't all have to be expert writers - of language or code - but we should all be literate in both.

Jett Atwood's "Please Don't Learn to Code" post shocked me a bit, because I agree with almost everything else he posts. I agree with much of it, but the "everyone should learn programming" meme is not the straw man he criticizes, it's a young nebulous movement. E.g., the Mozilla Webmakers initiative is just a series of blog posts and some communication channels organized on a wiki page. So Jeff's input could and should be formative somewhere like the next Webmakers community call.

Writing ate the worldWriting Technology - art from Civilization 5, according to Sid Meier

My MDN colleague and technical, sci-fi, and beer menu adviser Les makes a good "Please Do Learn To Code" counter-argument. I want to elaborate on his analogy to writing:

Consider writing: there's a lot to learn and it used to be a thing done only by a few scribes. But, people today get a lot of mileage out of just sticky notes and email. Sure, improving your grammar and learning how to structure an essay can help in many, many ways. But, you don't need to be a professional writer to be a professional who uses written language.

Consider the state of the world at the time writing was invented/discovered. In Civilization 5 (which is my definitive guide to history), Writing can be preceded by Pottery, Sailing, Trapping, Archery, Horseback Riding, The Wheel, Masonry, and Metal Casting. In a world of subsistence-level agricultural society, writing was a luxury knowledge skill. Maybe there's an ancient "Writing Horror: archiving and human factors" scroll telling potters, sailors, and animal trappers "Please Don't Learn to Write" - suggesting that the general populace only needs to memorize the laws of the land and sign their own name to it.

In Civ 5 - Writing enables Philosophy, which combines with Trapping to enable Civil Service, and also combines with Calendar to enable Theology, which combines with Civil Service to enable Education. Education combines with Compass to enable Astronomy & Navigation, and with Chivalry to enable Acoustics, Banking, Economics. These disciplines combine together in Scientific Theory which enables the Industrial and Modern Eras of advancement - Electricity, Telegraph, Radio, Electronics, Mass Media, Computers, Robotics, Particle Physics, Nanotechnology.

Yes, this is a simplified and gamified perspective, but the truth is, while writing is only of ultimate importance "... in the right context, for some people." the incorporation of writing into other disciplines has been the foundation of the modern world. Reading and writing are the fundamental knowledge skills for every person in every modern occupation.

Code is eating the world, according to Mark AndreessenComputers - Civ 5 Art

Writing is a technology that allows someone to externalize thoughts into a medium that can be communicated to others who parse, interpret, and process those thoughts. Code is a technology that allows someone to externalize instructions into a medium that can be communicated to computers that parse, interpret, and process those instructions. We call that externalization of code, software.

Marc Andreessen always seems to know what's going down and what's coming up. And back in December he wrote a great WSJ essay on Why Software is Eating the World - a survey of industries all across society that are being consumed by software-driven activity and operations. Code combines with book-selling to enable cloud computing. Code combines with telecom operators to enable world-wide video chat (like we were promised would happen in the 23rd or 24th century). Code combines with aviators and aerospace to launch airstrikes without putting pilots at risk. Code is eating the world, just as writing did before it. These combinations seem obvious and intuitive to those of us who make software, but they are neither obvious nor intuitive to everyone else. Jeff is spot-on when he says everyone should know enough code to know "when code might be an appropriate way to approach a problem you have" but his implication underestimates how many problems can be approached with code - i.e., almost all the problems.

What does a code-literate world look like?

Jeff has a laundry list of other problems with the "everyone should learn to code" movement. My vision of a code-literate world is quite different:

  • There's less code. Coders undoubtedly realize that fully 90% of our time is spent reading code rather than writing it. When we do write code, we often refactor existing code. In a code-literate world, more people are aware of this, not fewer. So more people buying code understand that less is more.
  • There's more solutions than code. Even if code hasn't eaten the problem space already, more people are aware of the ability to re-use code, especially open-source code. More people understand how and when to apply code to problems.
  • There's new jobs in place of old ones. Jeff's right about entry-level programming jobs, though I dislike the trace of Silicon Valley hubris. Sure, "many people in the U.S. and around the world lack the education and skills required to participate in the great new companies coming out of the software revolution." But, "This is a tragedy since every company I work with is absolutely starved for talent. Qualified software engineers, managers, marketers and salespeople in Silicon Valley can rack up dozens of high-paying, high-upside job offers any time they want, while national unemployment and underemployment is sky high. This problem is even worse than it looks because many workers in existing industries will be stranded on the wrong side of software-based disruption and may never be able to work in their fields again. There's no way through this problem other than education, and we have a long way to go." -Andreessen

Jeff makes fun of the notion that NYC mayor Bloomberg learning to code will help him make public transit improvements. But Tulsa Web Devs are dealing with this right now as we write code for Tulsa Transit to put our local bus routes and schedules onto Google Maps. Even in the IT department, coding literacy seems low. They're "able to get around on the Internet" and they have "a basic understanding of how computers, and the Internet, work." But they buy code from Trapeze Group - they can't read it and they certainly can't write it. If the Tulsa Transit General Manager went thru Codecademy he could go to our github repository and read the code he sees. But because he doesn't know how to code, our code is as arcane to him as the box of software he buys from Trapeze. From my interactions with Code for America Brigade, I detect this scenario plays itself out in many places and in many sectors.

Code is eating the world. If people don't learn to code, they'll be eaten by it. Coding shouldn't be practiced by an elitist cabal of programmers selling software charms to illiterate masses. Our world is full of consumerism and starved for makerism already. We should encourage and teach others to code. Like writing, it creates opportunities, enables progress, and advances all of society.

Question or comment about this post? Tell me on GitHub.

Please Learn to Eat the World / groovecoder by groovecoder is licensed under a Creative Commons Attribution-ShareAlike CC BY-SA
  1. Good stuff. I'm constantly surprised at people in tech or really any field who want to know just enough to not get fired. How sad it must be to not be passionate about the thing you spend so much of your life doing. Even without the career benefits you mentioned, it seems like learning to code would provide just as much mental stimulation as playing sudoku or doing a crossword. I dont see a reason to NOT learn to do anything.
  2. Yes, the world would be a better place if everyone knew how to code at least a little bit: http://developers.slashdot.org/story/12/05/16/1612228/judge-to-oracle-a-high-schooler-could-write-rangecheck
  3. Hooray for the rangecheck catch. That, of course, is what I thought immediately after seeing the article. In my opinion, no one in the discussion has got philosophical enough yet (raise your hand if you're surprised that that is my opinion). The most important side-effect of everyone learning some code is that the link between technology and language would be re-established in people's minds. The ramifications of such a thing are myriad, but maybe more people would realize that ...human creative expression is not "content" ..collections of knowledge & information are not "data products" As to the evergreen car analogy: learning some code is not like learning how a combustion engine works. The engine nicely encapsulates several complicated laws of physics so you don't have to worry about them. But if you're totally ignorant of the existence of code, it's like not knowing the basic laws of inertia and gravity .. and such people are dangerous drivers.
  4. This sounds ... tricky. Maybe I don't have a good understanding of how we expect this new literacy to manifest itself? (That is: what will be different about my neighbor's day-to-day life when he becomes code literate?)
  5. Hey Jeremy! How have you been?! Good question, but it depends what your neighbor does now. The point of everyone learning to code is exactly that we coders *don't* know what our non-coding neighbors might create. At least with the case of Oracle vs. high-school programming, your neighbor's mobile phone may be cheaper since Google doesn't have to pay ridiculous infringement penalties. ;)
  6. Luke has got the idea (but he cheated by having around 7,000 offline conversations with me about it). I don't know who your neighbor is, but if heshe is for example a child dying from a curable disease because of unaffordable patented drugs, it makes a substantial difference whether society thinks of knowledge as property. >GUIs use metaphors to make computing easier, but they are bad metaphors. Learning to use them is essentially a word game, a process of learning new definitions of words like "window" and "document" and "save" that are different from, and in many cases almost diametrically opposed to, the old >...What we're really buying is a system of metaphors. And--much more important--what we're buying into is the underlying assumption that metaphors are a good way to deal with the world. Neal Stephenson, In the Beginning Was the Command Line
  7. I suppose I mostly agree, but in my gut I'm worried about an influx of amateurism. Even in undergrad I remember having to tiptoe lightly around the egos of teammates in our senior project: because the most efficient solution was to delete their code and rewrite it, but that would hurt team relations and morale. A decade later: I still face similar issues (although less frequently). There is something to be said for have an elitist union of professionals. I guess part of it comes down to this: Is our profession more similar to basic literacy (a celebrated cornerstone of human civilization), or is it more similar to car mechanics (it's gritty technical work, and you need to be certified to handle complex factors like human safety and environmental pollution)?
  8. Yes. :) I like Matt's analogy - someone who doesn't know *any* code is like someone who doesn't understand *any* physics. It's the reason we don't let 5-year-olds drive, right? Software is 10x more pervasive than automobiles. Everyone needs a basic literacy. If you're worried about amateurs, you should get involved with teaching/training/mentoring. It's incredibly rewarding!
  9. I liked your ideas because i learned many new things to improve my knowledge. Thanks for sharing with us!
Please Learn to Eat the World / groovecoder by groovecoder is licensed under a Creative Commons Attribution-ShareAlike CC BY-SA