Skip to main content

Welcome, the Hub connects all projects

Voices From The Field

MSPnet Blog: “Buzzwords: Programming teaches you how to think”

See All Blog Posts

posted November 20, 2017 – by Brian Drayton

A widely circulated video from opens with a quotation from Steve Jobs:”Everyone should learn to program a computer.. programming teaches you how to think.”    There is a tidal wave of rhetoric surging across the educational landscape advocating programming, or coding, as a new fundamental “literacy”  (and not just in the US — here’s a Dutch sample, which I came across while following a link from a post on Larry Cuban’s blog).  Some advocates make very far-reaching, not to say hyperbolic,  claims, some based upon an account of the Way We Live Now:

Software… is the language of our world. In the future, not knowing the language of computers will be as challenging as being illiterate or innumerate are is still crucial that every child learns to code.  This is…about promoting computational thinking. [his link, to an article by Wing). Computational thinking is how software engineers solve problems. It combines mathematics, logic and algorithms, and teaches you a new way to think about the world.  Computational thinking teaches you how to tackle large problems by breaking them down into a sequence of smaller, more manageable problems. It allows you to tackle complex problems in efficient ways that operate at huge scale. It involves creating models of the real world with a suitable level of abstraction, and focus on the most pertinent aspects. It helps you go from specific solutions to general ones.


Some reach even farther (I have seen this passage from a piece by Richard Culatta echoed widely)

Coding is the universal language of problem solving…Whatever problem we are presented with, at some point along the way coding is almost always part of the solution.

Of course, some commentators, while they see programming as a valuable skill that should be encouraged and available to any one who wants to learn it, frame their advocacy in a more nuanced way:  Yevgeniy Brikman’s well-known argument is that kids (and all of us) should be learning to think, rather than learning to code — instead, he recommends learning computer science and its principles:

The real goal should be to teach people a new way to think. In other words, we should be trying to teach computer science and not just coding…General purpose classes like physics, math, biology, and history teach you how to think about a wide variety of topics, including [e.g.] airplanes; this is in contrast to a class that teaches you how to use a tool, such as how to fly one specific type of airplane….For the same reason, we should focus on teaching computer science and not just coding: the former is a general purpose way of thinking, whereas the latter is a specific tool.

I am grateful for passionate advocacy in the cause of education, but there is some reason for caution when the Web and other instruments of mass culture (most of which are tied in to the Web these days, come to think of it) start to create the appearance of conventional wisdom, with little attention to glib assumptions or possible alternatives.  So with the “programming — thinking” meme.

When I first read the Jobs quote, I thought back to the arguments often used for teaching Latin — the language somehow had a mystical power to improve the clarity of your thinking, and the precision of your writing or speaking — as well as deepening your participation in the stream of Western Culture.  (The evidence about the impact of language learning on thought are oceanic in volume, and tend to be inconclusive, though there’s clearly something going on, at least sometimes.  Here’s a teaser…)

But there is definitely research that suggests that your thinking  — even your logical/procedural thinking, as well as various affective values — can be improved by learning various other things.  Chess, for example, may (or may not) have positive impacts on math learning (and here also), metacognition, social-emotional development, and so on… (See here for a chess research portal).

And what is thinking, anyway?  John Dewey’s analysis of  “how we think”  (written originally for teachers) suggests a different armature for the analysis of thought, as he sees thinking in the context of his analysis of inquiry  (see here for a valuable introductory essay from Brainpickings, with links to the whole book, and here a short attempt I made to relate his theory to classroom inquiry).  Dewey sees thinking as deeply embedded in the substance of the world and of the individual doing the thinking.  It is a process of imagination, application and reconstruction of knowledge (and search for additional resources), and testing of consequences until the original, unsettling “problematic situation” is deemed by the thinker to have reached (for now) a satisfactory conclusion.  Though, as an experimental psychologist, Dewey would be interested by the power of computational tools for the exploration of thinking, I think he would be cautious about a too-clean, “reduced,” account of the thinking process:

Thinking [is] not a machine-like, ready-made apparatus to be turned indifferently and at will upon all subjects, as a lantern may throw its light as it happens upon horses, streets, gardens, trees, or river. Thinking is specific, in that different things suggest their own appropriate meanings, tell their own unique stories, and in that they do this in very different ways with different persons. As the growth of the body is through the assimilation of food, so the growth of mind is through the logical organization of subject-matter. Thinking is not like a sausage machine which reduces all materials indifferently to one marketable commodity, but is a power of following up and linking together the specific suggestions that specific things arouse.

