11 ms·
Coding is not the new literacy
- kazinator 12y agoGranger makes a strawman of the coding-as-literacy concept by focusing on mechanical coding (as in "coding technician": someone who receives the requirements for a subroutine and implements it without any imagination). Someone exploring topics in computing in an interactive environment isn't doing that.
- ibdknox 12y agoI actually mention the magic of LISP and Smalltalk environments - they do greatly add in the exploratory creation process. But my "coding as literacy" strawman is born out by the industry: http://code.org/ http://code.org/ and http://www.codecademy.com/ http://www.codecademy.com/ are great examples. By saying you can learn to code by following through some online lessons that teach you how to write some Javascript, we're doing people a great disservice. Moreover, my real argument is that I don't think coding should be literacy. From the fundamental disconnect section: > We don't want a generation of people forced to care about Unicode and UI toolkits. We want a generation of writers, biologists, and accountants that can leverage computers. I don't think people should have to worry about exactly what the computer is doing if their problem isn't related to it. Specifically teaching general purpose programming as we think of it now is largely teaching people to build apps or command line tools. Instead of a generation that thinks of that as computing, we need a generation of people curing cancer with it.
- gavinpc 12y agoChris, as someone who respects you and your work, I'm interested to know how you would describe the "movement" aspect of coding-as-literacy. That's where I began to smell a strawman (even if not intentional). Follow the money: what is coding-as-literacy but a government-supported effort to bring down the price of software developers, disguised as a public service campaign? That in itself is a strawman, yet I suspect that in talking about a "movement" we've taken for granted that leaders within the field (such as Alan Kay), and not just celebrities are advocating for this. Do you know of any?
- endergen 12y agoThere is a strong 'movement' towards pushing this concept for sure. See code.org pushed by Zuckerberg, and even used and promoted by the President: http://www.whitehouse.gov/blog/2014/12/10/president-obama-first-president-write-line-code http://www.whitehouse.gov/blog/2014/12/10/president-obama-fi...
- michaelfeathers 12y ago> We build mental models of everything - from how to tie our shoes to the way macro-economic systems work. With these, we make decisions, predictions, and understand our experiences. If we want computers to be able to compute for us, then we have to accurately extract these models from our heads and record them. Writing Python isn't the fundamental skill we need to teach people. Modeling systems is. I think he's missing something. Modeling is only a small part of what people learn when they learn to program. The real lesson of programming is to be able to to create models that stand up against the cold asphalt of reality. They, first of all, have to be consistent enough to execute and secondly, they have to be tested with data. The hurdle everyone goes through when they learn to program is the unforgiving nature of the machine - it's not what you think you are saying that counts, it's what you are actually saying. And, that's an important lesson.
- ibdknox 12y ago> The real lesson of programming is to be able to to create models that stand up agains the cold asphalt of reality. I would argue that's just a matter of modeling enough to be good at it. I indirectly talk about this in a few places, while discussing how we iteratively craft models and in the section about kids (where I bring up debugging specifically). It's very important to work out assumptions and to be able to explore your models to find out where you've gone wrong. Programming is one way of doing that in terms of the computer, my hope is we'll find better ways of doing it in the future.
- michaelfeathers 12y ago> It's very important to work out assumptions and to be able to explore your models to find out where you've gone wrong. I agree and that's what I was getting at. To me, it's 'programming' when create something that has to be consistent enough for us to be able to explore it with real data. Thought experiments are something we can easily get lost in. We can have interactive environments that we don't see as programming and they can be useful, but the discipline of being able to create those models and know that they are doing what we intend for the reasons we intend - that's programming, and people gain that discipline through environments that make them work for it to some degree.
- copsarebastards 12y agoThis is completely pedantic. If you want to argue that coding is different from modeling, true, but there's a great deal of modeling implied in coding. I don't think anyone would refer to someone who could only write if statements and for loops that didn't model anything as a coder. And if we're going to be this pedantic: when you're saying "we don't need to teach coding, we need to teach modeling," you're saying the equivalent of "we don't need to teach reading and writing, we need to teach offloading data storage." How exactly do you plan to teach modeling in the void? There are other ways to model, but coding is by far the most expressive and widely applicable. The way you learn to offload data storage is by learning to read and write. The way you learn to model is by learning to code.
- deleted 12y ago[deleted]
- collyw 12y agoI could show you some of my ex-collegues work. There was plenty of code, but not a lot of modelling. It was a pain to decipher it.
- wanderingstan 12y agoThe analogy to writing holds here; a lot of "literate" people produce barely comprehensible writing.
- copsarebastards 12y agoTo follow the reading/writing literacy analogy: If we were talking about reading/writing literacy, you'd be looking at people's ability to write novels as a measure of their literacy. That's a pretty high standard, one by which I doubt either one of us could be considered literate (I've tried to write novels--haven't finished one yet). There are some real masterpieces of code: I'd point to the Lua or SQLite codebases as examples. But the majority of novels are not at that level and the majority of code is not at that level. I certainly have no respect for, say Stephanie Meyer (the author of Twilight) as an author, but I'm not going to look at her writing and say she's illiterate. In some sense, one could argue that it's more important a measure of code literacy for people to be able to read code than to write it. One area where this is very important is in management of software development. A core problem I'm trying to solve right now is that I'm essentially self-managed: my managers aren't code literate, so they can't actually tell whether I'm doing a good job or not. I've written reams of shitty code in a short time because of time pressure and gotten better reviews than when I spent the time to do things right, even though from my perspective I could see that the bugs that came out of doing things quick and dirty cost us more time in the long run (or even in the next few days). It's something I believed in theory before, but now I'm in a much higher-pressure environment and I've actually made the mistake a few times. If my managers were code literate, they could read my check-ins and sign off on them. And since they're not, they're essentially glorified middle-men, and I'm not sure what function they actually serve. The above problem would be solved if they were like your ex-colleagues. They don't have to know how to model, they just have to be able to understand how I modeled something.
- brd 12y agoIn Zen and the Art of Motorcycle Maintenance, the author talks about the importance of being able to carve up ideas in different ways to understand it more thoroughly. I'd say knowing how to code, as in going through the process of understand how to think through a logical sequence of steps, is a highly effective means of handing someone a proverbial scalpel. In my experience, most people cannot break things down logically nor do they appreciate what it takes to provide clear instructions. There is an emphasis in the world on communication which is a fine start, but being able to convey an idea clearly really only becomes helpful once you understand the idea clearly. Besides programmers and mathematicians, the only people I've met with the faculties to properly break things down are lawyers*. Law school trains you in the ability to approach an idea from different angles in order to identify attack vectors. As such, lawyers tend to be highly capable of feats of logic but are equipped in such a way that they are almost entirely adversarial and deconstructive. So while I completely agree with Chris's point and understanding that this is a banner he raises constantly, I'm a little disappointed to see him attack this initiative to get more people into coding. I'm all for better modeling tools and better teaching practices but I think teaching people to code is a wonderful solution in the interim. Framing an argument like this will only stir controversy in an otherwise worthy cause. edit: I've met plenty of people who aren't programmers, mathematicians, or lawyers that are logically capable. But as a general rule of thumb, those are the only three professions I've interacted with personally that have consistently shown that aptitude. Either way, please don't let this personal anecdote distract from the overall message, I only left that comment in there because I wanted to emphasize how rare the ability is across most disciplines.
- ibdknox 12y ago> I'm a little disappointed to see him attack this initiative to get more people into coding. That's because I'd rather people have the freedom to be mathematicians, nurses, lawyers, physicists, writers, and accountants while still being able to leverage computers. Instead of forcing people to become professional programmers to get the computer to model things for you, we should focus on teaching people how to model in general and build more tools like Excel that let people do that. Hell, I'd stand behind a movement to just teach people Excel. With Excel, we don't have to spend the next several years worrying about what flavor of MVC we have to use. Instead, we can focus on doing actually important things like curing cancer. > Besides programmers and mathematicians, the only people I've met with the faculties to properly break things down are lawyers. My point is we should fix that, instead of focusing on teaching people Python.
- throwawaymsft 12y agoThank you. Seriously, it'd be so much better (and easier) for people to master Excel than Python. Excel is interactive, undo-able, documented, shareable, graphical, etc. It's a much better tool for modeling. We don't need people to master mechanical engineering to drive a car.
- tree_of_item 12y agoInteractive, undo-able, graphical, sure, but what do you mean by "documented"?
- throwawaymsft 12y agoLet's say you're a new programmer and want to do something simple, like take the average of some numbers. In python you'd search the official docs (right? Why should I google around random forums) and get presented with this: https://docs.python.org/2/search.html?q=average https://docs.python.org/2/search.html?q=average Nothing helpful at all. A regular person thinks "take the average" and programmers think "build up a result from a set of primitives, like loops and arrays". Total mental mismatch. Way too low on the abstraction chain, I just want a friggin average. There is literally no article or tutorial in the python docs explaining how to do this grade school operation. Imagine how frustrated you would be. In Excel you type average and get inline help in the IDE, an example (you can copy-paste), related functions, etc. http://imgur.com/ZZGHlH2 http://imgur.com/ZZGHlH2 In 3 seconds you have contextual help extremely relevant, and you can see syntax errors as you type. For a new programmer, Python is effectively undocumented.
- gohrt 12y agoYou're kidding, right? Excel is awful, here's proof: If I open up the documentation for Windows, there's nothing about average. I hit the Start menu, I type "average(1,4,6,8)", and I get, nothing. What you like about Excel is that it is an IDE. And IDE that makes simple things simple, and hard things back-asswards (VLOOKUP??? CONCATENATE?? filters) http://docs.scipy.org/doc/numpy/reference/generated/numpy.mean.html http://docs.scipy.org/doc/numpy/reference/generated/numpy.me...
- why-el 12y agoGood points from Chris, but of course this depends on where one is. Growing up in a country that has shocking levels of illiteracy, I assure you that being literate, even in its most basic form, is already a tremendous step forward. If you see it in this light, the goal of the movement is clearer. The movement is seeking that crucial, qualitative initial step and the rest is depending on the person, the social env, and so on.
- platz 12y agoI really hope this isn't going to devolve into an argument between top-down and bottom-up methods
- yourad_io 12y agoNo, Vim is the best.
- jgrahamc 12y agoObject permanence for children is interesting but not the best example. Far more interesting is the fact that children fundamentally don't understand geography at a young age because they can't see it and have to imagine it, and geography breaks something down into types (city, village, country etc.) and there's a hierarchy. Understanding geography is close to the sorts of abstract thinking required of programming. Small children have a great deal of problems with "Paris is in France. We are in Paris." They also have almost no concept of distance as related to geography because they have no internal map of the world. So when you drive out of Paris you are still in France, but if you drive over the border into Belgium you are in another country. So, teach kids geography. I experienced this while teaching LOGO to small children (yes, this was years ago). Given a LOGO turtle and a set of instructions it's fascinating to watch them work out how to draw a square. PS You might think showing small children a map or satellite view would help, but it doesn't help (much) because they have no internal way of breaking down the data presented into what they experience.
- ibdknox 12y ago> So, teach kids geography. Haha exactly! That's a really interesting example I hadn't heard before. There are lots of other fun ones: number permanence, volume conservation, etc.
- TeMPOraL 12y ago> geography breaks something down into types (city, village, country etc.) and there's a hierarchy. Understanding geography is close to the sorts of abstract thinking required of programming It's one of the tools, but - probably because being heavily promoted by books and articles on Object Oriented Programming - it seems to be abused to the point of making some programmers dumber than they were before. What one really needs to grok here is that categories are arbitrary and rated only by their utility. With your example - yes, we divide countries into cities and villages, etc. but not only there are tons of exceptions breaking the perfect tree-like structure - the whole hierarchy exists only on the map, not in the territory. So yes, I'm all for teaching people hiearchies - followed by explaining that they're totally arbitrary, that real world is fuzzy, and that best ways to categorize do not always yield tree-like structures. (and maybe then people will stop listening to stories like "European Commision believes snails are fish" and then assigning stupidity to the authorities instead of themselves)
- mszyndel 12y agoThis article is deeply wrong. Literacy and universal schooling got masses of people out of poverty because they were able to get more "advanced" jobs. Most of them didn't have composition skills etc, yet at one point we had rows of typists in every office of better part of 20th century (remember this job requires just very basic skills centred around literacy). Writing was art for a long part of human history but it's not anymore. Same is going to be true for programming. Nowadays programmers like to think about themselves as special, but in reality the ability to write simple programs to process input and give output will be just as a normal skill in the future as writing a report is now. Programmers will only be as special as book writers are nowadays - just a little better in putting words-code together so their work has bigger impact.
- Swizec 12y agoIt's the difference between a code monkey and an engineer.
- icehawk219 12y ago> Writing was art for a long part of human history but it's not anymore. Same is going to be true for programming. While I want to believe this is true, at least here in the US, I have trouble accepting it. Primarily because so few people you talk to on a day-to-day basis outside of tech are even capable of understanding the most basic concepts. I've even met plenty of people within tech that can't. Introducing people to programming at an earlier age may help sure but we do that with writing and literacy and yet the list of people generally considered "truly great" at writing is still a very small percentage of the population. The big difference being that when I open my old, 1950's typewriter, and decide to type up a little short story that would probably make Stephen King weep for his art, a billion dollar company doesn't crash, a few million credit card numbers don't get leaked, or any of the other countless things that go terribly wrong when programmers screw up. I really do hope we get past the point where stuff like that is a regular occurrence, where computers and networks really are secure, and programming is taught at a young age. I just have trouble seeing any part of it becoming a reality any time soon.
- TheOtherHobbes 12y agoProgramming and literacy are fundamentally different. Programming is about building machines. It doesn't have to include modelling, although some of the most useful machines do. (How much modelling was needed for the HN code?) Reading and writing are about sharing experiences, learning from them, making moral judgements about them, and persuading, or being persuading by, fellow humans. Only people who don't understand either believe they're equivalent. At best, programming makes sense if you teach it as a practical add-on to math and strict logic. It has its uses there, although I'm sure that by the time one of today's five year olds is enough to entire the job market, knowing school-level Python and jQuery is going to be as useful as knowing BASIC. Programming teaches you nothing about verbal or written comprehension, allusion, metaphor, political and social history, or relationships of all kinds. Learning to read and write is the only way to start exploring that world. (Video-making and photography give a taste of it, but they're still distanced from it.) Programming - which is carpentry and architecture for binary machines - lives somewhere else entirely.
- cykho 12y agoMy advice has always been if you're not willing to commit 3 years full time to coding don't do it. It just takes that long to be useful on a team. Instead, focus on whatever area you want to excel at and leave the engineering to the engineers.
- danso 12y agoI've been teaching programming to non-CS students at Stanford for the past month...they're all clearly smarter than me. But what they lack, as does virtually every non-programmer I've worked with, is the ability to (initially) understand a for-loop. It's not that they don't get that there is such a thing as a "loop", or that a task can be broken up into iterations...they just don't know what it means to design something that can iterate across a collection and, for each member of that collection, perform a task on it. It's not merely not understanding the syntax, or the overall result...it's not comprehending that you can design and control such a thing. I've worked with non-programming professionals in which I've taken a repetitive task, such as extracting a bit of text from each page of thousands of pages of documents, and boiled it down to a program that saves them days of work. The effect of such a program is greatly appreciated...but time and time again, these non-programmers are delighted/astounded when I perform the same task in another scenario...what bothers me is all the times when I'm not there to recognize how such a problem can be abstracted, and they dive in head first into a meaningless, repetitive chore. The abstraction of a task, so that it can be performed in a loop...it's so fundamental that once you've done it, it's hard not to think in those terms. And I wish it were the case that very intelligent people could just get it, in the same way that those who've never played an instrument can at least appreciate Mozart. But I just haven't seen it...we programmers take for granted the ability to think in this profound way, and even though it's fairly basic, as far as ComSci education goes, it really is a gamechanger in all areas of life and work. This is why I think programming deserves consideration as a kind of literacy. Edit: To focus on something from the OP: > We don't want a generation of people forced to care about Unicode and UI toolkits. We want a generation of writers, biologists, and accountants that can leverage computers. Well, sure, if you boil coding down to "Unicode" and front-end web development, then yes, it's not "literacy". In the same way that if I boiled down traditional literacy to iambic pentameter and the debate between prescriptive and descriptive linguistics, I could make a compelling case for not learning to read and write. Edit 2: I'm willing to consider programming as not a new literacy, but "just" a branch of math...but math practiced in a pragmatic, visceral way, not in the tepid, abstract way that it is forced upon us in primary school. I do think that programming is math, but with programming, you are actively building and testing something using the principles of math. If there's a way to teach that kind of math without programming, I'm game for it.
- squiguy7 12y agoProgramming should be seen as a medium in which one can solve a problem. I agree that people have been approaching the idea of "teaching code" wrongly. At the end of the day, aren't the professionals trying to model their problems and then apply their knowledge to make sense these immensely difficult problems?
- teamhappy 12y agoI've thought about this just the other day. Most people here would probably agree that teaching kids to code in school would be pretty cool (never mind the usefulness of that for a second). I think one mistake we all make is imagine a world in which everybody can and enjoys writing code as a result of that. That makes no sense at all. A lot of people would probably hate it, and even more obvious, most people would just forget. I've learned latin in school (don't do that). Equus means horse, that's what I remember. --- BTW: We need higher-level languages on top of maths (that are not general purpose programming languages) so that people can talk about complex processes and what not.
- yourad_io 12y ago> I think one mistake we all make is imagine a world in which everybody can and enjoys writing code as a result of that. That makes no sense at all. A lot of people would probably hate it, and even more obvious, most people would just forget. I thought the idea of teaching kids to code is to show them that it can be immensely rewarding and fun, thus encouraging those that "click" with it to explore it further on their own. As a guy who gets bored often, I consider myself to be extremely lucky to have discovered a "passion" for computer-y things early on. I'm pretty sure I'd have been bored out of my mind if I had pursued any other discipline. Coding/Computing/... is the best game there is: we play "Simon^H^H^H^H^H Coder Says" with machines all day long. We'll never completely win it, but the mini-bosses along the way make it totally worth it. I feel like a lot of my classmates would probably get it as well if they were guided into it, but instead "computing class" was basically an MS Word tutorial. Something like Logo (or Sketch, nowadays) would have been much more effective and fun. If I had to teach high schoolers to code, I'd absolutely approach and present it as a game ("Imagine if you were the benevolent dictator of the universe..."). Because it is. It'll stick with some, it won't with others, and as always - the delivery method will affect the outcome more than the actual message (ever had a $SUBJECT_YOU_DISLIKED teacher that was so awesome that he actually made you perform well in $SUBJECT that year?) EDIT: forgot this: > BTW: We need higher-level languages on top of maths (that are not general purpose programming languages) so that people can talk about complex processes and what not. If it isn't evaluated/compiled, then we'll classify it under the "Maths" nebula anyway. See mathematical logic/boolean algebra, etc.
- skaplun 12y agoCoding is not the new literacy, it is the new masonry and we will all need a place to live eventually
- dmgarland 12y agoWhile the overall tone was a bit antagonistic for me, I tend to agree with the premise of the title of this article. As someone who runs coding training programs for adults, I don't think you can teach someone coding in a matter of weeks, anymore than you can teach them Spanish in a matter of weeks. However, if you're going to make coding your career, a course that covers the basics and puts you on a good footing, especially if linked with work experience, is the best way to embark on the learning and exploration that the author discusses. Nevertheless, I don't see why we could put say HTML in the same category as Excel- why shouldn't everyone in the world be able to make a webpage? We teach reading + writing, not to make everyone a journalist or a novelist, but so that we can express our thoughts and communicate our ideas. HTML (and even CSS) are basic enough for any professional to pick-up and are empowering skills to learn; without relying on third-party means to publish your own information on-line. One last thing - in the UK, Excel is one of the skills listed under I.T. apprenticeships, if you can find a company who offers that.
- mark_l_watson 12y agoChris is correct that being able to model is a prerequisite for effectively doing a lot of things, coding is one of them. Sort of like saying that schools need to teach 'critical thinking.' BTW, I especially like the section starting with the Alan Kay quote. I have recently started (yet one more time) hacking in Pharo Smalltalk which is one of the better programming environments for exploring code and understanding it. I am sure that Chris was strongly inspired by Smalltalk when he created Light Table.
- karols 12y agoFor modelling to work generally (in most/all domains), you need some underlying paradigm all these models can be translated into. For excel, it's grid based dataflow, (for example, you can call it differently). I saw you tried dataflow already but stepped back from it. So what paradigm are you trying to use for EVE?
- deleted 12y ago[deleted]
- scott00 12y agoThe author spends a considerable portion of the piece attacking a straw man. As he mentions in the article, people who stress the importance of reading and writing skills aren't merely advocating for the ability to transcribe speech to paper and pronounce written text; they are also advocating for the communication skills that are taught as part of a good literacy education. Similarly, people who stress the importance of programming are not merely advocating that people gain the ability to transcribe a perfectly detailed spec into executable code, they're also advocating for the modeling skills that give you the skills to write the spec. His real point is that he believes teaching people modeling and computing skills using Excel would be more useful than teaching them modeling and computing skills using python. Depending on the audience and the amount of time they have to dedicate to the topic, I might agree with him. Many undergrad business programs, for instance, require a course in Excel/VBA, which seems sensible. However, I think many people who say things like "computing is the new literacy" think that computing and modeling might be important enough skills that most people should dedicate more than the equivalent of 1 semester in college to them. They might instead suggest 3 semesters, or maybe even that high school students take a computing course every year. And if he wants to replace all THAT with Excel, I think I would argue that you've got enough time to add in some python too.
- neovive 12y agoI've been running a weekend programming club for grades 3-5 using Scratch (scratch.mit.edu) and notice some of Chris' points first-hand. For those unfamiliar, Scratch provides a LEGO-like programming environment--it's roots go back to LOGO. After much initial enthusiasm, the club is down to a core group of dedicated students. The drop-off started when I switched from directed instruction to self-guided projects. Although Scratch contains a relatively small set of core programming blocks, the amount detail involved in building moderately-complex programs (multi-level games, scrolling, interaction) is a lot to overcome for someone without experience. I think some of it relates to the "fundamental disconnect" discussed: A student might be thinking "I want the background to follow the goblin," but needs to translate that into code blocks not part of his/her everyday language. It takes practice and experience to learn the computer's vocabulary for describing a process.
- shamney 12y agopractice, experience AND intelligence
- rmxt 12y agoI would venture to say that what you focus on in your comment runs explicitly counter to what the GP was trying to emphasize in their post. For the people who teach kids of grades 3-5/ages 8-10, I doubt that they are in the business of dissuading children who are apparently "not intelligent" by whatever metric you imply. Kids at that age deserve every open door that can be given to them, and implicitly shutting them out of a computer science club because they can't immediately grok how to do the described task is doing the entire community a disservice. The lesson to be learned isn't that some kids can't (or won't ever) cut it, it's that the learned elders need to formulate better ways of passing along programming knowledge to the younger generation.
- neovive 12y agoGreat points. It's very important not to classify at such a young age. Kids in the club are encouraged to try new things, experiment, make mistakes and have fun without worrying about assessments or grades. There are no success rubrics and the computer, in this situation, is just a tool for creative expression--like LEGO or clay. Scratch works well since it's very approachable and is a fun introduction to computer programming as creative tool. The drop-off effect is normal, just as some people choose to stop art and music classes after an initial introduction. For some, there is a "fundamental disconnect" when expressing themselves creatively with music or art and they will naturally gravitate away from those areas. However, a child should not be excluded from art class for not being able to draw a perfect portrait. My hope is that being introduced to programming concepts in this club forms mental models that can be referenced later on when learning other subjects and, perhaps, motivate some students to further explore computer science. Either outcome is a success.
- agentultra 12y agoTo paraphrase William S. Burroughs from his 1978 lectures, "Creative Reading," In teaching creative writing there is the implicit assumption that the student can write; that is put words to paper. He instead eschews the traditional method of teaching a student to write well and instead focuses on teaching them how to read well on a hunch that it will help the student to recognize good writing and why they appreciate it. An idea I've been revisiting (as other luminaries such as Donald Knuth and Peter Siebel have gone before) is why code is hardly ever read creatively. Is it something about the procedural epistemology of certain languages? Are inductive or deductive styles easier to comprehend? Why is the artifact of our labor so divorced from its realization (source vs. execution)? Siebel says we should approach the reading of code as the Natural Philosophers of their time approached a new specimen. Knuth, as far as I know, still advocates literate programming but admitted in Coders at Work that he doesn't read that much code. And a new idea being popularized is data-oriented programming which suggests that the design of the program should be divorced from its implementation which should model the data flow as closely to the hardware as possible -- implying that readability is a secondary concern; further divorcing source code from intent and purpose. Literacy when it comes to code... appears to me at this point to be an oxymoron. It's not a novel idea to teach kids to code. I rode the tail end of a hysteric push to teach kids to code in the 80s. A difficulty for me is that the languages we have today are far more complicated. But we also have some better tools... scratch has worked well when one curious niece and nephew asked what I was doing. Programming need not be this intense mental task with textual interfaces and machine-oriented semantics. It's a useful skill to have: abstracting ideas to symbols and applying transformations to them. A skill worth picking up, some cynical types postulate, if you want to have a job in the next 10 years.
- hawleyal 12y agoReading/writing and comprehension/composition are the same thing. The author is just attributing specific meanings to those terms to draw superficial semantic differences. Reading is just another word for comprehension. Only a narrow view of reading would be limited to the physical act of moving ones eyes across a page. Similarly, the word coding is often used to describe a plethora beyond typing if statements and for loops. The author does have some good points despite this problem, but the entire hypothesis is based on a weak argument of semantics.
- n72 12y agoI seem to remember some project (I think it might be a Microsoft Research project led by someone famous) which has been going on for 10 years or something like that which has the ambitious goal of doing something similar to what I understand Granger to be doing, namely some kind of non-scripting programming. Taking blocks of knowledge or computation or whatever and arranging them in way intuitive to non-programmers. Anyone know the project I'm talking about? FWIW, I think it's been mocked at various times for being vaporware after even 10 years or whatever.
- mathattack 12y agoThe problem with calling coding "Literacy" is that it implies it's necessary for everything else in life. It's not. Even 50 years from now, technology will evolve to empower those who can't program. (One can argue that the advance in technology has come from it being easier to use, not harder.) That said, programming is a form of screening for IQ and rigor than perhaps a Philosophy degree was in the past. People who can program are used to dealing with Right and Wrong answers, difficult problems, and working around rules that might seem wrong. It's a great skillset, but by no means mandatory. (Neither is modeling) This is one reason why CS majors are in demand for a lot of non-CS jobs.
- shamney 12y agomost people are not smart enough to be even mediocre coders
- crdr88 12y agoWhat are some good resources ie) books to read on software modeling?
- mncolinlee 12y agoWhat Chris Granger is explaining is pedantry. It's a difference without a distinction. I used to teach AP Computer Science. On the first day of class, I'd hand out paper and have the class make paper airplanes. I'd then ask them to write out the instructions they used and would play "human parser" as they turned them in to me, building lopsided airplanes by interpreting their instructions too literally. Sure, modeling will teach them the necessary skills as well as any programming language. I would argue that my students were coding. The difference between coding and algorithms is important, but it's mere semantics as far as this discussion is concerned. Yes, coding isn't literally "the new literacy," but his point destructs the discussion in the way pedantry usually does in political spheres. In politics, being right often gets the wrong result. Coding is an awesome, interactive way to explore algorithms and how technology works.
- jtwebman 12y agoI would agree if you mean learn what an algorithms does but not how to build it. I program everyday and rarely do I have to build an specific algorithm but knowing of them and what they do I need daily.
- mncolinlee 12y agoJust because a guitarist plays covers doesn't mean he wasn't playing guitar. Every time you build a syntactically-correct program, you were making algorithms. No one is suggesting you have to master linked lists to graduate--only that you should understand the very basics of how computers process information. Just because your college course was called "Algorithms 101" does not mean those are the only algorithms or that your own code is not an algorithm.
- ibdknox 12y agoThe simplest possible distinction: coding is writing code in a programming language[1][2][3], modeling is breaking down systems without regard for computer or programming language and is not specific to any domain. When we say "coding" the accepted definition has to do with giving instructions in a programming language to a computer. I'm saying that the fundamental skill for people has nothing to do with Python or computers at all. [1]: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=define%3A%20coding https://www.google.com/webhp?sourceid=chrome-instant&ion=1&e... - "write code for (a computer program)." [2]: http://en.wikipedia.org/wiki/Computer_programming http://en.wikipedia.org/wiki/Computer_programming - "commonly referred to as coding" [3]: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#safe=off&q=coding https://www.google.com/webhp?sourceid=chrome-instant&ion=1&e... - everything on the first page is talking about writing code as instructions to a computer.
- charlysisto 12y agoYou could call this article UML editor vs text editor. What it may point out would be the lack of a modeling tools. UML is old fashioned, java/entreprisy, and new ones like omnigraffle aren't specifically targeted towards modeling domains. Whereas text-editors are evolved, bright and shiny. On a another level I agree that what's truly fascinating with programming is not mastering the quirks of a specific language but translating an external model to the shape of rules expressed in a language which has it's own internal logic. Not just to have a static interpretation like painting or literature would provide but a dynamic one which evolves with user and data interaction. This is really unique in human history
- evanwolf 12y agoIn the late 1970s and early 1980s, domain-specific programming languages sprung up. Languages for simulating economic systems, for a company's financials, for modeling biological systems, and many more. Now, in the twenty-teens, functional programming is gaining new traction as developers learn that, at their core, they start with defining a domain-specific language. The tools for creating domain-specific models are orders-of-magnitude too abstruse, complex, arcane, and difficult. If Eve can make creating and playing with models even one-order-of-magnitude more accessible, it will help shift much of programming up a layer of abstraction.
- ZenoArrow 12y agoThere are all sorts of analogies we could use to explore this problem space, but I'd say music is an ideal one. In music, the "material" for consumption is sound and the tools for creation vary wildly, from the intuitive to the complex, but the act of creation and consumption of music is open to us at every level. One detail that perhaps is overlooked with the popularity of Excel is that it is visual. Not just by using a GUI to control its logic, but that the results of changes are always made apparent. As an Excel beginner you might not know why something is broken, but you can figure out that something you did was wrong (logic errors can creep in, but can be minimised through breaking down concepts to contain fewer points where assumptions are encoded). Knowledge is then shared with other users in order to get Excel to perform as desired. I'm rambling a little bit here, as I'm thinking out loud, but wouldn't an ideal starting point for a better Excel be Excel with cell types? If you think about it, a type system for Excel cells solves so many of the problems you get from trying to use Excel at scale. I could elaborate if the potential improvements are not obvious.
- puranjay 12y agoI have a BA and a MA in English (don't get your pitchforks out yet) and I'm learning how to code. I'm not doing this because I want to get a job as a coder. I do well enough for myself with my existing business. I'm learning to code because I see all these wonderful apps and products and games and experiences, and I feel left out. I have tons of ideas. I just want to see them come alive. Whatever business potential these ideas have is just added bonus. At the same time, even though I have been around computers since I was 10 and know enough of math, logic and basic programming to pick up coding at a competitive level, I do recognize that this isn't something "everyone should do" You need to learn how to write and read because otherwise you can't write a check or read a contract. I doubt we'll come to a point where you will need to look at the source code to run Word on your computer. So no, coding really is not the 'new literacy'. Coding is hard work, and 30 hours of Python will equip you to build nothing, do nothing of note beyond looking at a Github repository and wondering "gee, what kind of modules are those? And what's that fancy trick with objects?" If you are going to do this, you'll have to buckle in and do the time. 3 months of intensive, 40 hours/week is the bare minimum dosage to build a decent web app. Multiply that by 10x to actually become an engineer and not just a programmer
- ilzmastr 12y agoBesides the title being pedantic, I feel this article is alienated from the average person I know who is always modeling and dealing with symbols and representations in the world, but less often takes a step back to realize the practice of their modeling and to judge its efficacy. To me, modeling seems equivalent to consciousness. To me cave paintings of animals seem significant because they illustrate 41k yo humans creating representations of their world (for mental practice, entertainment, ceremony, who knows...), whether they realized their practice is another question. But today, there are many people who model and recognize it, think of manipulative salespeople/lawyers/cads, great fiction writers, constipated philosophers and art/film/lit critics, scientists, artists/architects/designers... You don't __need__ any technology built after 1980 (or whatever) to explore the world... Even thought experiments can shake an academic field (Maxwell's demon, Schrodinger's cat, EPR paradox...) I agree that there may be better tools to convince people to contemplate environments and unpack/model/break down confusing things into collections of simple theories than to send them to a liberal arts college (where this and goofing off is really all there is to do in my experience)... But programming is still the new literacy IMO. I feel like all the white collar underpaid people I know could work 2-4 hours a day of their 10 hour/day jobs if they wrote the most limited, banal, imperative script that abstracts no concepts and in completely un-generalized (and therefore fails at modelling). And I feel just this fact, that there would be a great liberation of 1st world mankind's time if every non-programmer who uses a computer for their job up and wrote a severely shitty program that automated some aspect of their responsibilities, is enough to say that a coding is the new literacy. Think of what kind of intellectual shift a machine-literate public that just cut their work week in half would result in...
- clueless123 12y agoBeing able to read and write are the minimum skill you have to have to be called literate. I think that the ability to write and read code is a minimum skill for you to truly benefit from our new information society.
- Swannie 12y agoLet's assume reading and writing is to literacy as is suggested at the start of the article. I think that's not too contentious. Given that, there's an odd assertion in this article around Excel. To quote the article: "We create models by crafting them out of material. Sometimes our material is wood, metal, or plastic. Other times it's data or information from our senses. Either way, we start our models with a medium that we mold." With literacy, that material is words. When we start "modelling" with the written word, we first have to be able to understand a vocabulary, sentence structure, and ultimately a paragraph and narrative structure (beginning, middle, end). Normally this happens in the spoken word way before we need to express this through writing. We are also exposed to many, many, examples of paragraph and sentence construction in the written word before we are expected to write anything more than simple sentences. We first start writing by learning to express our vocabulary (spelling), with simple grammar, then putting our ideas together into sentences, paragraphs, and with narratives, and refine this modelling skill over a lifetime. With programming, that material is a programming language. When teaching, ideas of programming should ideally be discussed - loops, conditions, functions, variables, etc. Then move on to reading code - functions at a time, long before a line of code is written. Something like Scratch seems to be highly valuable for this, much in the same way that children have always had games where they are expected to put the words into a sentence in the correct order, usually before they are expected to be able to write the sentence themselves. For me the real disconnect, is that the material of modelling, the medium, for programming, is a programming language and code. Excel is NOT the medium of modelling for programming. Excel is a medium for modelling Excel. The constraints in Excel help people understand... Excel. It won't really help you understand data modelling, because the modelling you do is free-form. The constraints of Excel are unique to Excel.