
Should kids learn to code? - elemeno
http://www.theguardian.com/news/2015/dec/03/should-kids-learn-code
======
jfaucett
I disagree with this. I feel like the general idea of "learning to code" is
simply typing commands into a machine that then get executed exactly. The
coding part teaches very little, just mainly how dumb machines are compared to
self-aware human beings.

Kids should definately learn how to think algorithmically and understand
mathematics/physics concepts (as opposed to repeating some pattern recognition
which is to often the case) and if some type of coding facilitates engraining
this knowledge I think that'd be great, but as of yet I haven't read a study
that showed this to be the case.

As a programmer, when I have kids I'm not going to teach them how to code. I'd
much rather they spent time playing outside, building things with their hands,
acting in plays, playing music, reading books, writing papers, doing science
experiments etc. Computers are nice tools to help you do these things but they
are not ends in themselves.

this all IMHO of course :)

~~~
mordocai
To be fair, learning to code also teaches how to break down problems into
their most simple pieces which is a very useful skill.

I am myself mixed about the benefits of learning to code. I am currently
leaning towards it being equal to the other activities you list, but not
greater than.

~~~
verisimilidude
When I was growing up (80s), the computer was treated like a black box in
education. You'd sit at the computer, recite the incantations, and the
computer performed the magic. At school, they sat you in front of the
computers and you just tinkered with the software for an hour while the
teacher finished grading papers. At home, chances are good your parents didn't
understand much about computers, so you were mostly on your own, and computers
were so expensive that you didn't dare mess with the hardware.

These days, it's a whole new game. We can give our kids a more holistic
education around coding because we have things like Arduino, Raspberry Pi,
Lego Mindstorms, etc. We can teach code as one among many tools to get a job
done or otherwise affect the world, rather than teaching coding as an abstract
end in itself.

As an example, my daughter wants to build a garden with me in the near future.
Part of that project might include some Arduino-based sensors. If she's
interested, I can teach her all about it. But either way, there's a lot to
learn.

All of this is to say I agree with you, that code is perhaps an equal, but not
superior, among many other ways to help teach a kid how to think.

~~~
tracker1
I would say if your kids have an interest in learning to program, help them,
let them. If they don't, don't force it. There are a lot of things kids should
understand, and anything else can be learned. The guys working on computers in
the 60's and 70's understood them better than most people today working on a
computer, writing software because they had to, and none of them grew up
learning to code.

At 40, I'm well on my way to becoming a gray beard, just the same this
shouldn't be required. Maybe somewhere around 10-12yo, an rPI or similar would
make sense to tinker with in school... but that should only be to introduce
kids to these things.

Kids are naturally creative and curious... let them know something is
possible, and let them choose to explore. I wish there were more schools that
offered elective coursework earlier on the junior high school... it would let
kids explore more in a semi-structured way.

------
malux85
Yes, even if they're not going to become programmers, coding teaches people
two important skills that I see lacking:

\- The ability to break up large, seemingly daunting problems into smaller
manageable chunks.

\- The ability to shift perspectives from the 50,000 foot view, down to the
individual line of code view, and then back up to the 50,000 foot view, and
then back down again!

Variances in individuals abilities can be accounted for - jack might only be
mentally capable of going to the line of code level, but I can see Mary is
getting bored, so she can look at the interpreter source code - they should be
encouraged to seek answers themselves.

I have a close friend who is the head master of a school here in the UK, and
he is really keen to get kids coding, but there's no source materials for the
teachers to learn, I think there's opportunity there for anyone who wants to
pick it up :)

~~~
amelius
These are more "Software Architecture" skills, than programming skills.

Let's not teach kids higher-level organizational skills, but save those for
later. For kids it is important that they can play, and fail often.

~~~
malux85
I don't think there should be a difference, it's just a matter of scale.

When they start off coding, it might mean an entire week spent in a single
python file:

The 50,000 foot view might be "Printing Restaurant Menu", the "line of code"
view, might be getting the price of pizza.