And then there is Douglas Hofstadter’s fascinating research on analogy (not to mention George Lakoff and Mark Johnson on metaphor) (for a fun if challenging read, I really recommend Surfaces and Essences:  Analogy as the fuel and fire of thinking).  He makes the strong claim that it is analogy, not analysis, that is at the heart of much human cognition:

One should not think of analogy-making as a special variety of reasoning (as in the dull and uninspiring phrase “analogical reasoning and problem-solving,” a long-standing cliché in the cognitive-science world), for that is to do analogy a terrible disservice. After all, reasoning and problem-solving have (at least I dearly hope!) been at long last recognized as lying far indeed from the core of human thought. If analogy were merely a special variety of something that in itself lies way out on the peripheries, then it would be but an itty-bitty blip in the broad blue sky of cognition. To me, however, analogy is anything but a bitty blip — rather, it’s the very blue that fills the whole sky of cognition — analogy is everything, or very nearly so, in my view.

It might seem paradoxical that Hofstadter’s work has among other things deployed rich computational tools in his research, but here is his account of the “central cognitive loop” that he believes underlies the flow of thought:

A long-term memory node is accessed, transferred to short-term memory and there unpacked to some degree, which yields new structures to be perceived, and the high-level perceptual act activates yet further nodes, which are then in turn accessed, transferred, unpacked, etc., etc.

(For more, there’s another book:  Fluid concepts and creative analogies: computer models of the fundamental mechanisms of thought.)

So now,  having rootled around in my mental storage closet looking for things labelled “learning to think,” I am prepared to come back to coding, where I started.   It seems to me that coding is a cultural tool, and a powerful one, and like all such tools it can be a source of insight, accomplishment, and indeed delight.  From an article by Jill Robbins,

examples of cultural tools include language, different kinds of numbering and counting, writing schemes, mnemonic technical aids, algebraic symbol systems, art works, diagrams, maps, drawings, and all sorts of signs

One of the remarkable things about our tools is that, when we are using them in the service of imagination and curiosity, they are in a sense  participants — they can teach and speak to us, in their own, specific, curious language.  As Robbins writes,

An important characteristic of tools is that they do more than simply assist in the development of mental processes. They also essentially shape and transform them… According to Vygotsky, tools ‘mediate social and individual functioning and connect the external and the internal, the social and the individual’ (quoting from John-Steiner and Mahn, pg 256)

Our tools are not inert, and the richer and more powerful they are, the more they can introduce surprise and new possibilities to the analogizing, metaphorical mind-body: a hammer may seem at first to speak only of driving nails, but I’ll bet that in your mental cupboard the label hammer is attached to quite a lot else. A hammer teaches you to think, too.

NOTE: Opinions expressed on this blog are the author’s alone, and not necessarily those of  MSPnet, TERC, or the National Science Foundation. 

Blog comments have been archived, commenting is no longer available.
This blog post has 1 comment.

Coding and Ancient Greek?

posted by: Brian Drayton on 11/27/2017 6:26 am

Here (link at the bottom) is a post by one Robert Wolcott, a "professor of innovation," whatever that may be, at the Kellog School of Management. It is a "take" on coding from someone who clearly accepts most of the mainstream assumptions about the purpose of education, and sees education through his professional lens.
He predicts that in the foreseeable future, learning to code will be culturally desirable or prestigious in the way that learning classical Greek used to be (whereas now it is more of a curiosity). After all, as he notes, the trend in human-computer interface design is to make more and more control of computers accessible to people with less and less technical knowledge. (This is the trend that sort of puts the lie to the most exuberant claims about how everybody in the future will need advanced technical skills.)
I learned Greek in high school because it enchanted me, and being an enthusiast (I made it a rule for myself to read at least a little Greek every day, which I have more or less held to ever since) I am happy to encourage others to learn it. I am not so clear about the "advantages" it has brought me, but it somehow scratches an itch I have always had.
Learning to code in school should first be rooted in just such an itch - the satisfaction of curiosity, the absorbing intellecftual kind of play that requires ingenuity, draws one into learning all kinds of unexpected ideas and skills, gives you something to share with, talk about with friends, and maybe empowers you to build a career, or an identity, or a new capacity for reflection, action, and creation. Maybe it's job-relevant, too, just as knowing classical Greek often was - if only as a mark of a person of "enlarged curiosity." My 2.

Anyway, here's the link: ful-as-learning-ancient-greek/