I disagree. It is great if more people learn it, but it is nothing like literacy. The ability to read and write is something that can help you in every aspect of life, which is why a lot of people pick it up (they use it over and over again). Keep in mind even with this being the case functional literacy is often quite low for many people and true illiteracy is still an issue. Even math past basic arithmetic isn't well-developed, people simply don't use it, despite required schooling.
Are computers everywhere and do people use them every day? Yes. But mechanical ability isn't the new literacy and just as many people interact with engines on a daily basis and would be helped by it in daily life. I think it is much more useful to think of programming like woodworking, leatherworking, sewing, soldering, etc. Very useful skills which can improve your life, but not at all necessary, and "only a few people only need to be really good at it" as you stated.
I think the development of programming literacy will mirror the development of literacy.
Literacy itself used to be a niche skill, learned by a select few who made an earning from it (scribes, criers), while the majority of craftsman got along just fine without it. Then the printing press came along, and it brought a proliferation of readable material, and literacy became useful. Not essential, but useful. People could distribute political literature, or send messages cheaply. Literacy bloomed. And as literacy increased, and became expected, it became essential.
We're at the beginning stage of that now. Somewhere around (probably before) the printing press. Programming literacy is becoming useful, but not yet essential.
IMO it's somewhere in between. Not as important as writing and reading (after all, you wouldn't be able to code without that) but there are few opportunities in people's jobs to use leatherworking, soldering, etc.
I have a lot of friends who work in offices surrounded by Excel spreadsheets all day. I know for a fact they would be more productive if they knew how to use it better, write macros, VBA... or heaven forbid, use a database instead. I think this is going to happen more often in the future, too.
I would be satisfied if people were simply able to identify tasks that can and should be automated. There are many, many, many people / organizations that have weekly or monthly manual tasks that could be automated if the individual or organization could recognize it - and hire someone to address the automation.
Stupid alert: I briefly worked at a startup that did push to production by remote desktop to the server and manually restarting the IIS server after copying things into place. They didn't automate it - because "it's the way we always did it." (Yes, they're out of business now.)
You've probably seen http://www.xkcd.com/1205/ -- if you're doing it monthly and it takes less time than an hour, you can't spend more than three work days trying to automate it, or you're wasting more time than you're saving.
Meh. Automation in the software industry isn't just about saving a certain amount of wall-clock time: that's the perspective of a bean-counter without broader perspective. Having highly skilled people frequently spend time on boring drudgery has other costs. The cost of the interruption, for instance, or the annoyance factor alone...
Automation also has the potential to make a task less error-prone and its output more consistent. A botched or forgotten manual task can be difficult to clean up after, so there's risk management too. For instance: in one incident, a coworker at a former employer accidentally ran the "send thousands of people email about how much we're about to pay them in a few days" script on input from the wrong year because January had just ended and he had to input a value containing the last day of the month (e.g. 2013-01-31) by hand.
Way to completely miss the point. The point isn't to try and avoid automating things. But to realize that you can't just dream up benefits in complete isolation to the costs.
That is, if the benefit is worth the costs.... do so. Otherwise, reconsider.
And few things make as glorious as a mistake as an automated job going out of control. There is a reason one of the most important questions you should ask on any automated task is "how do I make it stop?"
I agree with the original poster. Until now, when coding intersects with other fields, the approach has been for someone skilled in coding to come up-to-speed on whatever field needs automation. In the course of my career, I've had to learn to basically be an appraiser, employee benefits broker, pharmacist, dentist and auto mechanic. And while I learned a lot about these fields, there's no way that I can know these fields as in-depth as someone trained to do that actual work. This pattern is unsustainable and leads to software that is superficial and never truly meets the needs of the domain. But as we create more and more abstractions between programmers and the underlying hardware, coding will become more accessible to people with less background in software development and the desired balance between domain knowledge and programming knowledge will shift away from coding ability.
There will always be a need for people who understand computer science, but those engineers will be like compiler engineers or hardware engineers are today...enabling a much larger group of programmers to produce the software that provides value to users. And as we're able to provide improved layers of abstraction to make software development easier, we'll see computing become more accessible to more programmers who will build software with a much richer understanding of the domain.
So I'm torn about initiatives like this. I see coding as the new literacy...it will be a skill required by almost every professional who is an expert in his or her domain. But they won't be coding in today's languages and coding will be significantly easier than it is today. So we need to find a way to teach children to develop using tomorrow's tools today. And that means extracting the part of programming in today's languages that is intrinsic to programming while doing our best to avoid the part of coding that is just pain inflicted by today's limited abstractions. That separation may be difficult (or even impossible) to achieve, but that doesn't mean we should try. Because anyone who doesn't learn how to instruct a computer to accomplish tasks is going to be automated out of a job (https://www.youtube.com/watch?v=7Pq-S557XQU)
> I see coding as the new literacy...it will be a skill required by almost every professional who is an expert in his or her domain.
That is an extremely unusual definition of "literacy."
"Coding is the new literacy" implies that coding will be necessary for anyone who wants to interact with modern life, not just for experts. Imagine trying to use the freeway system if you could not actually read streetsigns, for example. i.e. if you were illiterate.
> implies that coding will be necessary for anyone who wants to interact with modern life, not just for experts.
That's the whole point. Computers and robots are creating a world in which there really isn't room for anyone who isn't an expert. We've already automated the low-hanging fruit...we've got a fraction of the manufacturing jobs because computers and machines can do that work faster, cheaper and more effectively. Google and such are working on less low-hanging fruit (people who drive automobiles for a living, lawyers...there's a bunch of examples in that youtube clip). That bar for offering utility beyond what can be automated is steadily rising.
If you're not an expert in something, you're going to be pretty useless in the world we're creating.
There are a lot of tools out there like Excel that become significantly more useful with a little programming skill. World of Warcraft is a perfect example where the ability to create even simple macros is useful for a wide swath of people. Granted it's not nearly as important as reading, but it's probably on par with writing well. A core skill that's useful in most areas even if it's irrelevant professionally it's still useful at a personal level.
I just finished the book "Mindstorms: Children, Computers, And Powerful Ideas" by Seymour Papert (creator of Logo) which would be a give you a good perspective on how computer programming literacy could be used to help people learn (about more than just computer programming). It is a great book that I'd recommend everyone read.
Are computers everywhere and do people use them every day? Yes. But mechanical ability isn't the new literacy and just as many people interact with engines on a daily basis and would be helped by it in daily life. I think it is much more useful to think of programming like woodworking, leatherworking, sewing, soldering, etc. Very useful skills which can improve your life, but not at all necessary, and "only a few people only need to be really good at it" as you stated.