Learning to Code vs. Coding to Learn (Michael Trucano)

Michael Trucano posted this on his blog December 8. 2015. From the World Bank blog: “Michael Trucano is the World Bank’s Senior Education & Technology Policy Specialist and Global Lead for Innovation in Education, serving as the organization’s focal point on issues at the intersection of technology use and education in middle- and low-income countries and emerging markets around the world. At a practical working level, Mike provides policy advice, research and technical assistance to governments seeking to utilize new information and communication technologies (ICTs) in their education systems. Over the past 18 years, Mike has been advisor on, evaluator of, and/or working-level participant in, educational technology initiatives in over 45 middle- and low-income countries.”


“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 languageor basic mathematicsrequirements – 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 this 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?

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.

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 school:

*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?….



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.





Filed under school reform policies, technology use

16 responses to “Learning to Code vs. Coding to Learn (Michael Trucano)

  1. A thoughtful piece, I’d say. But closing on the old chestnut “How are we doing with the old, basic literacies of reading, writing and arithmetic?” undermines the post’s overall value.

    This is not an “either/or” scenario (e.g., ” you can either teach kids how to learn to code” OR “how to add numbers and spell words). This is however detractors consistently posit the coding for all movement.

    The fact is that in an overwhelming number of K-12 schools (and beyond), computer labs are still sorely underused as glorified type writing stations (as Dr. Cuban’s own writing has quite rightly pointed out). At the very least, the coding for all movement offers technology coursework more rigor and substance; at its best–when incorporated across subjects like ELA and math, it offers us the new substance of literacy. It is a way for kids to teach their computer what to do rather than vice versa. That is an either/ or scenario I can live with.

  2. Mary

    I teach technology in elementary schools. What’s interesting is most students are motivated by the opportunity to control the computer by creating programs. With the resources that have been developed in recent years, programming activities can be included in many areas of the curriculum. The best resources I’ve found are:

    Khan Academy Computer Programming which provides short videos, a framework of program execution, and immediate feedback on program execution. Activities can include things like illustrating a story, applying a math concept such as the formula for perimeter or area, in addition to the importance or correct spelling and punctuation.

    Lego Education Robotics which includes the mechanics of building robots, and graphical drag and drop programming of the robots. Kids learn that the robot will do exactly what their program tells it to, and lots of problem solving skills.

    Hour of Code resources which introduce students to programming in a variety of mostly game based themes. Students solve puzzles in a step by step logical manner and can see the code used for these solutions. Participating in Hour of Code frequently includes adult volunteers (who are programmers) coming to the classroom to help students, and share their experiences.

    Many teachers have not been exposed to computer programming so it becomes a difficult topic to teach. If they take the risk to try one of the activities described here, they find the students will quickly take to helping each other and asking each other for help when they get stuck. I teach students to help with words, not by doing it for the person they are helping. This way everyone learns.

  3. Thanks a lot, Larry, for re-publishing my original post here! Cheers, Mike

    • larrycuban

      Thanks go to you, Mike, for nicely summarizing the arguments on both sides and coming at it from a world-wide perspective.

  4. Pingback: Learning to Code vs. Coding to Learn (Michael T...

  5. Chester Draws

    I enjoyed the blog, and think that you have put the various arguments into perspective, but I do think you’ve missed a key issue with those that argue:

    “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.”

    This is a fantasy, and is a dead end in terms of education.

    Knowing how to code does not mean we understand what all code does, and why. You can’t just open modern code and merrily inspect what it does and how just because you know what the individual steps do. Even the people who write it only know their own little section in most cases. (I don’t even understand my own code after I’ve left it for a year.)

    Comprehension of what happens and why often exists on a different level to the medium the activity is placed in.

    I can read English pretty well, but that does not make me able to understand Law, just because I can read and understand the words. I have a degree which includes some Calculus, but that doesn’t mean I can follow high level Calculus just because I understand the terms.

    Why things work the way they do is never found in the code. It’s found in an understanding of the purposes of what the people are trying to achieve. You don’t need code to understand live pricing or targeted advertising. And you would none the wiser if you tried to figure them out by looking at the code.

    • larrycuban

      Thanks for the comment, Chester.

    • @Chester Fair enough, you said this better than I could have. That said, I think saying this is a ‘dead end’ is a bit hyperbolic. It may be a baby step towards a distant goal, and there may be other approaches that would help move one toward this goal more expeditiously, or efficiently, or enjoyably, but I think characterizing this as a ‘dead end’ is a bit much. While I agree with your observation that “[c]omprehension of what happens and why often exists on a different level to the medium the activity is placed in,” I don’t know that ignorance of that medium aids in comprehension either. But I suppose I am unfairly parsing the language you used in what was a very succinct and insight comment on a blog post. Thanks for taking the time to read the post, and for commenting on it! Your response helped me understand some of what I wrote (and tried to write, and couldn’t figure out how to write) in a very useful way. Regards, Mike

  6. Pingback: Learning to Code vs. Coding to Learn (Michael T...

  7. Reblogged this on Blogcollectief Onderzoek Onderwijs and commented:
    In deze blog https://larrycuban.wordpress.com/2016/04/15/learning-to-code-vs-coding-to-learn-michael-trucano/, die ik vond via Larry Cuban, stelt Michael Trucano, een onderwijsexpert bij de Wereldbank, een paar belangrijke vragen over leren coderen en programmeren, die relevant zijn voor de Nederlandse situatie. Ook in Nederland horen we de roep om de 21ste-eeuwse vaardigheid coderen als verplicht vak op school in te voeren. http://tweakers.net/nieuws/99114/neelie-kroes-programmeren-moet-verplicht-vak-op-basisschool-worden.html

    Over de vraag of alle kinderen zouden moeten leren programmeren wordt heel verschillend gedacht met zowel felle voorstanders als even felle tegenstanders. Voor een positief antwoord worden de volgende argumenten aangevoerd:
    Kunnen coderen is een vaardigheid die relevant is voor de arbeidsmarkt. Het is maar de vraag of dat op de lange duur (‘2032’) ook geldt. Denk aan robots die kunnen programmeren, waardoor de behoefte aan programmeurs in de toekomst kleiner wordt.
    Door te leren coderen leer je logisch nadenken en problemen oplossen. Dat is zeker een goed argument, maar daar tegenover stelt Yevgenyi Brikman: “Don’t learn to code, learn to think” http://www.ybrikman.com/writing/2014/05/19/dont-learn-to-code-learn-to-think/
    Leren coderen kan helpen gelijke kansen te scheppen voor meisjes en jongens en kinderen met diverse sociaaleconomische achtergronden.
    Trucano loopt een voor een de argumenten vóór coderen als verplicht vak langs en stelt daar telkens kritische vragen bij.

    Er zijn goede argumenten om kinderen de mogelijkheid te bieden om te leren coderen en het is ook zinvol om alle kinderen tenminste te laten kennismaken met een manier van denken en problemen oplossen die inmiddels deel uitmaken van onze cultuur. Dat hoeft niet voor een beeldscherm te gebeuren. Onze kinderen moeten al veel te lang stilzitten op school. Veel leuker en inspirerender is het coderen te combineren met maken: ‘Maker Education’. In mijn eigen Maker+Klas en roboticalessen leren ze spelenderwijs coderen terwijl ze een robot bouwen.
    Leren coderen kan zelfs tijdens de gymles. Op de site Levend Programmeren http://www.levendprogrammeren.nl staat een spel waarvan de regels samen het algoritme vormen van een robot. Iedereen is in beweging en heeft veel plezier. Zo kan het dus ook.

    We kunnen ons afvragen https://pernillesripp.com/2016/04/27/not-every-kid-wants-to-learn-how-to-code/ of leren coderen de enige manier is om jonge mensen te leren denken, problemen oplossen, creatief zijn en volwassen in de wereld staan. Literatuur (en in het algemeen plezier in lezen en schrijven), muziek maken, dansen, drama en sport zijn andere wegen waarlangs we het zelfde kunnen bereiken. Als we al die mogelijkheden op school bieden kunnen ze zelf kiezen wat het beste bij hen past.

    Voor we coderen als verplicht vak in het curriculum opnemen doen we er goed aan de vragen te stellen waarmee Trucano zijn stuk eindigt:
    Moeten we codeerles geven op school?
    Wat verstaan we onder ‘coderen’ in onze context?
    Wie moet die lessen geven en wie moeten het leren – een paar computernerds of iedereen?
    Kunnen we ons deze lessen veroorloven? Of, omgekeerd, kunnen we ons veroorloven deze lessen niet te geven als andere scholen of scholen in andere landen dat wel doen?
    Is het voldoende wanneer onze kinderen leren coderen, of gaat het er om dat ze de vaardigheden worden in ‘coderen om te leren’ – systematisch en gestructureerd denken? Daarmee wordt coderen relevant voor alles wat we in school leren.

  8. Pingback: Learning to Code vs. Coding to Learn (Michael Trucano) | Blogcollectief Onderzoek Onderwijs

  9. Pingback: Buzzwords: Programming teaches you how to think | bloghaunter

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s