While his definition of 'programming' is a bit broad (he lumps in 'configuring things via menus' with writing code) and his vision for the application of programming skills in the future shows a lack of understanding of what code is useful for, I thought his analogy to medieval scribes was excellent.
Also, this is totally false (and a cop out, people can learn if they want to): "Most of the tools (and even the concept of programming) were developed long after these teachers were born or schooled."
Of course, I agree with his overall thesis, that coding will become as vital to expressing yourself as writing is today, and that is why I posted it.
I fully agree with the premise, if not with the details, programming to me in the broadest sense of the word consists of arranging elements in order to create new functionality.
Configuring something is not programming by that standard, but arranging functional blocks in an IVR system and linking them is. (even if that's a very limited environment).
I think a computer works for mentality the way a powertool works for a tradesman, being skilled in its use allows you to do more work or different work than if you were working 'unaided'.
The ability to use such tools is indeed almost as essential as the skill of reading and writing, and there is a link between them in the sense that for almost any activity that you could call programming you need to be able to read and write.
Schools are slowly catching on to how essential this is, and even though the various 'computer classes' still are not much more than glorified 'how to use excel' courses there is a shift in the direction of more universally applicable knowledge.
> there is a link between them in the sense that for almost any activity that you could call programming you need to be able to read and write.
I couldn't agree more. With that in mind, his last paragraph really bothered me:
"Thirty years from now, will the United States be more competitive with a population that can read English at a tenth-grade level or with a population excellent at making the complex machines of that era do their bidding? The two options may be mutually exclusive..."
All the best programmers I know are also excellent writers. I don't know if I'd reach for causation there, but the correlation is impressive.
Yeah -- if a native English-speaking adult hasn't acquired a grade ten level of literacy (understanding rules of punctuation, grammar, spelling, composition, semantics, cogent argument), what chance do they have at reading/writing code?
Such a situation would basically be (is?) an admission that the educational/social system has failed to help the individual develop mentally [!] to the level which is probably possible for most people. Which is something that I find sad.
I think you could easily make the case that in order to be able to program you have to be able to verbalize your thoughts to the point that they are unambiguous and that takes much more effort if you are not able to present a coherent argument in the first place. Writing prepares you like nothing else for that because it 'freezes' your thoughts to the point where you can analyze them.
I'm surprised the article didn't say more about the phenomenon of businesses using gargantuan Excel spreadsheets held together with a Escher-like tangle of macros and formulas. As much as the idea makes "real" programmers shudder, it's one of the best examples of otherwise not-particularly-technical people doing some manner of programming to automate their day-to-day tasks.
I'm always surprised (but I shouldn't be) by how much effort people go through to keep their house of cards Excel spreadsheet stable and working all while being under the impression that said spreadsheet is lessening the amount of work they do. Working really hard to fix a gargantuan Excel spreadsheets held together with a Escher-like tangle of macros and formulas is not what I call automation.
You'd have be stupid to disagree with that. But there's a difference between "most efficient" and "efficient at all". I've seen Excel spreadsheets used to track orders, at a rate of 100 or so a day. Then it gets too big so new spreadsheet files are used and the filenames are dated (using inconsistent date formats, making it difficult to find a spreadsheet for a specific date range, and none of the regular users thought to rename the files). But finding historical orders is a nightmare because the order numbers are not based on dates. And two people need to edit the same spreadsheet at the same time, or someone gets the bright idea that they'll be more efficient if multiple people can enter the orders, so someone makes a copy of the current master, and the changes never get merged in. So there's duplicated data or data for overlapping date ranges in multiple files and no authority on which data is valid, it needs to be looked at every time to find out which one is the "real" version. But even that's hard because columns have been added and removed and reordered on all of them. And most of these issues are not even a matter of "using the right tool for the job", even though the root problem is just that; they are caused by not spending even a half-hour to think about things before doing them, and not having enough experience to say "boy, this is a real headache to deal with". So inefficiencies get piled on top of inefficiencies, all in the name of automation. And the few clueful people who are forced to use the system end up with a bad impression of computers.
If an ostensibly talented developer creates a system like that, they can remove "ostensibly talented" from their title.
And it seems like a prime example of where a more widespread programming literacy would be beneficial. You don't need any sort of deep CS knowledge to be able to use the superior tools out there, just a foundational literacy.
It's surprising how some non-programmers cannot wrap their heads around source control. I work in a high-regulated environment, so we produce reams of documentation for a project, and various non-technical members of the team must be able to use our bug tracking system (even for so-called spec defects) and version control.
My current project's manager (the "product manager," who isn't necessarily technical) uses source control, but checks in/adds a new file for each revision. We've tried to explain that's what version control does but he just doesn't get it.
I prefer the somewhat more general term procedural literacy to programming literacy. I don't think the main issue is knowledge of particular programming constructs, so much as a general ability to think in terms of, "how would I conceptualize this problem so that I could make a computer do it?" It's things like thinking in terms of repetition, or values or control flow or composition, or even just sequences that I think are the fundamental literacy elements. I think someone who could reliably give detailed instructions in English, with nothing left vague / up to "common sense", would have the basics of the kind of literacy at issue, even if they had never programmed a computer.
This is oh so very true. I had a friend that wanted to get some music off her iPhone.
So, I start to ask some questions - does she still want to sync the iPhone to the old computer which had the original copies of the music on it. Did she need to be able to sync to a second computer. Was it just the music that she needed, or was it all of her data (emails, contacts, calendar etc). Her response? "You know what I mean, just tell me how to do it!"
Errrr. No, I don't know what you mean, but apparently you don't have the skillset to think through ideas in such detail, so I'll take a best guess at what you want.
As an interesting point to note, in the end maybe she was right, because I was able to guess what she wanted without getting answers to all of my questions. The translation of nebulous user needs into something that a computer can understand is the quintessential act of a computer programmer, and I don't think that this capability is natural/easy/possible for everyone. It takes a certain type of mind to be able to do this.
You can very easily live a meaningful, functional (pun intended), and literate life without ever getting into doing system configurations or writing HTML.
If you want to get your word out and communicate, you can do that as long as you can type. Having someone to fix your computer for you so that you can blog isn't illiteracy, nor learning to sign up to Gmail isn't comparable to learning to read and write. Or something else like that: the author was rather vague as for the technical skills he deemed to be required for literate modern life. But HTML "coding" sure as hell isn't one of them!
Being a geek and being literate in "geek" language and thinking is a different thing from living a life. You might as well say that because cars are so ubiquitous and in countries with certain infrastructure they're almost mandatory, people need to know how they work and to fix them in order to be "literate", so that they can drive out and communicate with people instead of relying on more knowledgeable people to fix them for them.
The argument goes that understanding how programming works, (not any particular tool set per se. but more the foundation necessary to learn one) is becoming the equivalent of reading and writing. 300 years ago, you could easily perform most jobs without these skills, but recently they became absolutely necessary. The point is that "living a life" is a dynamic notion, and that perhaps in the future, programming skills would become requisite knowledge.
"If you want to get your word out and communicate, you can do that as long as you can type. Having someone to fix your computer for you so that you can blog isn't illiteracy, nor learning to sign up to Gmail isn't comparable to learning to read and write."
Likewise, you could have very good ideas to share with the world, and it shouldn't be impediment to have to dictate all of them to a scribe.
I'm a little surprised by the positive tone of the comments here thus far. This article reads like a futurist article from 100 years ago—it's a compelling fantasy, but it's clear that technology is still largely in the realm of magic to the author.
You simply can not conflate technological literacy with programming. If you consider basic application configuration and usage to programming then the thesis makes sense, but that also guts it of any significance—of course new generations will naturally learn to use new technology better than their predecessors.
The reality is that programming itself is becoming more complex and varied as technology progresses. So while the average person will much more computer "savvy", programmers will become more and more specialized, and the needs of the masses will be met by an ever widening range of devices and applications. The majority of programming will be the realm of geeks at least until the advent of true AI, at which point I'm afraid our fun in the sun may be over.
I agree that the author is a little confused, seeming to think that using media creation/editing tools involves programming. He calls Java and C++ "logical" programming languages, etc. I also agree with you that programmers will continue to specialize. However, I am a bit mystified by your reference to "true AI" and why we no longer get to have our fun.
Because once an AI surpasses human intellect, an increasing number of programming jobs will be more effectively performed by machine. At some point AI will do to the programming industry what automation did the manufacturing industry.
And, what is the difference between programming and scripting? I don't see any fundamental one.
Or, if you see programming and scripting as the two ends of a spectrum, how would you describe such a spectrum, and where would you put the limit?
I personally do see a spectrum: programming being for elites, and scripting being for the newbies. But as programming literacy spreads, what you would call "programming" now is more and more likely to become "scripting". This is not really satisfactory. I would prefer a more timeless description.
The key flaw in the article is buried in a parenthetical: the author provides no compelling argument to support his contention that programming will become easier. Programming anything sophisticated by plugging pre-built components into each other with little or no understanding of their innards has been a pipe dream for years.
""Me?" you say. "Why would I have such a need?" But this possibility is not far-fetched at all. For instance, when Howard Dean ran for U.S. president"
Ok, what if you are not running for U.S. president?
I also would like to teach programming to people, because I enjoy it. But lately I have thinking about the people working at the checkout in my local supermarket. While obviously software can improve supermarkets, I am not sure what software need they could program for themselves in their spare time?
Also, I have come to think that installing apps on an iPhone is actually also something like programming. By installing and using Google Maps, you have essentially reprogrammed an aspect your daily life.
"tomorrow's highly literate person may prefer to change, by programming, whatever story or other media he or she is interacting with to suit individual preferences, and might then, with a little more programming, distribute those changes to the world."
The author apparently does not know about Greasemonkey or blogs or RSS feeds :)
Digital literacy (how to use technology/computers) maybe, programming literacy I am more sceptical.
The use of computers and basic tools is more vital than programming for the average person. Most employers require it, soon it will be necessary to buy basic services (plane ticket, concert ticket).
36 comments
[ 4.0 ms ] story [ 74.2 ms ] threadAlso, this is totally false (and a cop out, people can learn if they want to): "Most of the tools (and even the concept of programming) were developed long after these teachers were born or schooled."
Of course, I agree with his overall thesis, that coding will become as vital to expressing yourself as writing is today, and that is why I posted it.
Configuring something is not programming by that standard, but arranging functional blocks in an IVR system and linking them is. (even if that's a very limited environment).
I think a computer works for mentality the way a powertool works for a tradesman, being skilled in its use allows you to do more work or different work than if you were working 'unaided'.
The ability to use such tools is indeed almost as essential as the skill of reading and writing, and there is a link between them in the sense that for almost any activity that you could call programming you need to be able to read and write.
Schools are slowly catching on to how essential this is, and even though the various 'computer classes' still are not much more than glorified 'how to use excel' courses there is a shift in the direction of more universally applicable knowledge.
I couldn't agree more. With that in mind, his last paragraph really bothered me:
"Thirty years from now, will the United States be more competitive with a population that can read English at a tenth-grade level or with a population excellent at making the complex machines of that era do their bidding? The two options may be mutually exclusive..."
All the best programmers I know are also excellent writers. I don't know if I'd reach for causation there, but the correlation is impressive.
Such a situation would basically be (is?) an admission that the educational/social system has failed to help the individual develop mentally [!] to the level which is probably possible for most people. Which is something that I find sad.
The comments seem to suffer from light "facebook login" syndrome.
If an ostensibly talented developer creates a system like that, they can remove "ostensibly talented" from their title.
My current project's manager (the "product manager," who isn't necessarily technical) uses source control, but checks in/adds a new file for each revision. We've tried to explain that's what version control does but he just doesn't get it.
EDIT: I just realized after I wrote this that Sharepoint has some of this functionality (versioning) but imo is a bear to use.
My group (R&D) has been using a home-grown requirements management system for a few small projects, and ideally we'd move to that for our specs.
More: http://scholar.google.com/scholar?hl=en&q=%22procedural+...
So, I start to ask some questions - does she still want to sync the iPhone to the old computer which had the original copies of the music on it. Did she need to be able to sync to a second computer. Was it just the music that she needed, or was it all of her data (emails, contacts, calendar etc). Her response? "You know what I mean, just tell me how to do it!"
Errrr. No, I don't know what you mean, but apparently you don't have the skillset to think through ideas in such detail, so I'll take a best guess at what you want.
As an interesting point to note, in the end maybe she was right, because I was able to guess what she wanted without getting answers to all of my questions. The translation of nebulous user needs into something that a computer can understand is the quintessential act of a computer programmer, and I don't think that this capability is natural/easy/possible for everyone. It takes a certain type of mind to be able to do this.
If you want to get your word out and communicate, you can do that as long as you can type. Having someone to fix your computer for you so that you can blog isn't illiteracy, nor learning to sign up to Gmail isn't comparable to learning to read and write. Or something else like that: the author was rather vague as for the technical skills he deemed to be required for literate modern life. But HTML "coding" sure as hell isn't one of them!
Being a geek and being literate in "geek" language and thinking is a different thing from living a life. You might as well say that because cars are so ubiquitous and in countries with certain infrastructure they're almost mandatory, people need to know how they work and to fix them in order to be "literate", so that they can drive out and communicate with people instead of relying on more knowledgeable people to fix them for them.
Likewise, you could have very good ideas to share with the world, and it shouldn't be impediment to have to dictate all of them to a scribe.
You simply can not conflate technological literacy with programming. If you consider basic application configuration and usage to programming then the thesis makes sense, but that also guts it of any significance—of course new generations will naturally learn to use new technology better than their predecessors.
The reality is that programming itself is becoming more complex and varied as technology progresses. So while the average person will much more computer "savvy", programmers will become more and more specialized, and the needs of the masses will be met by an ever widening range of devices and applications. The majority of programming will be the realm of geeks at least until the advent of true AI, at which point I'm afraid our fun in the sun may be over.
I know that the Digital Animation classes at my school involve (ActionScript) programming, for one anecdote.
Or, if you see programming and scripting as the two ends of a spectrum, how would you describe such a spectrum, and where would you put the limit?
I personally do see a spectrum: programming being for elites, and scripting being for the newbies. But as programming literacy spreads, what you would call "programming" now is more and more likely to become "scripting". This is not really satisfactory. I would prefer a more timeless description.
Ok, what if you are not running for U.S. president?
I also would like to teach programming to people, because I enjoy it. But lately I have thinking about the people working at the checkout in my local supermarket. While obviously software can improve supermarkets, I am not sure what software need they could program for themselves in their spare time?
Also, I have come to think that installing apps on an iPhone is actually also something like programming. By installing and using Google Maps, you have essentially reprogrammed an aspect your daily life.
The author apparently does not know about Greasemonkey or blogs or RSS feeds :)