We're not talking architecture, or operating systems, or networking, or
boolean circuit logic, or anything, we're just printing their favourite food
menu - a practical example of shifting perspectives.

Once they can shift easily, then we expand it in both directions - Now print
menus for 10 restaurants. Now find the most expensive pizza.

I think these lessons can go hand in hand with Math -- too often the main
complaint with Math is that it's too abstract (When am I ever going to use
this?!) whereas if the Math lesson about averages tied into the coding lesson
for printing the menu (Now find the average cost of all pizzas) kids might be
able to see it as useful

~~~
amelius
Let me make an analogy: we're not going to teach kids how the food industry
works before we're teaching them how to bake a cookie. We're also not teaching
them about city planning before they had a chance to put some lego bricks
together.

I think the important thing here is that kids need to see the necessity first.
Only then can they start to deal with more abstract concepts. And actually, I
don't think this applies to only kids. I think it is the reason that "learning
by doing" is so much more effective than anything else.

To give an example related to programming. I have seen CS students use
preconditions and postconditions (i.e., assertions), on functions, without
understanding why they were using them. They just wrote those assertions
because the teacher said they had to do it. Of course, the assertions are
useful, but only for large, more complicated, programs. But since the
assignment programs were all small, the usefulness of this particular software
engineering instrument completely eluded them.

~~~
steven2012
100% agree. Trying to teach them to break things up into modules won't make
sense to them, unless they write a 1000 line program, and then go to change it
and things break. They have plenty of time to learn good software engineering
practices, decades in fact. They don't need to be a genius at first strike,
they just need to learn how to code. Trying to teach them perfection at the
beginning is a huge mistake.

------
dboreham
I spent last year on a deep dive into this field, after volunteering to spin
up a coding class for our local middle school (12-14 yo students). I have a
heavy software development background but not much experience in education as
a "provider". I ended up spending several hours every week hands-on in the
classroom with the kids, plus time outside the classroom grading, reporting
bugs in the teaching site we used to the vendor, etc. One of my own sons was
in the class so I got to see something of the student side of things close up
too.

I learned many things from this exercise that could fill several blog posts or
a book.

But no time for that, so some quick thoughts:

1\. It was much (much) harder to teach coding than I expected, even in the
case of the very brightest students.

2\. There is a latent expectation of quite strong mathematics knowledge in all
programming education. I discovered however that this knowledge is pretty much
absent in students of that age. For example analytic geometry is not
introduced until 8th grade (14 or so) so prior to that if you want to show
programming with lines on a 2D plane with Cartesian coordinates, you will get
some very blank looks from the class.

3\. I had assumed that teachers would be able to pick up the ability to teach
coding with my help (we're talking teachers who already handle science or
computer applications subjects). This turned out to be an invalid assumption.
So in order to succeed the class needed to be staffed by "programming
educational paraprofessionals". Such people are by their nature very busy and
as a result we were not able to run the class again this year.

Overall I'd say now that coding is somewhat like musical instrument playing or
art -- something that is well worthwhile having in school, but not a subject
that all students are going to take to. It requires a similar level of
commitment and investment (consider for example that the school employs
several full-time highly skilled musicians and requires around 8h/wk
class+practice time for "band"). To provide comparable resources for a coding
class would be extremely expensive.

------
weego
Should kids learn a musical instrument

Should kids learn to play chess

Should kids learn to play soccer

Yes if it interests them. No if not. I feel like we might have solved this
problem for X a number of times in the past.

I'd also warn against the notion that learning to code magically improves
critical thinking/task management. They are accessory skills that good
developers have or have learned.

~~~
baldfat
> Yes if it interests them. No if not.

If you do that with food you have a grown person eating Chicken Nuggets and
Mac & Cheese for life and not know the awesome food that is around them.

~~~
tracker1
Kids tend to be naturally curious and want to help... let them help, even if
it slows you down. If you cook and let them help, when they are young, they
will learn.

