Hacker News new | past | comments | ask | show | jobs | submit login
We should teach all our kids to code (kernelmag.com)
118 points by apexauk on Jan 23, 2012 | hide | past | favorite | 73 comments



I'm not having children, but I have two nephews and a niece, and when they are old enough to read and use a computer without breaking them, I'm giving them each a netbook preinstalled with ubuntu, various programming tools, and some kind of video chat software so that they have access to me to ask questions at any time.

I want them all to know this kind of thing, regardless of anything else. Plus it will make me the coolest uncle ever.


In my experience delivering Ubuntu boxes to elementary aged children, they are generally unimpressed. This isn't to say you will have a similar experience. I am interested in how to pull it off, so let us know when the time comes.


You should look into the Fedora Sugar on a Stick distro.

http://spins.fedoraproject.org/soas/

It has tons of great interactive python programming tools and projects, plus all the hours are logged and you can review how much time the kids spent on each project.


I'm sorry, but here in Australia and I assume from what I hear it is the same in the US, teachers are struggling to have kids leave primary school being able to write a complete sentence and add a row of numbers.

They are already being expected to impart to the kids sex education, anti bulling education, physical education, sun safe education, how to not eat too much crap and get fat education and many other things that in a normal society would be the responsibility of parents but the government now seems to believe should be imparted by the formal education system.

There are many things wrong with the modern education system, and I don't think many of them are going to be solved by imposing the requirement to teach programming on teachers who in many cases struggle themselves to even turn on a computer let alone be able to make it do what they want in any meaningful way.


I'd agree that there is a huge disconnect between a bunch of us saying 'yes coding is a great skill - lets put it in the classroom' and the reality of the current state of education. There is a lot of sentiment about how coding is the new literacy... its not. Literacy is literacy. Math is math. You need to be quite good at both to then be able to program well.


There's a couple of points about modern programming systems.

BASIC was interpreted, and not object orientated. You'd have a book, and that book would contain every keyword, with a description of what it did, and some example code.

So you'd buy magazines or a book, you'd type out the programs in those books, you'd debug what you'd typed, you'd modify what you'd done, and then you'd start creating new programs. You'd write a little program, and then realise that you needed to do X; so you'd read the book and find the instruction for X, and you'd grok the example and write it in your program and debug.

Where is that workflow, that learning journey, recreated today? Perhaps with the "learn X the hard way" series?

Also, most people here are either technically brilliant or at least proficient. Now imagine the general population. These are people who just don't know how to plug in a printer. (In the days when computers had parallel ports and serial ports you could not plug the printer into the wrong port. You just had to look at the cable, and look at the computer, and try to mash the connector into all the ports. It would only fit one, and it would only fit one way. Yet I was seen as some kind of genius, by more than one person, because I could plug a printer in.) Or these are people who will not, seemingly cannot, read and act upon a short simple error message.

I love to think that maybe a bit of programming / coding teaching could change that, but I'm not sure it will.

Finally:

> Learning to code is learning to use logic and reason, and express your intent in a consistent, understandable, repeatable way.

Author uses "coding" and "programming" in weird ways. Normally programming is the design process, with pseudo-code and flowcharts and jackson structured programming charts and etc, while coding is just taking that and writing it in some language. Maybe I'm showing my age and the words are now used in a different manner, but it threw me for a while.


>Normally programming is the design process, with pseudo-code and flowcharts and jackson structured programming charts and etc, while coding is just taking that and writing it in some language.

That sounds more like software engineering to me. Most people do indeed use the words 'programming' and 'coding' interchangeably.


Just a couple of observations from a (mostly) computer-illiterate person:

The people who learnt to program computers in the 70s and 80s weren't taught at school by teachers, they taught themselves (maybe with help from friends).

The OSes of the 1980s were much simpler than MacOS/Linux/Windows. In particular most of them had a standard BASIC built in which was very easy to start using. One could just turn the computer on and immediately type in a program.


> The people who learnt to program computers in the 70's and 80's ...

I agree, but that kind of programming is very different from the type of programming that will be useful to non programmer kids when they grow up. There is also google, stack overflow and a waltz of easily accessible information on how to do X in language Y that was not online then.

