4 ms·
He's still missing the point. If anything "learning to code," is just bad language to describe something more worthwhile: teaching people the fundamentals of a
by agentultra 14y ago
He's still missing the point.
If anything "learning to code," is just bad language to describe something more worthwhile: teaching people the fundamentals of algorithmic and logical thinking. We don't teach mathematics to kids so that they will all become mathematicians and we certainly don't teach them literacy so that they will all become the next J.D. Salinger. They are just tools for solving other problems. "Learning to code," is just another tool that will become ever more prevalent in the years to come.
The problem of not teaching these fundamental principles is that when it does become useful to do so it will be too late. We cannot afford to wait yet another generation to teach these ideas and principles. I think we're far enough along by now in the development of computer science to have a basic language of things to talk about. If we at least teach people these things then how many other judges in technology patent cases will be able to at least have an intuition to call out a patent troll? How many office workers will be able to find hidden information in their data or automate the repetitive tasks they do and move on to better things? How many of them will know that at least it can be done and perhaps they should hire a programmer?
As it stands right now most people don't even have an intuition of what can be done with a computer. Their world is comprised of apps and silos. When they get onto an airplane they have no idea that they're sitting in a flying solaris box with wings. They don't realize that their e-reader is a general purpose computing device capable of more than just downloading books from that one store they bought it from.
I don't think anyone advocating algorithmic literacy is suggesting that we train legions of crafts-people.
edited for grammar
- koide 14y agoIndeed, I had missed this point too, but it is too true. Algorithmic literacy is important. More important than mere computer proficiency. Now, is it more important than the purported alternatives? Hard to say. But maybe there's no need to decide.
- Smerity 14y agoExactly. He says only follow what you're passionate in. Most normal people I know aren't passionate about mathematics but they're forced to be competent. If we taught mathematics like we taught computing, people would only ever use calculators and never see equations. They wouldn't know how to solve x = 5 + y and y = 2x + 1 or if solving it was even possible. Mathematics to them would be only what the calculator can do. Think of all the problems you've had as a programmer. Now think of how many of those could have been lessened if people had a better understanding of what's happening rather than trying to remember the incantation you just recited. With this education they know when a task should be automated and they know when a task can't be (at least easily) accomplished by a computer. The computer is no longer magic to them. Advances in many fields have come by harnessing the power that computing provides. Do we really want to see a future where people still think computers are magic?
- astine 14y ago"teaching people the fundamentals of algorithmic and logical thinking" You don't need to be a programmer to think logically. There are a lot of other fields that teach that. Basic algorithmic knowledge is useful in daily life, but you won't necessarily gain that while "learning to code," and it's not necessarily more useful than anything else you might study. "how many other judges in technology patent cases will be able to at least have an intuition to call out a patent troll?" You going to have judges study electrical engineering as well? How about plumbing as well? Coding isn't special here, it's just the one thing you and I know. We're insisting that others toolbox's aren't full enough because they don't know the one tool that we happen to know. Perhaps that's a bit of a hacker-centric world-view?
- SomeCallMeTim 14y agoThe judge who happened to know enough programming to dismiss Oracle's argument that a 9-line function should be worth millions certainly helped out. [1] [1] http://www.slashgear.com/oracle-android-argument-flounders-thanks-to-coder-judge-16228583/ http://www.slashgear.com/oracle-android-argument-flounders-t...
- slantyyz 14y ago>> You don't need to be a programmer to think logically. That's true. On the other hand, knowing the basics of coding makes it easier to do more even as an end user. Like writing a simple macro in Excel to do something it can't otherwise do. I see coding as a useful life skill. I know how to do simple things like change a light switch, fix simple leaks, change a tire, hem a pair of pants, make a cheesecake, etc. but I'm not an expert in any of those things, nor do I want to be. Having said that, I also know when a problem is beyond my skill and to let a professional handle it. There's nothing wrong with coding being one of those skills.
- icebraining 14y agoBut did you learn those life skills upfront because you thought "it's important to know how to make a cheesecake", or did you learn as you needed them? Because Atwood doesn't seen anything "wrong" with learning to code; he does view learning it upfront as premature optimization: Here's a person who a) found an interesting problem, b) attempted to create a solution to the problem, which naturally c) led them to learning to code. (...) This is how it's supposed to work.
- meej 14y agoThis whole conversation about learning to code puts me in mind of what CMU's Jeanette Wing calls "Computational Thinking", this comment especially. Here is her article from CACM on the subject: http://www.cs.cmu.edu/~wing/publications/Wing06.pdf http://www.cs.cmu.edu/~wing/publications/Wing06.pdf (I think someone posted this in the comments of Atwood's original post, but I've yet to see it show up here at HN.)
- jhuni 14y ago> He's still missing the point. If you read him carefully I think you will find that isn't the case. Much of a professional programmer's time is spent mindlessly debugging crapware, in other words, code plumbing. Plumbing is a separate speciality for good reason. In depth plumbing courses such as those at toiletacademy should not be required of all students. On the other hand, I certainly agree that everyone should be taught mathematical thinking. Nearly everybody in the first world is already taught elementary mathematics. That is certainly not something Jeff Atwood is opposing here. > Their world is comprised of apps and silos. Programmer's worlds are comprised of apps and silos just as much as everyone elses. Indeed, everyone who is a victim of the UNIX pestilence lives in a world of incompatible competing applications. > They don't realise that their e-reader is a general purpose computing device capable of more than just downloading books from that one store they bought it from. That is because most modern e-readers are deliberately designed to be that way. Their manufacturers intentionally implement C.R.A.P (content restriction & punishment) to prevent users from realising the full power of their devices.
- danso 14y agoSo what? Much of a professional writer's time is spent wrangling with arcane grammatical and thematic constructs which 99% of the literate populace forgot about after high school...but it's still important to spend years teaching people how to read or write. Everyone (in middle America) gets through at least hih school algebra...but why is mathematical and logical thinking, common to programmers, so rare? Even in the sciences it's considered a specialty to be able to aggregate data and external information, or to delimit one's own data output in a way that's useful beyond a narrative paper. I think it may just be the case that it's nigh impossible to gain these logical/abstract insights without the practical experience of simple coding. I've tried teaching many people the difference between "8" and (the literal value) 8...it never seems to stick until you write and run a simple piece of code to test it out.
- adeelk 14y ago> why is mathematical and logical thinking, common to programmers, so rare? What evidence is there that programmers have better mathematical and logical thinking? > I've tried teaching many people the difference between "8" and (the literal value) 8...it never seems to stick until you write and run a simple piece of code to test it out. This is unrelated to both mathematics and logic.
- Jach 14y agoIt's not just algorithmic and logical thinking, both have been around for thousands of years. (Most prevalently after the rise of general writing.) I'm sure both Lady Ada Lovelace and Charles Babbage, being competent mathematicians, wouldn't have had much trouble following an insertion sort algorithm (since humans do this naturally already when sorting) for a pile of cards or be much fooled by the 'tricky' true/false Knight questions. When it comes to implementing these things on a machine (and building the machine, which nowadays is a freshman/sophomore CE project), though, they struggled immensely. And their struggles with the purely abstract side of things were not just from having a lack of expressive language, for even with the most expressive languages today concurrency and other parts of programming are still mentally challenging. The reason computing is different from mere algorithms and logic is because programmers and machines face incredibly deep abstract and physical hierarchies and orders of magnitude for even the fairly mundane things. It's even further different in that programmers have perfect (or near-perfect with error correction) digital precision and control at immense scale down to whatever the relevant atom is (a bit, a microsecond) and the ratio between the upper bound and lower bound keeps increasing. Physicists have a similarly large order-of-magnitude gap to cross, but carbon nanotubes are state-of-the-art whereas programmers have been perfectly manipulating gigabytes of data for years. Dijkstra called computers a radical novelty[1], his reasoning is why I dislike these poor metaphors and analogies about programming "being another tool in a toolbox of job-skills like plumbing or life-skills like tying a knot", or "learning to program is like learning how a car works", or even the notion that "learning to program should only be for the passionate, for those who enjoy it, or for those who want to make money with it." It was ridiculous and wrong when Socrates said similar things about writing, it's still ridiculous and wrong when people say it about programming. [1] http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036...
- greggman 14y agoI agree. Let's try substituting some other things. "Don't visit a foreign country" "Don't learn a 2nd language" "Don't listen to any music but pop music" "Don't read anything but children's books" You could argue that 99.99% of people don't need to visit a foreign country. But most people that do have their horizons broadened. Maybe they realize their home country is not as "special" as there local "we're AWESOME" propaganda suggests. Maybe they realize how lucky they are to live in a well to do country. Maybe they get a picture of how others live (better to aspire too or worse to be thankful for what they have) 99.99% of people don't need to learn a second language. They can get by just fine with just 1. But learning a second language opens up so much of the world. Often learning a foreign language leads to extended time in a foreign country which leads to exposure to new ways of looking at the world and learning what you thought was "common sense" is actually only your culture and not a universal truth. Learning a little programming opens your eyes to how this digital world works. It opens your eyes that an iPhone or Android is really not magic, just millions of simple parts all working together. Learning a little programming can arguably make you less complacent with limitations of various OSes, Apps, websites, etc. and push for a better world. It's not about becoming a programmer. It's about having at least a basic understanding of how the modern world works. "Don't learn to program" seems to me like "Don't learn Biology". "Don't learn History", "Don't learn Physics" All of those aren't needed by most people either but learning them gives you more tools to understand the world. I think Jeff's problem is he really trying to say "You don't need to MASTER programming" and the rest of us are saying "You should learn at least a little programming" and so we're talking past each other?
- stiff 14y agoIf you look at other articles at CodingHorror, I don't think Jeff Atwood associates coding with things like "algorithmic thinking" (which is not necessarily bad, he just has a different focus), but do courses of "learning to code" teach it all that much? For beginners learning to code is more about just learning to "make the computer do" simple things via learning all the terminology, syntax, the deciphering of compiler error messages etc. It takes plenty more effort to learn some theory along the way and this is most likely to happen in an academic setting and the popular courses are really more about craftsmanship. Robert Sedgewick has a nice "Introduction to programming" course followed by an "Introduction to CS": http://introcs.cs.princeton.edu/java/cs/ http://introcs.cs.princeton.edu/java/cs/ It sure could be useful to a wide audience, especially for people in science. For people in general? I think not more than hundreds of other skills. People in every discipline tend to think what they do is the pinnacle of all understanding, this is especially visible in academia and in schools, but in the end you cannot know every thing that potentially could be useful. Of course this shouldn't stop people _interested_ in programming from learning it.
- smsm42 14y agoWhy should people care about computer systems in a plane? Do you know all hydraulic, mechanical, electrical, audio, video, etc. systems in the plane? Would average person know how plumbing in a plane works? Does he know what is the name of the plastic the storage bins or his seat handles are made of? Does he know how the metal that makes the wings is made? Most of the people don't know anything about 99% of things they use beyond what they need to know to use it. It is called division of labor, and without it civilization could not exist. Computers are no different. They do a lot of stuff, and most people don't care about the details, and they shouldn't. There are people that take care for it instead and get paid for it. Algorithmic literacy very little to do with computers. People identified the need to systematic approach to solving problems long before computers, and some modern techniques existed very well without them. For example, TRIZ (https://en.wikipedia.org/wiki/TRIZ https://en.wikipedia.org/wiki/TRIZ) was invented in 1946, without any computers existing. Systematic thinking and systematic approach to problem solving should be taught and learned, but programming is one narrow application of it, and should not be confused with it.