And yes, some people as adults only eat chicken nuggets and mac and cheese...
though to be fair, I spent two years perfecting my mac and cheese skills
(baking vs. stove top, bechamel route vs sodium citrate, sauce and cheese
variations) making it about every other week.

~~~
baldfat
Kids are natural scientist and we always screw that up. BUT pushing them to
try new things is also super important.

------
jeffdavis
Yes, because it's a literacy issue.

By that I mean that learning something about programming is a prerequisite for
such a wide range of things that you will be left in the dark without basic
programming knowledge.

Machines have been complex for a long time, far too complex for everyone to
understand. But generally, even a novice can understand any one particular
detail if they care to. Engines are complex, but you can quickly read up on
the cycle it goes through, and get a vague understanding.

Except how the valves are controlled, because now those are computer-
controlled, so you must know how a computer works to understand. Before, you
could have asked some questions and got an explanation about push rods or cams
or something, and walked away feeling comfortable with that explanation.

So programming has become a fundamental dependency to understanding a wide
range of things

------
cableshaft
Yes. It's almost like math or science or english at this point. They may go
their entire life without using many of the more advanced concepts they learn
in those subjects, but being aware of them is important.

In the same way, they might go their whole lives without doing any serious
programming, but knowing that it's possible to automate a lot of little things
they use on the computer and what they should look up if they ever get the
urge could help empower theirs and others lives.

------
davidgerard
I'll just post my Scratch blog post again:
[http://reddragdiva.tumblr.com/post/127964136013/it-turns-
out...](http://reddragdiva.tumblr.com/post/127964136013/it-turns-out-scratch-
is-probably-the-answer)

There have been many simple languages for kids, but Scratch appears to be the
one that works.

Speaking to my daughter's teacher, it's not just the academically-bright kids
getting into Scratch - the academically average and academically behind ones
do too. It appears to satisfy requirement #1: get the kid _interested._

The important thing learning to program does is teach kids that the code that
runs their world is a humanly tractable thing: that literally _everything_
that _any_ computer does is a more complicated version of a dancing ballerina
animation.

They don't need to become coders to benefit from having an idea of how the
machinery their civilisation runs on works, and not to just think of it as
unknowable wizard magic.

~~~
MollyR
I've noticed lot of web developers I've worked with view hardware as
unknowable wizard magic(or maybe disinterest) . Where do you think the line
should be drawn between hardware/software?

Raspberry Pi seems to have a lot of stuff for children as well.

~~~
davidgerard
Good question! My daughter is a little geek (a gamer in particular ... and
identifies as one) and I haven't got her into hardware yet ... if I can think
of something a Pi could do that would actually be interesting to her, that
would be an excellent approach.

------
zupatol
It always sounds strange to hear a developer job is future proof. I'm a
developer in Switzerland and my main impression of the market is that many
jobs have left to cheaper places.

~~~
jbuss
There will always be people willing to pay more for a better developer.

------
jonesb6
As long as programming remains the single most reliable way to raise your
socio-economic status, I don't think anyone can argue against teaching it to
kids.

------
pinn4242
I was doing x86 assembly coding as a teenager, and certainly didn't need
nudging. I also taught myself calculus, physics, and even material
engineering. I don't see any problem with kids coding. It looks like other
people are comparing it to chess or soccer? I would compare it to Math, which
is taught to people. I'm not sure why people would feel like only certain
people can do it (like soccer or chess). I don't feel threatened if more
people code. Maybe I'll create (another) language to teach my kids if I have
any.

------
spooningtamarin
Kids should learn problem solving skills. Math teachers of today are,
unfortunately, quite different from those of yesterday. So, everyone believes
they can do something more with programming.

~~~
serge2k
So many of the arguments arguments about it are really just arguments for
learning math.

But America sucks at teaching math, so screw that lets teach programming
instead.

------
jetsnoc
I believe children should learn to think critically, logically and learn about
logical fallacies. Writing software can be a means to an end but learning to
type code as a rote exercise without learning to design, architect and write
an application is a pointless exercise.

------
id122015
The article is about what Steve Jobs said, that “Everyone should learn how to
program.." but Steve Jobs did not allow his kids to use a computer up to a
certain age.