I am drawing a distinction between coding and programming. Let me explain - When I graduated from college in 1999 the career office was very assertive that I should use and describe my ability with the MS Office productivity suite. When and how it had become an important enough to include on my resume doesn't matter, it was an important skill to have for the types of jobs I was going to be applying for. So programming and programmers will always have to dive deep and be able to develop complex systems. I am using the word coding in the same context as what I started with: I worked in a laboratory and collected lots of scientific data. I learned how to automate the tedious parts of manipulating, formatting and emailing out the results to save my time and reduce the errors I made doing it manually. To me, this was a self taught journey to learning to code with vba and even back in the first half of the Aughts there were decent places to figure things our for VBA.

I think in the future, kids or prospective employees in general that are not programmers, being able to put "can write JavaScript and VBA to automate repetitive tasks" will not be required. But, the candidates who can will have a marketable skill that sets them apart from their peers even though they are both trying to get a job in Supply Chain or Regulatory Affairs.

And these days, JavaScript is very easy to get started with, fire up a modern browser, open up the console and type in your program on any web page. It's been a while since I worked with VBA but I assume it is discussed on stack overflow.


The people who learnt to program computers in the 70s and 80s weren't taught at school by teachers, they taught themselves (maybe with help from friends).

It's still the truth these days. Of course, we don't have basic installed by default anymore. Instead, I have a desire to make video games and it took me several tries over my childhood until I started to program seriously at age 15.


I recently watched Randy Pausch's "Last Lecture" (http://www.cmu.edu/randyslecture/) where he promoted Alice (http://www.alice.org/) as a tool for teaching kids to code. I downloaded it and played with it, and it looked pretty good. Like logo, it makes programming more fun by giving you immediate visual feedback. Like the "If this, then that" thing the article liked, it promotes the idea that programming is a lot like storytelling; the entities do what you say they do, nothing more, nothing less.

I found in it the potential for excitement that I found when I recently looked at the demo programmer live coding at http://iquilezles.org/live/index.htm

The live OpenGL editor he uses for immediate feedback made me figure out how to get an OpenGL triangle rendered on my laptop right quick. I can imagine that having storytelling control over 3d characters could do the same for kids.


This is an issue I'm very passionate about, and I'm sure many others are too. I'd love to hear other's thoughts on how we educate the next generation and the best way to teach coding in 2012.


I wouldn't bother. Why?

It takes a certain mindset to write code. Not everyone has it or is interested in it. My children couldn't care less about it and that's up to them. They'd rather be digging holes in the garden and covering things in paint. I'm not here to indoctrinate them with my own interests but to nurture their interests.

Education is fundamentally flawed on the basis that it mandates knowledge on political whim and percieved societal need rather than nurturing and developing interest. Consequentially society is filled with people doing what they are bad at and hate.


I don't farm or paint on a professional basis. I don't even do so as a hobby; although I constantly threaten to take up gardening, it seems to be one of those hobbies that hasn't stuck yet.

And yet I'm glad that, when I was a kid, people encouraged me to plant things and paint things.

Just because learning to code is societally approved doesn't mean that kids shouldn't be encouraged to practice it for fun. Trust me, if the kids decide they hate it they'll figure out how to avoid it as much as they can in the future. They're good at that.

Mind you, your attitude that you shouldn't expect your kids to take after you is a healthy one, and I don't want to discourage it. But don't take it too far. It's good that people are trying to figure out better ways to teach kids about programming.


There's a difference between forcing them to write code, and making the learning materials they need to write code readily available.

It's very possible that I may not be a programmer today if my best friend's dad hadn't pulled out an old Apple ][gs and had us hack away at it for an afternoon.

We found a demo floppy that had a BASIC programming tutorial on it, and from there I got hooked.


Indoctrination? What?

It takes a certain talent to write or play music, or paint, or do science. We encourage kids to try all these things, most won't pursuit them, some will. The kids choose without coercion.

How many parents encourage kids to learn how to code compared to the number of parents that encourage their children to do the above mentioned things? It is the children who decide what they want to do, it's about offering them a broader spectrum of things to choose from.


It takes a certain mindset to write code. Not everyone has it or is interested in it.

