Learning to code vs. coding to learn
This week, over a million students around the world will participate in the Hour of Code, an annual event designed to excite interest in computer science and computer programming. This reflects a growing interest in some quarters to promote efforts within schools to broaden awareness of what it means to ‘code’ (i.e. write a set of step-by-step directions that instruct computers to do something) and to help students develop related skills.
Perhaps not surprisingly, many leading technology firms have been keen proponents and supporters of this educational coding “movement.” While such support has been particularly pronounced and high-profile in the United States — many of the prominent organizations have close ties to and/or roots in Silicon Valley — this is long past being only a North American phenomenon.
Citing the increasing importance of coding skills, and IT jobs more broadly, to their national economies, policymakers in many countries are considering national coding education efforts of various sorts — and a few education systems have already begun to implement related initiatives. From Trinidad and Tobago to Indonesia to Nigeria, “coding” is being introduced into classrooms and curricula around the world in various ways, both informally and (increasingly) formally as well, for better and/or for worse (depending on your perspective, and the particular nature or rigor of the specific initiatives).
This phenomenon is notably observable across Europe, where, rather famously (at least within the communities of people who care about and pay attention to such things), Estonia and the United Kingdom have introduced coding curricula for students beginning in early primary grades (the UK has actually made this mandatory — as has Slovakia, for what that’s worth). Each year in October, CodeWeek.eu serves as a continental focal point and showcase for many of these sorts of national and regional efforts. A recent report from the European Schoolnet (Computer programming and coding — Priorities, school curricula and initiatives across Europe [pdf]) features results from a survey of 21 ministries of education about their current coding-related initiatives and plans for the future. To date, 16 European countries have integrated coding into their curricula at some level (with Finland and the Flemish part of Belgium expected to do so in 2016). While the focus of most of these countries has been at the upper secondary level, coding is increasingly to be found (or soon to be found) at the primary level at a majority of these countries as well. The report highlights a number of important related pedagogical questions that are emerging out of European experience:
- How to design effectively the learning processes and outcomes involving coding?
- Which concrete activities (and programming languages) are most appropriate for different students, according to their age, interests and capacities?
- What are the particular merits (and limits) of adopting a cross-curricular approach to teaching coding or a discrete computer science subject?
- How to refine assessment, in particular where coding is integrated in a cross-curricular approach in other subjects?
It also highlights many challenges related to training and support for teachers. While many of the startups developing the tools and services that make the coding movement possible are in the United States, Europe is in many the ways at the center of actual related activities in schools.
“Coding,” it is said by some, is the “new literacy.” The ability to write and understand computer code, some contend, is increasingly fundamental to understanding how to navigate one’s way through, to say nothing of succeeding in, a modern society where more and more of our lives are enabled and/or constrained by the actions of devices and information systems that run on computer code.
Few would argue with the notion, I would expect, that efforts to expose some students to ‘coding’, and to develop some related skills, is a bad thing. That said:
Should *all* students learn how to code?
All? That’s ridiculous! some would answer.
All? Absolutely! others respond.
I’ve sat in on a number of related discussions in ministries of education and at education policy forums around the world. At times, it can seem like members of these two groups are not only on different pages, but reading from totally different books. Those people just don’t get it, I’ve have heard representatives from both groups lament about each other after the conclusion of such meetings.
For what it’s worth, and in case it might be of any interest to others, here are, in no particular order, some of the most common arguments I hear made both in support of, and against, educational coding initiatives:
- Coding education will help students acquire vocational skills that are immediately relevant to today’s job market. Look at all of the IT-related jobs available in the world, coding education advocates say. Shouldn’t our schools be specifically preparing our students to compete for them? Setting aside larger questions about the proper place of vocationally-oriented classes and approaches within an education system (some folks have a bit more expanded view of what ‘education’ should mean than something that is only meant to prepare the workers of tomorrow) and agreeing that some perspectives are a bit extreme (“Latest Craze for Chinese Parents: Preschool Coding Classes”), critics respond that many related efforts are a waste of time in practice for a number of reasons. These include that: (a) they focus on developing largely mechanical processes that are easily learned in other venues; (b) they are largely concerned with “job-relevant” skills of today, not tomorrow; (c) initiatives of this sort are largely driven by the business sector (a group whose motives they view with great suspicion); and (d) many current efforts have little pedagogical value in and of themselves. Often cited with particular disdain are projects purportedly about coding but which amount to little more than learning how to use basic office tools such as word processors and presentation software. Proponents counter that arguing that something shouldn’t be done in the future because it is often done badly today doesn’t always make for a winning argument, and that just because the private sector supports a particular activity in schools doesn’t necessarily mean it is bad or that nefarious intentions are at play. Don’t throw out the baby with the bathwater, they respond.
- Coding helps develop important logic and problem-solving skills.
Steve Jobs remarked that “coding teaches you how to think.” Few would argue against the notion that, when taught well, education in coding can help develop important logical thinking and problem-solving skills. Indeed, most coding education is at its very heart about logic and meant to be oriented to help people identify and solve specific problems (whether they are as basic as “have a greeting appear on the screen” or “move this turtle up and to the left” or as complex as trying model projected rainfall patterns or the transmission of a virus throughout a population). In response, critics argue that coding courses have no monopoly on the development of such skills, and that in fact such skills should be embedded throughout an entire curriculum, not the focus of a single school subject.
- Understanding coding helps students better understand the nature of the world around them, and how and why increasing parts of it function as they do.
Computers play increasingly large roles in our lives, and so it’s important to understand how they function. There tends, I find, to be general agreement about this statement among education policymakers, although different groups nevertheless disagree on its practical relevance, given many competing priorities. That said, it is perhaps worth noting that many critics of educational coding efforts may perhaps not fully grasp the potential import of this observation. Computers don’t have minds of their own (at least not yet, anyway!), they act only according to the instructions that have been programmed into them. The price you are charged in the market, why your government or a private company thinks you might do (or not do) something, why a search result appears on your screen — such things are increasingly not directly determined by the whim or a person, but rather by an algorithm (or combination of algorithms) that someone has created. Understanding what such algorithms enable, and how, will increasingly be important to understand our increasingly digitized world. (Technology is neither good nor bad, Melvin Kranzberg noted, nor is it neutral.) Those who acknowledge the potentially profound insights that might follow from such observations may still argue that there is a very practical and immediate opportunity cost here: If you add coding to the mandatory curriculum for all students, what comes out? Some places are considering doing things like letting coding courses be used to meet foreign language or basic mathematics requirements — is this a good thing?
- Teaching students to code can serve as a gateway to subsequent study of STEM topics — and hopefully to jobs and careers in related fields. Reasonable people can disagree about the exact nature and magnitude of the “STEM challenge” (i.e. problems that arise because insufficient numbers of students are studying science, technology, engineering and mathematics … a topic for another blog post, perhaps). That said, even where critics concede that such a challenge exists, they may ask: Is “coding” really the best gateway to boost general interest in STEM? If coding is not well taught, might it in fact dissuade some students from further study of STEM topics, and thus decrease the likelihood that they pursue STEM-related careers? Is coding education in schools indeed a gateway to coding, or is it in practice just ‘edutainment’, something to do with all the computers that schools have purchased and still haven’t figured out how to use productively — better than nothing, to be sure, but not better than many potential alternatives?
Often related to this:
5. Introducing coding in schools can be a force for greater equity and equality of opportunity.
There can be little doubt that the tech industry suffers from a real problem related to diversity (or, more accurately, a lack of diversity). Efforts to introduce coding in schools in some places are seen as a measure that can help with this. Advocates maintain that, when coding is something that everyone does, it is no longer something just e.g. for boys, or for kids with computers at home, or for people in California or India, or who are Caucasian or Asian or ___ [feel free to insert your own stereotype and/or “privileged” group]. Providing more exposure to coding for a wider variety of kids can certainly help to some extent, critics might counter, by helping to providing some initial opportunities for those who may not otherwise get them and by chipping away at some stereotypes, but the situation is rather complex, and much more needs to be done. Such critics worry that, because there are coding initiatives in schools, certain leaders will declare that the diversity challenge is being ‘solved’, or at least ‘handled’, and leave it at that. Supporting international efforts like Girls Who Code or more localized programs like GirlsCoding (in Nigeria) is all well and good, such critics say, and certainly a good start, but it isn’t ‘solving’ the problem.
6. Being able to code enables new avenues for creativity and creative expression. Efforts to teach coding skills to young students through the use of tools like Scratch, or as part of robotics courses or initiatives to promote “making” (and/or “physical computing”), are often cited as compelling examples of what (good) coding education efforts may comprise. Here again, many critics may laud such efforts but still argue that, even if you concede that coding is a new literacy in our increasingly technology-saturated world, it is still worth asking two rather basic questions before moving ahead with new, large-scale, mandatory educational coding initiatives in schools:
- How are we doing with the old, basic literacies of reading, writing and arithmetic?
- Shouldn’t we ensure that these fundamental “literacy skills” are in place before we start tacking new ones on to our already bloated curricula?
Some related discussion:
Where a great teacher is working with and supporting an eager, motivated student as she learns to code, many find it hard to argue against doing (more of) this sort of thing. Educational “success”, after all, is at a basic level largely a function of tapping into a learner’s inherent curiosity (and not stifling it!). If we are talking about a situation where a dis- or slightly interested learner is made to learn and practice by rote a number of rather basic commands and actions related to “how to make a computer do something”, especially by a teacher who herself does not know the subject well and where that “something” largely relates to how to do things like change font sizes in PowerPoint — well, that is something that perhaps no one should have to learn in school as part of the official curriculum. There is of course space in between these two extremes where things get a little more interesting, and complicated.
When considering that broad middle area, a quote from artificial intelligence pioneer Roger Schank might be useful. Schank (provocatively, as is his wont) declares that, “Any cognitive scientist worth his salt knows that it isn’t subjects like algebra or chemistry that matter. It is cognitive abilities that are important.” The same holds, it can be argued, when it comes to coding. It might be that coding itself is not really the goal (although of course we do need coders, just like we need chemists) — but if widescale coding education helps students develop their own cognitive abilities, then it is a potentially useful means to a larger end.
As an extracurricular or enrichment activity in education systems that are already doing a good job in promoting the development of basic literacy skills, the introduction of efforts to promote coding in schools may, according to such lines of thinking, seem rather reasonable, especially where such efforts help engage or energize otherwise disinterested learners — particularly where such students may not, for reasons of bias, discrimination or stereotyping, be considered (or even consider themselves) as candidates to learn such things. In places where there are still great struggles to help students develop basic literacy skills, however, especially in many middle and low-income countries, it should not be surprising if many policymakers consider educational coding efforts to be, as one such official recently put it to me, a “luxury” that they “cannot afford right now.”
That said, policymakers in some such places are beginning to change their tune. Faced with a recognition that the basic “computer literacy” classes which (for better or for worse) monopolized the use of computing facilities in their schools in the past may be no longer needed (because students or already “computer literate”), or are “ineffective” (because such courses haven’t demonstrated real value), or are simply out-of-date (technologies change so fast!), some of these people are now asking themselves: What do we do with all of the expensive computing equipment we have installed in our schools if we are no longer teaching ICT literacy? In such circumstances, calls to introduce classes in “coding” can fall on particularly fertile soil, for better or for worse, as policymakers look to fill seats in existing school computer labs while exhibiting what might charitably be termed a “crisis of imagination”: Computer Class 1.0 was “ICT literacy,” but that’s over, so now we’ve moved on to Computer Class 2.0: “Coding,” because that’s the latest thing to do. (We know this because it was in a TEDtalk.)
There is another way to consider the potential value and relevance of “coding” education in schools, however — although to be honest this viewpoint remains a distinct outlier in related discussions of education policymakers in which I have participated. According to this line of thinking, the real value in “coding” education is not that this will develop market-relevant computing skills and lead (at some point in the future) to an increase in the number of computer programmers. (This may occur, and if it does, that’d of course be great, but that isn’t the real aim, proponents say). Rather, coding courses can be used to help students develop skills so that they can “think algorithmically” and engage in so-called “computational thinking.” According to folks at Carnegie Mellon, which is a hotbed of related activity, “Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer science … [It] means creating and making use of different levels of abstraction, to understand and solve problems more effectively. Computational thinking means thinking algorithmically and with the ability to apply mathematical concepts such as induction to develop more efficient, fair, and secure solutions.” According to such folks, “learning to code” is really about developing skills, approaches and familiarity with tools that help enable the use of “coding to learn.” “Coding” isn’t something just for programmers and computer scientists, in other words, but of relevance to *all* learners, and is potentially relevant to *all* subjects taught in school.
That said, even where such arguments find a receptive audience with policymakers (and I find that, for the most part, they have not), one common challenge across all education systems is that there is a shortage of teachers who themselves can teach and integrate related basic concepts and approaches into their subjects so that students can develop and utilize coding skills while learning about “traditional” topics taught in schools: not just science and math, but also history, language and even subjects such as art or physical education (yeah, even that’s possible — but it takes a rather special gym teacher, in a rather special school environment). Given this practical reality, the impulse to introduce separate coding classes with dedicated coding teachers has an obvious allure. Let’s first teach kids to code, and to think algorithmically, and once we’ve got a good start with that we’ll try to figure out how to make this stuff relevant to how they spend the other hours of their school day. Other places say: We can’t find such teachers locally, so we won’t teach this stuff at all.
Should we teach coding in schools? What does “coding” mean in our context? Who should teach it, and who should learn it — a certain few, or everyone? Can we afford to do this do? (Conversely, given that our neighbors and competitors are doing this, can we afford not to do this?) Are we interested in making sure more kids “learn to code” and then stop there, or is it more about developing the skills that would help students eventually “code to learn”?
Whatever the situation or context, how a policymaker answers these and many of other related questions is probably colored quite a bit by how she views the role and process of education, and the activity of learning, more broadly.
Parts of this post originally appeared in a slightly different format on the WISE ed.review site as part of an essay with the title, Should All Students Learn How to Code? Pros and Cons. This was one in a collection of short essays exploring related issues; other contributions came from Audrey Watters, Mitch Resnick and Jack Lawicki.
Read more World Bank blogs.