As I looked after children I can tell a certainty confirmed by others:
"Millenials are cry babies". Nowadays children as small as a few years old
want to do what their parents are doing, including to have a girlfriend,
before they are able to stop using pampers..

[http://captaincapitalism.blogspot.ro/2015/12/rant-of-
day.htm...](http://captaincapitalism.blogspot.ro/2015/12/rant-of-day.html)

~~~
cableshaft
When I was in elementary school in the 1980s, the cool kids as early as 1st
grade would be "married" with someone during recess.

It's all a part of children playing, there's nothing wrong with them wanting
to have a "girlfriend" like their big brothers or sisters have.

They also want to pretend to be firefighters and astronauts and I don't see
people whining about how entitled kids are for wanting that.

------
steven2012
The answer is "If they want to". Forcing a kid to learn to code is the same as
learning the violin or putting them in football. If they are interested in it,
great. If not, it will be like torture.

~~~
pinn4242
I don't get it. "Forcing a kid to learn English is the same as learning the
violin. If they are interested in it, great. If not, it will be like torture."
What? Coding is another language (and I should know, I created a computer
language)--somewhat. I learned piano, and don't think that should be forced (I
also don't think I'm threatening the jobs of concert pianists). The basics of
coding should be forced, though.

~~~
steven2012
It's not just learning a language. It's a tool to allow you to build computer
applications. Some people simply aren't interested in building apps, just like
some people aren't interested in playing music or throwing/catching a
football.

~~~
pinn4242
Where did we get to apps? How about just command line? I'm not sure if you
create apps for your job, but that's not all of programming. I work on an
"app" for my job, but it's a more-or-less vertical. I really don't see how
teaching a child some command line or REPL (read execute print loop) stuff
threatens my job. Even if that child is in India or something. I'm secure in
my own abilities.

~~~
fucking_tragedy
Is knowing any of that necessary in today's world? Command of the English
language is needed to function in our society and neglecting to teach a child
the subject has obvious lifelong negative repercussions.

Most happy and successful people will never care about typing commands into a
glorified calculator.

------
utnick
One big skill learning to code teaches that is overlooked I think: how to look
stuff up online, research, and find answers.

------
fucking_tragedy
Coding is child abuse unless they're truly interested in learning.

------
graycat
Well, yes, maybe, if the also learn to write, e.g., specifications and
documentation, IMHO, currently the biggest bottleneck to progress in
computing.

------
xigency
Should kids learn to code?

That's a great question. I also wonder if adults should learn to code, or my
peers who would be young adults.

I'm 24. I started programming when I was 10 years old by reading a 'For
Dummies' book teaching Basic. I hardly read the book because it came with a CD
with the language and the language's help system had tutorials which I jumped
into right away.

I spent the next four years developing video games in Basic. I learned C and
continued to make games and also started working on other types of simulation.
I've picked up web programming incidentally, taken courses in high school,
worked as a programmer, researcher, and software engineer, majored in computer
science in college, and have a steady job as a software engineer.

Earning my degree has been amazing for me because it's introduced me to highly
technical aspects of the field that would otherwise be inaccessible to me or
present large barriers to entry.

An interesting trend is for school systems to embrace computer programming /
computer science as a skill and teach it as a class or to introduce it into
the curriculum in general -

    
    
      >  Britain became the first ... to introduce compulsory computer science on 
      the school curriculum for all children aged five to 16.
    

Equally, though, this could be off-putting for many kids. Depending on how it
is introduced, it might scare away those who would otherwise be interested in
programming or less so another design field in computer science. Oddly enough:

    
    
      > “One 13-year-old told me she would rather be in garbage disposal than work 
      in technology,”
    

