Why Coding Is Not the New Literacy
An anonymous reader writes: There has been a furious effort over the past few years to bring the teaching of programming into the core academic curricula. Enthusiasts have been quick to take up the motto: "Coding is the new literacy!" But long-time developer Chris Granger argues that this is not the case: "When we say that coding is the new literacy, we're arguing that wielding a pencil and paper is the old one. Coding, like writing, is a mechanical act. All we've done is upgrade the storage medium. ... Reading and writing gave us external and distributable storage. Coding gives us external and distributable computation. It allows us to offload the thinking we have to do in order to execute some process. To achieve this, it seems like all we need is to show people how to give the computer instructions, but that's teaching people how to put words on the page. We need the equivalent of composition, the skill that allows us to think about how things are computed."
He further suggests that if anything, the "new" literacy should be modeling — the ability to create a representation of a system that can be explored or used. "Defining a system or process requires breaking it down into pieces and defining those, which can then be broken down further. It is a process that helps acknowledge and remove ambiguity and it is the most important aspect of teaching people to model. In breaking parts down we can take something overwhelmingly complex and frame it in terms that we understand and actions we know how to do."
He further suggests that if anything, the "new" literacy should be modeling — the ability to create a representation of a system that can be explored or used. "Defining a system or process requires breaking it down into pieces and defining those, which can then be broken down further. It is a process that helps acknowledge and remove ambiguity and it is the most important aspect of teaching people to model. In breaking parts down we can take something overwhelmingly complex and frame it in terms that we understand and actions we know how to do."
I've always thought programming is more like writing POETRY than just being literate - not everyone needs to do it. Both involve writing down words, but knowing the vocabulary and grammar isn't the really the point.
If you wanted everyone to be a programmer, you wouldn't teach them code, you'd teach them skills of system design, troubleshooting, etc. But why would you want everyone to be a programmer? That's like teaching everyone to be a diesel mechanic or poet. Kind of a waste of time.
>> furious effort over the past few years to bring the teaching of programming into the core academic curricula
They tried this in the early 1980s and all we got was the Internet at everyone's home, online shopping and news, free video conferencing, entirely new ways to organize photos, transportation and events, realism-quality video gaming, and cell phones so easy to use that toddlers can participate in the world wide web.
What good could coding literacy possibly do now?
They are still not talking about literacy - they are talking about problem solving. That makes it the new Mathematics, not the new literacy. (And yes, what I learned coding on my VIP not quite 40 years ago did help me with my degree in Math a few years later, so I do know what I'm talking about.)
It's more like the old Car maintenance. A skill you can use so you don't get screwed because you know nothing about what makes an important component of your life function.
It's been this way whenever a new technology became normalized in the public eye.
I had a chat with my late grandfather about this in the mid-90s. I told him about when I was a kid and there was a big push in making children "computer literate". So much so, in fact, that I took a class in 3rd grade or 4th grade in LOGO on a VIC-20.
My grandfather said that reminded him of when he was a boy in the 1930s. In his time people thought EVERYTHING would be mechanized and learning how machines work and how to fix them would be required to be literate in the future. So, he actually took classes in engine design (!) and maintenance in the mid-30s, and it wasn't a vocational school.
As we all know, the deep knowledge required to design a car or an oven similar machine is held by specialists and baked into the products we buy.
Similarly, the deep knowledge required to program a computer to do useful work SHOULD be baked into the products we buy.
Think of it this way: who needs to read the manual when they get a new car? You just figure it out because it is largely intuitive. A TON of non-intuitive thought went into making the car easy to use.
I think it is our responsibility (those of us here who are engineers) to work towards putting that level of ease of use to work. This is the real reason Apple is popular. Their stuff is easier to use than most other products and people are HUNGRY for that.
We don't need to teach every kid to program. We just need better programs.
Hmm. If you can't read, you are restricted to looking at pictures. If there is someone to read for you, then you can hear the parts of text they choose to read for you, otherwise you are pretty much restricted to children's picture books. A lot of what happens in the world is simply a mystery to you.
If you can't program, you are restricted to using existing features in the way they are implemented. If there is someone to help you, then they can write a piece of code for you to do whatever mundane task (be it VBA, shell script, a feature or a complete application), otherwise you are pretty much restricted to clicking at links, icons and menus. A lot of what happens in the computer is a mystery to you.
Hmm. Not convinced, myself.
Pretty much this. The whole push to have 'everyone' code is because it's trendy and is a definable skill, unlike 'learning how to think' or reason. And it segues quickly into 'jobs' which makes everybody happy. Further, there is this odd belief among many people (including a whole raft of Slashdot posters) that software can do anything and the world should be viewed through the lens of a Von Neumann machine.
Coding is a subset of human activity, not a superset. Even modeling, as championed by TFA is only a small part of human learning.
But schools are in a tough place. They are supposed to teach everyone, from the next Albert Einstein to the kid that will be sweeping the floor. They're supposed to push the latter child farther and faster than they could possibly go while not slowing down the new Einstein. All the while acting as in loco parentis, cop, judge and diaper changer.
For only $29.95 per child.
Faster! Faster! Faster would be better!
To achieve this, it seems like all we need is to show people how to give the computer instructions, but that's teaching people how to put words on the page. We need the equivalent of composition, the skill that allows us to think about how things are computed.
Ugh...if only we had something like this...we could call it "computer science" or something like that. We could even write textbooks about it! But that's just a pipe dream, right?
Ezekiel 23:20
At it's core, coding is problem solving, and relies on logic and reasoning to use the tools you have to solve a problem.
Debugging is thinking through logically what has gone wrong, examining the code, and possibly taking some educated guesses (hypotheses) about what might be the problem and what you might need to fix it (depending on the nature of the problem).
So, sure, teach coding.
But don't think you can do this with people who haven't got a good grasp of problem solving, applying logic and reasoning, formulating a hypothesis, and refining your knowledge based on some experimentation -- which over time grows into a body of knowledge.
Do they still teach any of those in schools?
Lost at C:>. Found at C.
Asking whether coding is 'the new literacy' is a semantic distraction. It's a phrase that tries to build excitement, but distracts from the real question; is coding a skill worth teaching to every youth?
I believe the answer is yes. Through coding, kids can apply and solidify the math they learn in school in a useful way. It also builds a mentality of experimentation that can help with the sciences. It also makes use of writing in general, making english class even more relevant. Real programmers depend on writing well to communicate, which can make a huge difference (see stack overflow questions).
Also, the skill of 'modelling' systems can be practiced and taught through the construction of computer programs. It can be very useful to build reasoning skills that are useful even if the person never codes again. Many of the subjects taught in schools don't offer skills that can be used anywhere else but in that specific subject, and are only taught for the sake of 'forwarding the knowledge of that specific field', whereas coding seems to offer many skills that transfer over into other subjects.
I would not say it's like poetry, any more than I would say it can be taught like a foreign language. Neither is true in the broad sense.
My context comes from a Math/Philosophy education (before we had CS degrees). I am not a programmer for a living, but I have had to write programs for nearly 30 years. My "programming" is not something a user normally interfaces with, my programs have to interface with everything else. I have had little problem writing in Perl, Ruby, C, various "sh" scripts, and started with Fortran and Pascal. The reason I could do this is because I know concepts that sit underneath, I know logic and can break problems down to components. I know how to take knowledge in one subject and use it to my advantage in other subjects. Wisdom came with age and practice, but I needed the base knowledge to start with.
This giant push for STEM will not teach people critical thinking and logic, which you can benefit from in any job. This "push" won't make better programmers, because we are not teaching the core logic.
See, the problem with teaching everyone logic is that it comes at a risk. People in power don't want to be questioned, and a bunch more smart people would cause problems. Hence, why teaching Logic and Rhetoric was removed from public schools as soon as the US Government took over the role of dictating a national policy in the 1930s. Here is a good summary of political opinion on critical thought, and more can be found written by "insiders" on the subject as far back as the founding of the US Department of Education
For those that want to claim that "we are so much smarter today than we were in the 50s" I will point you to this, and scoff. No, we are not anywhere near it. You just fall for the appeal to emotion that gets tossed out all the time to make you feel good about yourself and our pathetic level of public education.
-The wise argue that there are few absolutes, the fool argues that there are no probabilities.
Interestingly, it's not usually 'nerds' who push the idea that software development is something that everyone is even capable of, much less that it's something that most people should try and learn. It generally seems to be people who have grasped the basic idea that "programming means giving the computer instructions" and got excited about it, but never went beyond writing a few loops and some if() statements.
Anyone who's taught programming at a university level will know that even among intelligent students who want to learn, there are a large minority who (while they have many other valuable skills) are just not mentally wired to think in the way needed to develop software. It's a huge waste to try and push these people into doing something that they're not equipped for, instead of focusing on talents that they do have.
Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
I've always thought programming is more like writing POETRY than just being literate
I disagree. You don't hire poets to design a space ship - it may be pretty, but it won't work. You don't hire sci-fi writers either - it may look workable to the masses, but the pesky laws of physics and economics will have their say.
Programming is more like engineering. As in being able to construct something that actually works.
Coding, on the other hand, is more like manufacturing, where you produce something based on what the engineers have come up with.
But too often these days, it's not engineers that came up with it, but bloody poets, and the poor coders have to steal bits and pieces they don't understand from people they have no reason to trust in order to make a workable mess out of it.
Which is fairly meaningless.
Sure, I can check out a medical text from a library ... won't make me a doctor.
The fundamental basis of coding is applying logic, reasoning, problem solving, a lot of trial and error, and then refining it over the years.
Free access is meaningless, unless people are motivated to do it, and have the aptitude for it, and probably have some guidance. Very few people can teach themselves programming from soup to nuts and really grasp all of it -- I've known a few who did, but they were exceptions.
Unless things have changed, programming tends to have a double-tassel distribution -- you get it or you don't. Is this a fault in teaching method or available tools? Or is this a limitation on human brains? I honestly can't say, but I've definitely seen it.
I can tell you not everybody will do well with programming, and some will utterly fail at it -- and how you make it accessible to everybody, I don't know.
There's more grokking involved than most people are willing to admit. There is some aspect of it which actually is art.
Everybody says "programming is just math". Math might have conceived of programming, but I've known brilliant mathematicians who suck at programming. And I've know brilliant coders who suck at math. I don't believe they're one and the same.
I don't think coding is some secret voodoo to be held among the elite. But I don't think everybody is capable of doing it either.
Because it's not really how most people think and do stuff, and because historically, that double tassel is a real thing no matter what people want to believe.
Lost at C:>. Found at C.
This is a man standing too close to the forest to see the trees. He's right, but also completely wrong.
What is being taught is "computational thinking", not coding. Coding is just the conduit.
I've seen the stark difference in my work with primary and junior high kids (Scratch, Python, Javascript), where some kids learn sufficient language to enable them to do a bunch of neat things, but *still can't do it*. They're not making the neural connections between "here's a bunch of capabilities I have at my fingertips", and "here's how I put my capabilities together into a structure of my own creation to achieve my goal".
It's a skill that has application far beyond the keyboard. It's not about learning the syntax of a for-loop, it's about the epiphany that follows. Seeing a kids face when they (all too rarely) get it that they've become wizards and the sky is the limit, is priceless. They are visibly empowered and their view of their relationship with the world around them alters.
*That's* what it's about.
Nope, let's not even justify it to that extent. Coding is a job description, and an increasingly blue collar one like plumber or electrician at that. This whole push by giant corporations to get into schools (!) is simply a means for them to reduce future worker salaries and ensure a steady supply of bright young idiots all fresh'n'ready to be abused and burned out.
End of.
I guess going off your comment, assuming coding was just a blue collar job...
A room full of shitty coders is always going to be worth less than a couple real coders salaries. Either in initial cost or support.
"Well kids, you tried your best, and you failed. The lesson is, never try." -Homer Simpson
Odd. In my experience, the people who insist you need a 'special mind' to code are deeply insecure people with no other skills.
Programming is absurdly simple. Back in the 80's, you couldn't throw a stone without hitting a kid who wrote games for his home micro as a hobby. Hell, the bulk of the users here taught themselves before the age of 10!
You've probably noticed this yourself, but there are a LOT of really stupid professional developers. It doesn't take genius; just interest and a little time.
Required reading for internet skeptics
You could say the same about almost any skilled labour though, good enough is often good enough. I agree with what you're saying but it doesn't make what I'm saying less true.
I'm a long-time developer too, and I don't equate coding with just putting instructions in a machine the same way I don't equate literacy with cursive writing. Anyone who's done 'coding' knows that the main part isn't the syntax of a particular language, an API or an IDE, but a way of setting goals, decomposing functionality and building it at various levels of abstraction. The word 'coding' is a bit of a misnomer and therefore people come up with false dichotomies like coding vs. 'development' or 'software engineering'.
The benefit of teaching programming to everyone isn't that everyone becomes a software developer, the same way that teaching writing to everyone does not make everyone a creative writer, still nobody argues for the eradication of teaching writing. But it gives the chance to all; gives a powerful problem solving tool for the slightly more academic type (e.g. helping their research); it gives a means of communicating complex relations, and people will gravitate to various levels of competence, including the ability to control ever more complicated home automation.
Ah maybe this guy is a _really_ long time developer and equates coding with punching cards... how is that relevant in today's world.
Programming is absurdly simple. Back in the 80's, you couldn't throw a stone without hitting a kid who wrote games for his home micro as a hobby.
There were plenty of kids who knew how to write "10 PRINT FART; 20 GOTO 10" or who typed in listings from magazines, and I agree that programming at that level is probably accessible to most people - but you can't equate that level of programming with modern software development.
You've probably noticed this yourself, but there are a LOT of really stupid professional developers.
I wouldn't phrase it as "really stupid professional developers". There are certainly a lot of incompetent professional developers, and they're part of what's formed my opinion about some people not being mentally equipped for software development. Do you honestly believe that such a proportion of people who make their living developing software are that bad at it purely because they're lazy, apathetic or unmotivated?
For the obligatory car analogy, most people are probably capable of learning to swap to a spare tyre, change the oil, or top up the radiator (learning some simple scripting). Most people are probably not capable of learning to design high-flow intake manifolds or variable valve timing mechanisms (useful commercial software development).
Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
For once, a car analogy that makes sense!
I believe basic "coding" should be a part of general education. The kind you would do in BASIC or a spreadsheet. Everybody has a computer, they could be using them more effectively if they knew how to automate stuff.
In my office, I sometimes get called in to split CSV files of addresses into street and streetnumbers; everybody should be able to do that in any spreadsheet. Nobody should have to call in a professional developer for such tasks.
Heck, just learning how to make complex iTunes and Google searches would be a huge time-saver for most people.
In that respect I agree with TFA's notion that modeling (breaking down a problem) is the core requirement, not some random programming language's syntax.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
Coding isn't even the new grammar. It's the new spelling. The magic lies in the structure of the data and the dance of the algorithms. Programming is writing a novel; coding is learning how to spell.
I do not fail; I succeed at finding out what does not work.
No, it's not. (Thinking is a learned skill, after all.) That sort of egomaniacal nonsense is why so many programming communities are cesspits. Get over yourself.
Most people don't even truly come to understand mathematics, even though we attempt to teach it everywhere. I don't see any good reason to believe they could have the sort of critical thinking skills required to become truly great programmers, or truly outstanding when it comes to anything. I just don't see any evidence that leads to this. I see people who act like mindless robots when it comes to politics, fail to understand mathematics, believe in magical sky daddies for which there is no evidence, and do all sorts of other tremendously illogical and irrational things despite the education we attempt to give them; that makes me conclude that most people are hopeless.
I see no evidence that they'd be geniuses or very smart if they just worked harder, so at the moment, I simply lack a belief in that being true.
Is it because you're actually insecure and want to believe that those you admire for their talent are "just lucky"? Is it that you'd rather believe that it's not your fault that you're not as accomplished as you'd like to be? Isn't it far more empowering to accept that you're skilled because you put in effort and that you can continue to improve?
Do you believe what you do because you're frustrated that you're not as good as you'd like to be, so you fool yourself into believing that anyone can become truly great through hard work?
If that doesn't sound accurate, it probably isn't. Trying to psychoanalyze other people over the Internet just makes you look like an idiot in my eyes. It isn't even relevant to the conversation.
Get used to being increasingly confused by a world you increasingly will never understand.
Been there, done that. I used to cry myself to sleep and have bizarre dreams because I was wasting my time learning Linux and Internet protocols and running an ISP while my professional peers were out there making six figure salaries exploring the awesome potential of Microsoft Dot Net and making embedded Corporate Widgets that harnessed the power of ten thousand suns, to deliver sleek desktop solutions to a world desperate for answers.
"But it's all gibberish!" I would shout at the angry skies as gale force winds whipped my tattered robe. "It is like living inside a Dilbert cartoon! The buzzwords come in fast and thick but to me it is just Microsoft-centric Vertical Market software of no specific kind, and your market is people who know they need software automation but don't know why!"
"WHAT WOULD YOU KNOW?!?" thundered the sky as a lightning bolt rent the knoll upon which I was standing, sending forth rivers of money that would always be just out of reach. "You are merely a PLUMBER of the Information age. We are the CODERS."
And the storm would part and a rainbow spanned the sky. Bluebirds would appear to help bind the perfect hair of Software Developers into blue and pink ribbons --- and we --- the ones who had bound the Internet together with sticky-tape and protocols and C would for ever gather around their feet like pigeons waiting for crumbs. But yet, at least there was a place for us.
Until the dot com bubbles burst and they migrated outward with their pretty resumes and took over our Network and Sysadmin jobs. And the telecoms swallowed all the regional ISPs to replace them with centralized warrens of cubicles.
Today I am attending a Special Needs class trying to learn Microsoft Dot Net. So far, every app I try to make always turns out to be an ashtray.
<blink>down the rabbit hole</blink>
I would be able to do that with cut, sed, awk, QBASIC, C or whatever, but I don't know how to do it in a spreadsheet.
Spot on! This idea is obviously pushed by giant corporations that wish to have access to an unlimited pool of low-cost labour and they can manage with the good enough thing by putting in place development process controls at all levels. This idea is not new, what is new is they are trying to make it comes to life. In the late 80's, the theory of development process control was already revolving around replaceable and good enough developers rather than highly skilled developers you cannot afford to lose. The good enough guys were in fact a guarantee of stability in your development process.
Achille Talon
Hop!
Programming is absurdly simple.
Yeah.
All You Have To Do Is...
And I bet when you puncture an artery opening one of those "theft-proof" plastic packages for a product you just bought you run out and look for the nearest Boy Scout. Because bandaging up a cut is absurdly simple.
All my life, the perennial story has been that kids are stupid. American kids aren't measuring up to any other country. We're always last in lists of how educated people are. Regardless of how much we spend. The education industry perpetuates this perennial stupidity to get more money. Kids will NEVER be smart. What's the most difficult thing anyone can ever try to do? Write working code that adequately solves a problem. Let's teach it to kids! So they'll be stupid. Kids will NEVER measure up with coding.
Your argument is akin to suggesting that we shouldn't teach reading and writing because most kids will never be able to write an internationally best-selling trilogy of crime novels. There are many day-to-day tasks that can be improved with a little bit of coding knowledge. If every kid learned a modest amount of coding in school, the curse of the corporate world, Excel, would finally be redundant. Spreadsheets have survived this long because they allow people to do data manipulation that they wouldn't otherwise be able to do; but in an inefficient way that also ends up producing unmaintainable code. Yes, Excel is a programming language, and people spend a heck of a lot of time trying to work out how to program in it. Let's put that time into something more useful.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
Most programmers make huge amounts of technical debt and don't know it. They start off being "good enough", but after some time all of that debt starts to accumulate. At some point in the future, you have large amounts of people dedicated to making bandaid fixes to fundamental flaws in design. Design, what's that?
What starts off as "good enough" quickly turns into negative value. After some time, the company is being held up by a few decent programmers and the rest are constantly creating messes for those few to clean up. Like an old car, you find yourself spending more time fixing problems than adding features or otherwise improving the system.
Growing up with ranchers, there was always something that needed to be fixed/southern engineered. Perhaps a deer stuck a horn through the high-flow intake manifold on your front end loader or it isn't quite managing the amount of dust in the air, and all you needed to get by was to weld cover and perhaps reinforce the hood with some diamond plate steel so that future deer might not be able to wreck your engine.
Similarly, I feel like there's a good deal of coding that falls in between changing the oil and manifold design.
Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
Odd. In my experience, the people who insist you need a 'special mind' to code are deeply insecure people with no other skills.
eh. I think one does, but not in the way many people mean. I think "young" or "not already messed up" is the specialness required. An alternative interpretation is that "special" means "attuned to the way most teaching is done". If of course you only do teaching in that way then it tautologically does in fact require a special mind.
At school (age 13), my school rather unusually had programming classes in BBC Basic. Most people were crap but almost everyone was able to get a basic text based adventure up and running. In other words, more or less everyone was able to write some really simple code of their own.
Fast forward too many years to when I was teaching programming to undergrads.
Some of the students, who were orders of magnitude smarter that the people who managed basic programming in my school by almost any way of thinking really, really, REALLY struggled. What seemed to be the problem was that any high level language requires an awful lot on trust. Some of those sutdents responded much better to ASM programming, especially given a databook which documented every aspect of the microcontroller in incredible detail. Once that was sorted, explaining a higher level language in terms of how it would translate into ASM seemed to be very helpful.
SJW n. One who posts facts.
Scools and education are mighty bizarre places.
There's weird emphasis on useful things except where there isn't.
No one pretends that literary criticism is a useful skill, or that reading books is anything other than entertainment. Yet it is taught. Likewise, History is only needed if you're going to teach history, but it's taught because knowing history is part of being a well rounded person.
Apparently things that can be technical have to be useful.
Personally I think programming should be taught in schools along with maths, English, history, "building stuff" (DT in the UK), sciences, foreign languages and etc.
Not becauese is useful.
It should be taught, like the other subjects because it is interesting and can teach one to think in new ways that other subjects don't teach---just like all the other subjects[*]. Not everyone will like it and some will and most won't go on to use it. But writing is taught even though most people woll never go on to write a book.
[*] It's arguable that the other subjects do that, but that has more to do with how badly the subjects are taught than anything inherent to them.
SJW n. One who posts facts.
I want people to understand loops. Loops that happen a number of times, loops that run at least once and end on a condition, loops that are entered on a condition and may never run. I want people to get an understanding of how fast computers are at calculating things. I want people to understand functions, datatypes and recursion. These are all completely academic topics, nothing harder than long division. There is no reason not to teach this stuff. You can do it all with block based languages (scratch/blockly) or with various text languages. That doesn't matter. It is the fundamental concepts that everyone needs to be introduced to, just like everyone gets to do a bit of algebra and a bit of chemistry and a bit of geography.
(Talking about the USA) We'll know then coding is a general purpose skill. Plenty of people in their 50s now have been exposed to coding in school (including myself). Two of the 12 recent Presidents have been engineers, so its probably just a matter of time. It would be interesting to poll Congress, 535 40-somethings to 70-somethings, of how many of them could right some sort of program.
I spent a good bit of time in the woods building tree houses. Building a tree house followed a similar pattern each time. Find old tree houses in the woods. Scavenge material, especially the long boards for the floor/frame. Find or cut new material like saplings to fill in the gaps.
Then I got a TRS-80 Color Edition could hook to a TV. Suddenly I could "conjure up" raw material with code. If I needed a board I "coded" one. I could build anything I could imagine. I had indeed "become a wizard" and the world did indeed change.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
Sigh, forcing people to "learn to code" is just going to create legions of substandard programmers.
Alternately (and somewhat more likely), it will create a legion of future business people with software needs who know how to articulate those needs in a logical way when trying to write a specification.
Yaz