It takes a certain mindset to make a living as an author, and my kids might not have that. But I'm damned if I'll let them grow up not knowing how to read and write.


We had programming classes in high school in Romania, teaching Pascal or C. They don't really work. Some students don't understand programming. Others don't care. Only 20% of a class can actually program very simple programs by themselves. Only one or two can really understand what is going on. And sometimes they just want to do something else.


I'm Romanian, not everyone takes programming classes, very few do, only those enlisted in Mathematics-Informatics (in Romania curriculum varies greatly depending on what profile did you chose).

Indeed it has many problems. The first problem is that the Mathematics-Informatics profile in high school is considered elite, and every parent sends its children there. The effect is that the class will have the best, most intelligent students, but not necessarily the students interested in the curriculum. Neither the children or the parents know anything about the curriculum, all they know is that all the smart kids go there.

I've been in this class in one of the top-5 colleges, nation-wide. Some poll in the final year yielded 80% of the students hating both math and programming. Most preferred literature. Because of the inherent bias in Romanian education, the highest graded students will always be the ones who like liberal arts, and not the ones with a mathematical background and because of the way enlistment to high school works, these will be the ones that end in this class.

I mentioned I was in one of the top 5 classes nationwide to illustrate the second problem. Even though I was in one of the best classes, professors that taught programming were execrable, both in their talent as educators and in their talent as programmers. Incompetent is a word that's too mild to describe them. Reasons are easy to guess, high school teachers are paid poorly and anyone with any talent in CompSci will find a better job elsewhere. It's funny that the only two skilled professors that taught programming were two guys that did something completely different and only taught at high school because they enjoyed teaching and working with young students.

The third problem is that the curriculum is very abstract, way too abstract and far from reality, and very old, nothing feels like today, students are still required to write DOS applications with a DOS editor.


Math classes are no different. Only a handful of students will solve a math problem by themselves, others will just wait for teacher to show them what to do, and then repeat the procedure with hardly any understanding what is going on. The exams consist of problems that were already solved in classroom, it's enough to memorize the procedures and apply them to tasks on exams.


I agree that it takes a certain mindset to understand how to read/write code. However, simply offering it as an option in k-12 education doesn't seem like too bad an idea, so long as it is a child's choice to experience programming for themselves. Of course, the courses would definitely need to be interesting to grab a child's attention.

I know I would have loved programming in my younger years, just didn't have too much access at the time. That's at least my two cents :-)


This is something I don't quite understand. Yes, it takes a certain mindset to write code: mainly, you have to be able to convert a fuzzy process into precisely defined steps that generalizes over a range of possible inputs.

Is it something that most people really can't do? If so, that scares the hell out of me. And not because they can't write computer programs, either. My concern is, how sloppy is their thinking in general? How easily do they fall for circular arguments, or succumb to "lost purposes", where what they do no longer has any connection to their goals?


A-fricken-men. I have an allergic reaction every time I come across one of these posts about "how do I teach my kid to code." The whole sentiment strikes me as extremely myopic.

I'm all for providing exposure to a variety of things in school and at home, coding included, but we need to let our children be themselves. Give them exposure, let them taste what the world has to offer, but don't compel them to be the über-coder that you wanted to be.


Raspberry PI, installed with an editor and some programming environment, with links to (or local versions of) some good reference and good teaching system (maybe better versions of Learn Python the hard way?) and, finally, a paper notebook and pen.

Include group work and gentle supervision.


There's a huge and important distinction between “we should try to teach all kids to code” and “all kids should be able to code”, and it tends to get lost in the discussion.

Programming just isn't for everyone (and that's OK), but everyone should give it a try to find out.


Agreed - we teach math in schools not to make everyone top talented Mathematicians, but to teach a skill that might be useful in life.

Teaching programming in schools would probably get the same result was teaching math: courses that normal people promptly forget a year after school. Because, really, how often have you factored a polynomial?

But still, you got a little taste of Math in school. Maybe you liked it, maybe you barely made it through math. Same thing would happen with mandatory programing classes.

Thinking the talent crunch will be solved by teaching CS as part of mandatory education is probably wishful thinking.