It's really surprising that this sentiment isn't more widely felt. Maybe it is
the sort of tech-bubble, get-rich-quick, new technology enthusiasm and
excitement that gets people to push through the initial, `this is boring,
difficult, and unfulfilling' feeling that I would really anticipate from
anyone making a cold dive into code.

In fact, I've had the opportunity to mentor some kids around the ages of 10-12
and that's exactly the response I've seen to the programming or code side of
development, where they will be increasingly excited to design applications in
a much, much higher level way. But directing software design should really be
considered a lower field than implementing it, in my very humble opinion.

And this point, about some being disaffected by being compelled to learn
something, underscores another unfortunate fact - and that is no matter how
someone is introduced to computer science or computer programming - something
will be outside of their control.

Some start by programming in Python or JavaScript, some start with C (many
engineers) or Java, others have began with Fortran or Basic or Visual Basic,
and others begin to learn computer science with Scheme. There are so many
vastly different programming languages and platforms that exist, and even
different _programming paradigms_ , and each is easier to use or understand to
different minds.

But it would take an expert oracle to know what the best introduction is for
every individual to give them the best chance of success in computer science.
Some scientists can't even agree on what text editor to use.

    
    
      > Puzzlingly, though, IT had the highest unemployment rate of any subject 
      analysed by the Higher Education Statistics Agency.
    

Here is another annoying fact. In the midst of a rise of bootcamps, there are
still those who can't find jobs. And the fact that so many people can jump
into monthly groups to learn to "program" doesn't mean that there is a stable,
sustainable system for them to work in.

If it is what I believe it is essentially web design or scripting education
that's going around, there's really only a few months of work for any group of
graduates, and the opportunity to float along the top at any organization that
takes them on.

To imply that a bootcamper will become a major technical lead in any kind of
reasonable time or with anywhere near the same level of effort as a regular
graduate seems extremely disingenuous, and the fact that six figure salaries
are being touted as results from these camps seems to show a real economic
failure.

    
    
      > The coding bootcamps springing up in London and Edinburgh are essentially 
      a pop-up solution.
    

That would be an accurate description, although I might be cynical.

    
    
      > ... Scratch, a computer language developed specifically for young 
      children. 
    

I've seen Scratch and I think it's fantastic. Along with Logo and other
platforms for introducing logic and computation, I think it's perfect for
children and new-comers. Compare for example the sort of weights and blocks
that some children are introduced to when learning algebra initially.

    
    
      >  Perhaps that is the single most honest argument for teaching 
      everyone to code: to give everyone an equal shot
    

That's definitely a fair point, but there's never going to be a way for this
to be true universally and that is just a fact. The ecosystem for programming
and development is varied and depending on what you want to do, it's going to
require vastly different skill sets.

Another reality is that there are so many people doing so many different
things and technology is such a competitive field that there is almost a
guarantee that someone, somewhere is attempting to achieve the same thing in a
complete different approach. Who has the fair advantage?

Then it's explained that having experience or skills with computer
programming, 'knowing how to code,' or being introduced to the field results
in `Aha!' moments like ...

    
    
      > "‘It would be so cool if this existed,’ and then implementing it the same 
      day – it’s like a superpower,"
    

In reality, if you have a complicated idea for something that you want to see
created.. it's going to take work. If you have a simple idea, then yes, it may
be simple to create! And it is empowering to have the skills to create or
begin to create something, or to know where to find those resources and how to
begin.

Then this article ends on this point:

    
    
      > "How many young people ... have what it takes to be great developers? ... 
      "But they won’t be, unless we give them the chance.
    

This is probably the core idea to education, school, training, and jobs. In
order to find opportunities... they must exist, and in order to achieve skills
they must be attainable or at least known to someone.

But in the same vein, how many people would make excellent astronauts if there
were a much broader space program? It's something where there's always a
trade-off in time and skill between anything a person might become employed
doing.

Shameless plug, part of why I developed the Duck programming language was to
make a very accessible programming environment, and I still intend to expand
it as best I can to allow easy programming! I'm also working on a new language
that is lower-level and it intends to facilitate clean, efficient and safe
programming while encouraging higher-level paradigms like functional
programming. There aren't a lot of functional, imperative languages out there
that still avoid automatic memory management, and I think that's a loss.

