Who wants to place bets on when country development metrics include "population % who know how to code" ... ? I'll wager no later than 2030 :)
Who wants to place bets on when country development metrics include "population % who know how to code" ... ? I'll wager no later than 2030 :)
Having everyone knowing how to code is the opposite of specialisation. It's inefficient and pointless. If a certain profession needs a piece of software, it's much more efficient for specialist developers to consult with domain experts, write that software, and sell it into the industry. Having every (for example) doctor being able to code adds negligible value, and I would argue the opportunity cost is awful. If my doctor has a choice to become a very mediocre coder or a better doctor, I would hope they choose the latter.
As for the comparison to literacy, there's simply no comparison. Illiterate societies are unable to progress past agrarian economies because illiteracy precludes specialisation, prevents the dissemination of knowledge, and makes it almost impossible to learn new things except by imitation or direct instruction. Literacy is a necessary skill in order to do much beyond dirt farming. Illiterate people can't, for example, even follow a moderately complex checklist. In contrast, I see no negative impact on society if most people can't code.
I don't spend my time studying anatomy; my micro-surgeon shouldn't spend his time studying coding, and I don't see how it would do anything but make him less effective if he did.
A society of part-time coders would do nothing but produce a lot of badly-written toy programs. What's the point?
Maybe you are embarassed by the content of github, but many of us feel it is changing the word for the better.
An Excel jockey writing macros -> better spreadsheets.
A writer who can analyze and restructure their story, wihout laboriously poring and cutting and pasting -> better stories.
There was a time when 'writing' was a specialist activity best left to professionals. Imagine if that never changed?
We don't need everyone to be an anatomist, but certainly we should all know enough about our own bodies to feed and exercise them properly. I hope we never live in a world where we only eat what The Nutritionist hands to us, and we only move our bodies in the way The Physiologist instructs us.
How is this related to knowing how to code?
If you are an 'excel jockey', then your job involves coding. Of course knowing how to code to some degree will make you better. I don't see that as a good example. You should have used one of the many professions that currently involve no coding at all as an example.
There was also a time when civil engineering was a specialist activity best left to professionals, and it still is. You seem to believe that coding is akin to literacy. I believe it is not, and have provided some reasons in my previous post.
Okay, I'll bite.
My dad is an ophthalmologist in Turkey. He runs his own private practice. When he opened the clinic in the early 90s, he quickly realized that keeping track of patient records in paper format was not efficient. So he taught himself Microsoft Access (which came out in 1992!) and wrote his own patient record management software, which greatly increased his productivity and therefore income/leisure time.
Fast-forward to 2011. I was organizing an international conference and needed to send out some email blasts. The problem was, all the email addresses I needed were on a several hundred page PDF document with no clear format. So I had a choice: I could spend days manually copy-pasting and cleaning stuff up, or I could try to automate it. I ended up writing a Ruby script that grabbed the embedded text and pattern-matched email addresses and spat them out onto a text file. Still not perfect (my regex was rudimentary) but it got the job done a lot faster. Learning basic Ruby took me several hours, and I ran into some (silly) issues [1], but that's still better than the several days I would have spent doing the task manually.
You may be thinking, "well, we have specialists for that sort of thing today." Sure. But just like there are many rural areas in the US where it doesn't make economic sense for ISPs to lay out fiber, there are many personal tasks and errands where it doesn't make sense for professional developers to write software for. So there is a lot to be said for the need for individual empowerment through programming.
[1]http://stackoverflow.com/questions/6566884/rubys-file-open-g...
If you have to learn to code to write some software, and then write it yourself, you will generally be less efficient at it than contracting someone else to do so. Furthermore, the contractor has a chance of potentially reselling the software to other clients (thus increasing efficiency even more), which you do not.
If it was cheaper for your father to write his own software in this case, then to me this indicates one of several things: 1. That he had already learned to code for some other reason (possibly a hobby). 2. That there was no opportunity cost because his business was operating way below capacity. If this is the case, his time is best spent fixing that problem first. 3. That there is an under-developed market for software services.
Your fathers' example also ignores some potential problems. A novice rolling their own DB code is likely to make novice mistakes, increasing the chance of (expensive) data loss or corruption.
I remain unconvinced that for a busy non-software specialist (such as a physical therapist, a welder, and many other professions) writing any software more complicated than a spreadsheet formula or macro is worth the opportunity cost. That doesn't mean that these people will never configure existing software, or write small scripts in DSLs, but I don't consider that 'knowing how to code' any more than I consider being able to remove one of my own teeth 'knowing how to dentist'.
1. Basic knowledge of programming gives you better odds of successfully interacting with specialists.
2. Specialists are not always available.
3. Specialists are not always affordable.
Just because there's somebody who's out there that can do it better doesn't mean that's the one true answer--I can damn well try to stop the bleeding before I seek a trauma doctor, to use an example.In day-to-day life, learning just enough Ruby or Python or Perl to scratch an itch or Access to make a (terrible) DB is quite acceptable.
However, that IMO does not mean that it's not good for essentially everyone to have at least some basic knowledge of programming and CS basics. For one, communicating your needs to a professional is also pretty costly, especially so when the task at hand also needs specialized knowledge from your own field (be it that communicating the requirements is a lot of work upfront or that the project in the first (few) round(s) doesn't end up doing what you expected it to do - not exactly unheard of in the software world), and secondly, even if the problem that you need to solve is too difficult for you to solve with your basic knowledge, that basic knowledge might still be very helpful in communicating the problem to the professional, as you might be able to see what kind of information the professional needs in order to help you. Plus, it might allow you to better select a good professional - the risk of hiring someone who isn't actually all that much of a professional is pretty real, after all, so adding to the costs of not learning and doing it yourself.
Writing = thoughts put on paper. When writing was a "specialist" activity it was due mostly to technical difficulties rather than people needing a whole new breed of skills. The anatomist analogy is a good one. But if we extend it to IT, it doesn't mean everybody should be able to program. Rather, everybody should know basic computer operation and how to use the most popular programs.
I think all people should learn how to make computer do their bidding at a rate more than one click at a time.
Penpals don't mail source code back and forth to each other.
Thinking knowing to code is as important as literacy is just another version of people thinking their specific profession is super-important because it's what they spend their time doing. I imagine some especially pompous auto mechanics think knowing the internals of a car is as important as reading and writing. (Though, I imagine there are much fewer pompous auto mechanics than pompous hackers.)
"Having everyone knowing how to read and write is the opposite of specialisation. It's inefficient and pointless. If a certain profession needs a document, it's much more efficient for specialist scribes to consult with domain experts, write that document, and sell it into the industry. Having every (for example) doctor being able to read and write adds negligible value, and I would argue the opportunity cost is awful. If my doctor has a choice to become a very mediocre writer or a better doctor, I would hope they choose the latter.
A society of part-time readers and writers would do nothing but produce a lot of badly-written texts. What's the point?"
The comparison with literacy is incredibly apt. Even though very few of us moderns are professional writers, we all benefit by knowing the basic abstractions of letters and words. In the future, everyone will benefit from knowing basics of computation. Probably in ways we can't imagine now, just as an ancient Egyptian scribe could not have conceived of "commoners" writing YouTube comments or texting "whatup u?" to a friend.
Your argument could just as easily apply to electrical engineering. The whole world runs on electricity, how is it that no one knows Maxwell's equations! Everyone should obtain basic proficiency in applying electromagnetic theory: it will help the world in ways we can't imagine now.
Over and over again on this board I see people underestimating how demonstrably difficult the concepts are for many people. As my evidence, I again cite the dropout rate of CS1 classes.
How many high school students change the world by studying the periodic table or learning trigonometry?
By your criteria, how can we justify teaching any subject?
That's not necessarily true.
On some panel about python, one of the participants who teaches python to science students said that after their relatively short amount of training, scientists can do useful stuff with python and that resonated well within the panel.
I still maintain there are many professions where coding is almost completely irrelevant. Some scientists use general purpose programming languages as part of their work. No (for example) physical therapist does this as part of their work.
Many people on this board also seem to underestimate just how difficult it can be to learn to code for many people who have skills in other areas. People who are studying science are probably the type who are good at coding. If you want to see how difficult coding is for many, just look at the drop-out rates in Computer Science 1.
The general argument that I am responding to is that coding is comparable to literacy. I argue that both in need and applicability, it simply is not. If you are illiterate, the number one thing you can generally do to improve your life is learn to read. I argue that unlike literacy, there are many professions where learning how to code provides less benefit than spending that effort learning or doing something else.
> If you are illiterate, the number one thing you can generally do to improve your life is learn to read.
I agree that this certainly holds true today, since our culture now uses reading through and through. But in the history of our species, literacy is the weird exception, not the norm.
For your argument to hold, it needs to have been true when only, say, 3% of the population could read and write (basically, a proportion comparable to today's proportion of people who "know how to code"). This graph (http://en.wikipedia.org/wiki/File:Illiteracy_france.png) suggests that the comparable era may be sometime around the medieval period, and it's not at all clear that your thesis would obviously hold true then, when other skills (hunting, barrel making, blacksmithing, etc.) would be far more immediately remunerative. When books are scarce, and few of one's peers are literate, being literate will do far less to improve one's life.
Illiterate societies indeed tend to not progress, and humanity at the moment has massive problems that it shows little evidence of being able to contend with. You're completely right that existing professions, as currently practiced, benefit little from adding to them an ability to program. Yet we're seeing a massive trend away from many current professions, as currently practiced. Many jobs are getting automated out of existence[1]. The chief culprit? Software.
[1] http://www.economist.com/news/leaders/21594298-effect-todays...
I think literacy is a very good comparison. Society certainly did work without everyone being literate, with just a few specialists who knew how to read and write, and there was no obvious need for everyone to learn it, and it is a huge investment of time and effort for everyone who has to go through it, so it would seem like a natural candidate for specialization, wouldn't it? Yet, as you note, essentially universal literacy has transformed the way we live massively for the better, and few would argue that this massive investment of every single person is not worth it and we should return to specialists taking care of our reading and writing.
Now, the question is: What would a society with universal knowledge of CS and programming basics look like? What would future kimdouglasmasons say when they claim that some new skill is not worth teaching to everybody because there simply is no comparison to computationality? How were pre-computational societies fundamentally held back in their progress, what kind of fundamental transformations of society would never have been possible if people had stayed uncomputational?
Your example isn't particularly helpful. Anatomy is not a widely applicable set of skills. There never is any question of whether you could use the help of an anatomist to help you solve an anatomy problem with your new motor design or your new soup recipe. Automated computation, much like literacy, essentially can be applied everywhere. That's why you write "it's much more efficient for specialist developers to consult with domain experts". That sentence only makes sense for universally applicable skills - I doubt many anatomists often consult with domain experts because they need to apply their knowledge in a field they so far have no clue of.
Also, the grocery lists a literate society writes also aren't of particular literary value. That does not mean that society isn't better of for people being able to write them. And to appreciate more the works of those who still are "literacy professionals", who obviously still have their place in society.
I hope by this you mean start a collective open standards FOSS project to fill the need, rather than write proprietary software that every single firm will redundantly reproduce because nobody wants to embrace the information age. That is the same kind of backwards redundancy that highlights why "everyone coding" is a bad idea.
> I would hope they choose the later
Medicine is rapidly being transformed by AI, robotics, and automation. In decades we should see the complete replacement of human labor in many surgical procedures, since a programmed machine can be much more precise and interpret the bodies signals and vitals in much greater clarity. But do you want doctors, the experts on performing these procedures, writing the code, or do you you want programmers who know to ironlad it against unexpected behavior to write the code? (trick question, we want both, but the doctors need to be computer literate and the programmers medically literate, but usually the later is more true than the former).
I think there is a misnomer equating computer literacy with writing software. The latter can give the former, but it doesn't always happen - I know many SEs who can't point out a hard drive from RAM, and couldn't make heads or tails of problems out of their niche domain. That isn't really computer literacy either, even if they live in a deep crevase within it.
I think computer literacy, as others in this thread have pointed out, should be its own course - just like English literature. You want to convey the macroscopic concepts and motivations and overarching conventions, rather than the minute details. The analogy would be do you care about sentence structure, word density, and subliminal messaging in Lit 101 - well, no, you care about overarching plot and meaning.
Any computer literacy class should have a cirriculum teaching its students what code is, but that doesn't mean they need to know how to write it. They should just understand how the machines in their day to day lives work, and how to control them if they want to from there. Because so many people are misinformed or just ignorant about what these magical glowy screens of letters and pictures actually are to begin with. It is the difference between being able to appreciate literature and being able to write world class novels.
If I may extend the previous metaphor: society already produces fanfiction.net, so I think we'll survive this too.
Considering how relatively recent our cultural conversion from orality to literacy was, and how quickly society shifted, your metaphor becomes even more rich and meaningful.
Shakespeare stands at the border between the worlds of orality and literacy. Kind of makes me wonder who the Shakespeare of today will be in five-hundred years.
Oh, an example of how CS people overestimate their importance, how funny.
Dentists, doctors don't need to know how to code.
Teachers don't need to know how to code. Maybe it's better that they do (some of them, still). The same with other professions.
Humanity survived up to the 1980/70s without computers being widespread. Their problems were mostly solved without it.
Literacy is something different, you can read a hundred year old English without many issues. It's much more universal than the code being used today.
People should learn how to cook for example, before learning how to code.
1. How our political system works. 2. How the economy works: specifically, what money is, where it comes from, how the banking sector works, and the relationships between money creation, interest rates, asset prices, and incomes.
Most people don't understand these things, and that holds our society back far more than not knowing how to code.
And also Theory of Computation moved to mathematics, Bioinformatics moved to the life sciences. Digital humanities into the humanities. And only then CS departments focus on only the aesthetics of software architecture and the interpretation of software code as a testament to the creators' socioeconomic influence of the time and to the academic's present-time critical theories.