I've taught several basic programming classes. The ability to code differs wildly. Like sketch art, some people can't draw to save their life, while others do it effortlessly. Having a programming class as an elective would be good, but it shouldn't be forced on people who have no ability for it at all. Not everyone can be great at everything.


Not sure I buy that arguement.

You wouldn't accept that if we said: Well not everyone has a "natural ability" to read, so we'll only teach the people that are show some "talent".

(Quotes because I don't actually believe those things exist, you can be taught everything, and be good at everything).


I don't think he's saying some people literally can not program one line of code. As with everything there are degrees of aptitude based upon ones interest, personality type and cognition. This is true with every skill in life - most people show degrees of aptitude in different areas. (As a note, Ive always struggled with being good at reading since I was a kid... Im really damn slow and have a hard time concentrating)


So are you agreeing with not teaching reading to people (such as yourself) who struggle with reading, because they don't show an interest/aptitude?

If that's the case, which subjects are the "essentials" that should be 'required' and which ones are 'elective'?

I'm not sure I think coding is up there with reading, or arithmetic... But it's probably more important than some currently required subjects.


Essentials are foundational subjects that have the highest probability of preparing a student to become more productive and useful to society. So your question about required versus elective courses centers around 1) what society collectively decides is useful and 2) what a student at a certain level can practically grasp and grow from. I think we'd both agree reading is an essential by this definition but truthfully socially and communally controlled influences make these decisions (thing like the economy, elections, and enrollment) not you or me.

The problem with discussing this on a forum on HN is that we're all biased. We all think programming is incredibly important to society because its incredibly important in our lives personally. If you go onto any forum where everyone has a collective interest, they'll all say subject A should absolutely be taught in school because of X, Y and Z. Truth be told on a macro scale every skilled field is battling for the attention of capable students to eventually join their ranks.

I think what many on HN are missing is that if your going to introduce programming (especially as a core subject) into formal education, you'll need to sacrifice other subjects to make room with the way education budgets work. Of course everyone is going to say something like oh well you should cut down on art, music, social studies etc but its not a helpful perspective unless expressed in a truly diverse forum.


Coding is easy and can be learned in a matter of months by anyone with a basic understanding of computers.

I'd rather teach my children things that get them out of the house exercising and learning to be friendly, well adjusted humans.


I have a 10 year old son who seems a natural to take an interest in programming. I tried starting him with a Basic interpreter cause that's how I started, and he struggled to stay interested - largely due to the non-graphical nature of the output.

