CodeCademy & the Importance of Programming

I consider CodeCademy and other websites that teach computer programming to be fantastic examples of inclusive civic technology. Our readings from last week talked about how now digital inequality is not defined by differences in access to technology, but rather in literacy, so I feel that inclusive civic technology should seek to promote digital literacy. Full participation in the digital public sphere requires considerable technical sophistication. For example, it may be important for digital citizens to understand how to encrypt messages in order to communicate in a secure manner with others, especially in countries where governments spy actively on their people. This may sound extreme, but almost all complex digital interactions require at least some understanding of files and filesystems, the Internet and routing, email protocols, and more – think uploading photos to Facebook, using BitTorrent, or setting up a desktop mail client. If they are not in a better position to use technology, those with greater knowledge of computer systems are at the very least more likely to know when new technology could be useful and to actually build it.

I claim that learning how to program is the first step to gaining a thorough high-level picture of the mechanics of common computer systems. Sure, beginning programmers on CodeCademy may start with high-level interpreted languages like Ruby or Python that provide little insight into the underlying capabilities of the hardware. But the right Ruby or Python tutorial – and I believe CodeCademy has many of these – shows a learner the power of programming and the range of tools that can be programmed and inspires them to dig deeper. When a Python programmer tries to open a connection to another server and gets some opaque error, they will likely be motivated to learn more about TCP and the other protocols that power computer networks to understand exactly what could have caused the problem. The basic libraries of Python and Ruby touch a number of central concepts, including networking, filesystems, user interfaces, numerical methods, and more. If a curious programmer expanded out from this basic core, they would soon find themselves with a fairly thorough grasp of many key ideas. They might be motivated to learn a language like C that exposes more of the bare hardware to them, giving them an intuition for what can be done in a computer system. I think this intuition – for the capabilities of a machine or the capabilities of software running on particular operating system – is what helps a digital citizen challenge the conventional wisdom about what is possible, enabling more effective use of technology or creation of new technology. For example, a less educated citizen may see that his BitTorrent download is taking a long time and may blame his slow network connection, not thinking that maybe BitTorrent is not using much bandwidth because it is not opening concurrent network connections or that a different torrent altogether may be faster because it will connect to different peers. A more educated citizen might recognize the power of the Bitcoin blockchain to form the basis of some new means of peer-to-peer exchange that is impervious to government spying.

In all, the basic understanding of programming that websites like CodeCademy provides can motivate many previously nontechnical citizens to learn about the underpinnings of the digital public sphere and empower them to be content creators and influencers.