The next thing we tried was Kodu from Microsoft (http://research.microsoft.com/en-us/projects/kodu/). He found that enjoyable - very visually appealing and you can get something basic but interesting running quickly. Getting something moderately complex became hard however due to the limited palette of design tools.

The next step was Scratch (http://scratch.mit.edu/) which is a step down in eye candy but a step up in control. You get a lot more flexibility but it is still very approachable. Everything is visual as well, which makes it really easy to see what's happening. Scratch allows variables and lists, control flow structures, etc and thus gets into "real" programming.

However, Scratch has some big limitations, especially around instantiating new 'objects' at runtime. I think the next logical step forward is Stencyl (http://www.stencyl.com) though there's some additional layers of abstraction that are causing a little consternation.

I keep trying to push Python and Java, but for my son at least, not being able to start with something visual is a big drag. Maybe next year.


I just tried out Processing [0] right now, and it seems like you get a lot of control in it, and it looks pretty good on the eye candy side too. You could try that out.

[0] - http://processing.org/


The year was 1986, and I was on my first Disney World trip. After a couple of days of traveling up and down Florida visiting the various theme parks, my parents decided to stop at a local electronics shop.

Now, back at home we didn't have many fancy electronics stores, so this huge emporium of transistors was pretty amazing for all of us.

My mother hinted that they were going to buy us a Nintendo (NES), and I was ecstatic. I had never heard of such thing, but seeing Super Mario Bros. on the display machine was pretty mind blowing for an eight year old.

But, my oldest brother (who was a bigger nerd than me) did not want the NES. Crap. I was furious, and really disappointed. Instead, he wanted some stupid computer. It was big, bulky, ugly (light brown with black function keys!), and required a huge monitor to be of any use. It also required a disk drive (a 1541 model).

Yes, my brother wanted a Commodore C64.

So, my parents decided against the NES (oh the humanity!), and purchased the C64 with a 13-inch (I think) color monitor, a 1541 disk drive, and a color dot matrix Okidata printer. They must have spent like a million dollars. An amazing feat, because we were barely middle class.

After learning how to turn it on, writing to the diskette, printing demo images, playing Ultima, I started to code some BASIC. Nobody taught me, I just picked the manual and started coding.

My first programs were something along the line of:

10 PRINT "HELLO" 20 GOTO 10 30 END

Now, for an 8 year old kid who was teaching himself how to use the damn thing it was pretty awesome to pull such simple programs.

Then at age 9 I bought my first "computer", a Tandy PC-7 at the local Radio Shack (after saving my lunch money for months).

Now, as a hacker/programmer/software engineer/whatchamacallit I look back at those days and appreciate what my parents and brother did.

Such experience has led me to teach my nine year old niece how to "program" in HTML. She enjoys it very much, and even asked me to put Ubuntu on her desktop. My daughter will also learn how to code, even though I don't expect her to follow in my footsteps.

tl;dr: Teach your kids how to code. They might go on to become hackers themselves.


A few people have mentioned simple computers and BASIC.

They may be interested in these links.

(http://hackaday.com/2012/01/23/maximite-harkens-back-to-the-...)

(http://geoffg.net/maximite.html)

> The Maximite is a small and versatile computer running a full featured BASIC interpreter with 128K of working memory.

It will work with a standard VGA monitor and PC compatible keyboard and because the Maximite has its own built in SD memory card and BASIC language you need nothing more to start writing and running BASIC programs.

The Maximite also has also 20 input/output lines which can be independently configured as analog inputs, digital inputs or digital outputs. You can measure voltage, frequencies, detect switch closure, etc and respond by turning on lights, closing relays, etc - all under control of your BASIC program.

The design and the firmware including the BASIC interpreter is free to download and use.


> try telling that to anyone who has tried to hire developers in the past three years. Sure, much great talent is out there – but the supply and demand balance is off the scale.

Really? Computer science has the highest unemployment rate of all degrees in the UK.

http://www.bbc.co.uk/news/10477551


Yes, really. That's an interesting link, thanks. But to be honest, I don't find the stat surprising. I spent a term studying CS at Surrey in 2004 - I couldn't immediately find the 2004 rankings but it ranked 8th for CS in 2008:

http://www.thecompleteuniversityguide.co.uk/league-tables/ra...

That first term consisted of multiple choice exams in C and HTML, where one of the questions didn't have a correct answer.

In short, I sadly don't think that any lines can be drawn between 17% unemployment of CS graduates and a supply of great available talent.

Speaking as someone who's processed 200+ applications and hired 7 engineers in London the past 2 years, sharing stories with my colleagues at other companies - great talent is very hard to find.


Given those data points, the logical conclusion is that the article means the supply and demand balance of talented computer scientists is off the scale, and that the reason the field has the highest unemployment is because it is saturated with individuals lacking sufficient talent.

It seems kind of cold, hearing myself say this, but before concluding the article is 'wrong', I'm inclined to explore possible alternative interpretations.


So we want them to learn problem-solving (i.e. "given tools, solve problem" for any set of tools and any problem.) Given the experiences I've had trying to teach things to programmers, I'd like them to learn problem-solving, as well. Most programmers have a small tool-box of solutions (i.e. languages, libraries, platforms, &c) and the bad ones (i.e. most of them) run DFS over that tool-box until the problem appears to go away, and start quaking in terror if you give them new tools or radically different problems.

Programming is a kind of problem-solving. Learning it makes you better at solving the kinds of problems it solves. I have seen no evidence for the assertion that the kind of discrete-approximation problem-solving style inherent in most programming necessarily makes you better at solving problems in the general case.


Way back when, the BBC funded a programme that gave schools BBC Micro Computers and even had TV shows supporting the education and awareness... we should be embarrassed that TV today is more about the objectification of women and the whim of producers who have saturated the topics available for quality programming.


We're trying really hard to educate the next wave of talent... a lot of open-source community effort in the Ruby community.

http://www.kidsruby.com


I was introduced to QBASIC when I was little. I found (and still find) programming tedious and unfulfilling, but it did prepare me for when I needed to know basic HTML to publish a static blog a few years later. The early stuff probably wasn't essential since I would have picked it up to make basic websites and blogs later, but it might have helped a little.


I remember when we got our first computer, my dad won't let me play any games for more than a few minutes a day, but I could play the games I wrote myself as much as I wanted. That was a brilliant idea - it gave me the taste of the good games, which was a huge motivation. It did take a while to create an actual playable game (back then we didn't have easy to use graphics libraries like Processing), but then it all became easier after.

Most of my friends with computers at that time spent 5-6 hours a day playing games instead of learning.


This seems like an excellent technique. Although I think it'd be much harder today.

In my childhood I'd be easily entertained by a text adventure or a pretty simple sprite based game. Now a days your kid would have to create the next Call of Duty.

Perhaps a strategy that would make more sense in today's world is to get them the Valve Hammer Editor (or equivalent SDK) and instead have them make levels for their favorite game engine.


Last summer I taught introductory programming courses for middle-schoolers, and one of the first things we did was play Zork for about half an hour, as a class. Then I started showing them how to make their own text-based adventure game with rooms, a basic inventory and simple puzzles. All of my students were having a blast with Zork, and they seemed to find making text adventure games highly rewarding. I think you underestimate the imagination of today's kids.


I second that sentiment. I think text adventure games engage your brain more than, say, battlefield 1942. Similar to perhaps books vs movies/tv.


One of the first games I wrote as a teen was a (as simple as it gets) text based simulation/adventure dealing with horse races (I read The Difference Engine at that time). Even though it wasn't sophisticated at all, it felt interesting (and good) to play one's own game (and to think about the story and how to develop it further).


Massively popular games like Angry Birds are much simpler than Call of Duty. The basic mechanics of such a game are easier to create with today's hardware and tools than a sprite based game was a long time ago. Sure, you won't be able to get anywhere near the professional game quality, but you can still have a lot of fun. I remember buying a C++ game development book that spent a couple of chapters before getting the first shape on the screen with the Windows API. With tools like processing.org the same takes 2 minutes. You can probably get a simple game up and running in the time I spent getting the C++ compiler to install.


Developing angry birds whilst considerably simpler than Call of Duty is not that simple.

At a minimum you have to implement smoothly scrolling graphics and quite a lot of physics. Of course there are libraries available which help with these things but then you have a lot of documentation to read (if it even exists).

I believe angry birds cost in the region of $100,000 to develop. Not really a learning exercise for a child.


Sure, but I'd imagine the bulk of that is spent on things that don't really matter in the context of kids making a game for themselves.

How much of that cost comes from sound, fairly slick graphics and animation, and the iterative polish needed to make a good game into a great one. I suspect that those things account for the bulk of the development cost.

The standards of polish for a hit game are far removed from what matters for getting kids into programming. The past generations making their text adventures didn't, for the most part, need to match the quality of Zork, and the current generation doesn't need to match Angry Birds. The point is to get them far enough that they could make something kinda sorta like it.


I'd be hard for a kid to make "Angry Birds" because of the block tumbling/collision physics. From experience, though, simple platformers, tank games and tron clones are within the reach of children with minimal instruction. A language/environment designed for that sort of thing helps a lot, though. We used QBasic, I'm not sure what you'd use these days.


I believe that Angry Birds uses Box2d for physics. A kid could do the same. With such a library the task is much easier.


I dont believe that.

My first serious programming was Povray scene desciption language on a 486dx2. (yes, it was turing complete)

The joy of programming was not in ipressing anyone with the fancy graphics, but tweaking and trying new things to see what would happen - being creative.

My older brother and I, actually messed around with a hybrid Autodesk Animator / text based adventure, earlier. I think it was batch file based, but nothing came of it. Still, it was great fun to mix together sprites from my favorite dos games.


While that would be cool, it's not programming.


You'd be surprised. I got started in programming by making Warcraft 3 maps. The trigger editor is a visual programming language in itself.

I've made everything from simple RPGs to genetic algorithms that evolve micro strategy in AIs using the Warcraft 3 Map Editor alone.


Now a days your kid would have to create the next Call of Duty.

Your mileage may vary: my kid was quite happy to muck around with a text-based game he crafted.

Then he laid it to one side: he's enthralled by actual engineering: building things made out of atoms, not bits.


This made me laugh as I remembered my initial hourly quota for dial-up internet access :) But yes, similar story for me - programming my ZX spectrum to make my own games was where I started out.


My dad did the same thing. Thinking back, the first thing I remember doing on a computer is writing a calculator in BASIC. Before games or anything. To this day I still choose coding over games (ok, most of the time).


I had this exact idea for my [expected future] children. I'm glad to have at least anecdotal evidence that it works.


We'll reuse that with my own kid. Brilliant idea.


I think it would be healthy to limit even the time playing one's own games.


I think the author has not met enough variety of people.

Yes, all schools should have a fantastic Computer Science department. And it should be more than CS, it should be "doing fun stuff with computers". However, there is a very large segment of the population who cannot program.

I've got a friend who's quite smart. She's charming and extremely capable at her job. I discovered that she has absolutely no ability to think in three dimensions. She cannot follow even a very simple series of motions. She parked her car near a post, came out, got confused, and destroyed the whole side of her car because she couldn't work out the spatial problem to get out.

I've known people who simply cannot grasp calculus. They're interesting people who offer value in the world. Calculus is a fundamental and wonderful thing to know, but that doesn't mean everyone can or should learn it.

I love programming, but I respect the variety of humanity enough to understand that it should not be mandatory.


You have no idea whether the author has "met enough variety of people." You have no idea if people are innately able to program, learn calculus, or "think in three dimensions" (btw - driving is a 2d problem). I don't. You don't. No one does. We do not have a framework for discussing the fundamental (genetic) basis of human intelligence. We do not understand even its most basic components. Some people seem to have "good memories" or be "fast at computation" but that's about all we can actually, honestly, meaningfully say. Culture is so ridiculously complicated and so powerful that it's impossible to impossible to distinguish between what is innate and what is imprinted. The fact that basically no one is able to predict the intellectual abilities of future humans is an indication of this (e.g. what would a mathematician from the 19th century say about the "fundamental" mathematical abilities of his fellow humans?).

The point of the article is that coding is in some sense a core/intrinsic skill. That anything you do is actually deeply tied to coding in the sense that "something you do" (technology, in the general sense) is equivalent to "algorithm." Weaving is coding. Playing a game is coding. Building a house is coding. Painting a picture is coding. Proving a theorem is coding (Curry-Howard Isomorphism). Sure, they're different, more intuitive, weird types of coding, but the fact that you can't see that they -are- coding implies a limitation on your ability to abstract the concept of "coding" sufficiently.

The fact is that coding is a deeply human activity, and that by understanding coding we are really understanding ourselves and the fundamental means by which we -collectively- understand reality. The fact is that we need some shared understanding of ourselves, of our logical facilities, of the basis of our ability to produce and thrive and know how to interact with the universe. Without a shared framework, communication is useless/impossible.


You have no idea whether the author has "met enough variety of people."

Which would be why I said, "I think..."

driving is a 2d problem

Uh. Okay, sure. I submit to you that it's possible I was referring to more than simply driving, and that your claim of driving being a 2d problem is just silly.

Programming is not a deeply human activity, not in the least. It involves strict, logical thinking, abstraction, and hierarchy. You disrespect the variety of humanity by claiming it to be intrinsic.


Are you sure it's not just that you or someone else is not good enough at explaining it? wink

Seriously, though, while I'm of the opinion that people learn different things at different speeds, I have yet to encounter someone who was simply unable to grasp a mathematical concept or a concept in CS (not counting some people I know with debiliating mental illnesses).

The trick is to break it into smaller and smaller chunks of logic until people get it. As long as these people are capable of basic arithmetic, I think it's possible to make them 'get it'. And yes, teaching can be very hard.

Having said all that, I do agree with ^ that programming should not be mandatory.


I have yet to encounter someone who was simply unable to grasp a mathematical concept or a concept in CS

I honestly don't know what to tell you. We can do the whole, "some people don't get it," "oh yeah, you just didn't teach it right," circular nonsense all day. I don't really care. All I can tell you is that I've been close to a number of people who would never be able to grasp programming in any meaningful way.

HN is an echo chamber of highly intelligent people, a disproportionate number of them in the Bay Area. I don't think HN participants have much of value to say about what people in general can and cannot do or understand.


Me and my son (aged 15) are trying to develop our first iPad app but he is not interested in the programming side at all. He is happy drawing out stuff on paper for the levels etc... So am not forcing the programming no him, if he has no interest. I just want him to have the experience of getting a app on the app store and knowing he was part of it.

We are using the Corona SDK (in case anyone is interested).

Dave


So the title is misleading. Really, he's saying we should teach our kids to think like programmers, not to actually teach them code which is a far better idea.

In all honesty, people have an aversion to code like they have an aversion to anything math related besides simple arithmetic. I also disagree with his slight criticism of Codeacademy as being a place where people simply learn syntax. I was 10 years old when I wanted to know how we pages were made. I learned the HTML, then as I grew older learned the syntax. I only learned what I wanted to get something done. Eventually, through learning simple syntax I gradually began to understand the logic and theory behind programming. Of course I got much deeper into it during CS classes in college. My point is, people get turned off by code. Teach them how to print 'Hello World!' and you eventually teach them the underlying principles of programming in a sneaky way. It's like wrapping medicine in a piece of cheese so your dog will swallow it. If the dog knows its there he'll likely spit it out.

The title got me angry at first. I don't think we should be teaching children any specialized skill they don't have an interest in. My father is a pilot and tried to make me like flying because of the same kind of "this is good for you" thinking but it didn't work out. Also, as far as everyone using computers but only a few programming them, I think that's fine. It's more important that people get a broad overview of how hardware and software works and thats all. Does everyone need to know how to rebuild an engine to drive a car? No. Knowing how to check fluid levels, change a tire, and filter your oil will suffice.

Maybe I took it wrong but we don't need to teach our kids to code. There are a lot of ways to teach critical thinking skills (which is what he's getting at). Critical Thinking was a first year college course I was required to take. They should be teaching that course far far earlier here in the States. I was in AP classes all the way through school and even the Advanced Placement kids weren't offered a course even close to critical thinking.


I completely agree. It's a shame, I remember in middle school the excelerated writing class would be the only class that was learning about critical thinking. My problem was that the teachers were under-mining the capacity for other students in being able to handle that topic / skill.


So you don't think kids should be taught to read if they don't have an interest in it? What about math?

Computing is a basic skill on the same level as math and literacy. It's only getting more important. You don't have to be an aspiring author for reading and writing to be relevant to your life. And you don't have to be an aspiring software engineer for basic computation and programming ability to be important in today's digital, networked world.


"Computing is a basic skill on the same level as math and literacy"

Its actually not as basic of a skill as math and literacy. Proof of this is that it takes math and literacy as foundational skills to then program. I agree that programming is a good skill but please don't pitch coding as being at the same level as basic literacy. The difference between someone who is illiterate and someone who is illiterate at programming is vastly different.


It's getting less different over time.

Let's go back a few thousand years and ask Plato. Suppose he says "Literacy is not as basic of a skill as speaking and remembering. Proof is that it takes speaking and memory as foundational skills to read and write."

He's probably right for 500 BC. You could get by just fine without reading or writing. Literacy was for specialized purposes such as government record keeping. But society grew more sophisticated, to the point where, in the last century or two, it's hard to get a job or function on a basic level in society without being literate.

Well the world turns quicker and quicker. It used to be that one could get by on brute force mental work. But a mere 70 years after the first gigantic electronic computing machines, computational automation is becoming a necessary part of our lives. It may be possible to avoid it now, but it's getting less possible every day.

Abstract computation is a new way of processing and understanding information. It is the next stage in the evolution of information processing, beginning with spoken and then written language. It isn't on the same level as speaking and reading yet, but it's getting there, and we won't do our children any favors by letting them think it's optional.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: