
My New Strategy for Teaching Kids How to Code - jayro
https://plus.google.com/116160612483689327039/posts/WnwqbgAqewP
======
AceJohnny2
The "Don't Patronize!" lesson is new and interesting to me. Come to think of
it, I remember being first introduced to programming with Logo and its
"drawing turtle" back in elementary school. While fun, it didn't spur much
exploring for me then because I didn't see its possibilities out of that
sandbox.

Only when I encountered C, a "real language used by adults!" did I really get
interested...

~~~
Pitarou
Logo is misused. It was never intended to be a tool to teach programming. It
was designed as a tool that made the conceptions of Euclidean geometry
available to direct experience and interaction -- and I think it succeeded
passably well. For instance, if I were asked to calculate the internal angle
of a heptagon, the first thing I'd do is reach for my mental turtle.

Still, I think starting kids with C is a bit much. What's wrong with Python?

------
ronilan
Based on limited experience with younger kids and
[http://scratch.mit.edu/](http://scratch.mit.edu/) the "cuties" (i.e. cat
image etc.) are a distraction. I have a hunch the real browser apps idea is
not as crazy as it sounds for kids who can type.

------
pramalin
I haven't read the article yet as Google+ is blocked at work. I'm coaching
young kids for First Lego League tournaments this year and witnessed that the
Legos Mindstorm robot platform ([http://www.lego.com/en-
us/mindstorms](http://www.lego.com/en-us/mindstorms)) makes the kids really
excited about programming. Here, one is introduced to programming through very
easy graphical environment and can progress to high level language based
programming in C, Java etc over time.

------
jrochkind1
i'm pretty sure this will work.

Weren't most of us old school nerds programming with 'real tools' when we were
9-13, after all?

Of course, the 'real tools' were a lot simpler then. But the motivation of
actually building something real should not be underestimated.

~~~
pbhjpbhj
I'm not a proper programmer but I started on the BBC micro's BASIC with:

    
    
        10 PRINT 'I AM AWESOME '
        20 GOTO 10
    

What's the current equivalent to that?

------
benohear
Jason, this is amazing stuff.

As the father of an 8 year old, I'd love to know how you got the kids to the
point where "Create a web page called big-green-circle.html" and "Hint: use
the events onmousedown and onmouseup" made any sense to them.

(alternatively, just put your curriculum in an ebook - I'm sold already)

------
bobx11
I learned basic first, then c++, THEN the web started and seeing how a little
markup and some javascript or vbscript (yes, that was in ie back then) could
make an interactive experience, my interest in programming and creating things
exploded. I vividly recall the first time I made a static site, the first time
I ranked in altavista for a term, or other things that people could related
to. It connected a freakish hobby (telling a computer what to do) with the
real world that other people could consume and relate to.

Building static sites, I completely endorse.

I don't understand why they should use a VPS to do it.

------
stephp
100% agree with #1! I would have written the heading as something like "Be
relevant," though-- a little more focused on what you were saying about using
real tools.

I remember thinking this while watching a TED talk by a guy who created one of
the programming-for-kids websites. Like, cute game and all... and I suppose it
ingrains concepts like variables and "for" loops and whatnot, but how
intimidated will these kids be when they see real code files in an IDE? That's
the real barrier to learning to code, I think-- especially for little girls.

~~~
Angostura
My 10 year old daughter, who expressed an in interest in coding is currently
churning her way through Codacademy and really enjoying it. As I am.

~~~
stephp
Awesome!

------
drakaal
I taught Kindergartners to code using "Project Europa" it was truly Object
oriented, didn't require them to learn syntax, and they loved making Robots do
things. TC Lego Logo is a good choice as well.

The problem with most devs trying to teach kids is they don't know how to make
it approachable, and to have draw. "I can make the robot dance" is both. "I
can make a web page pretty" doesn't appeal to every kid, and the amount you
have to do to see something do something is a lot.

------
sopooneo
Jason, if you're reading this: bravo. Finally finally _finally_ an article
about teaching by someone that is actually doing it and seeing it through.
Your words ring true because you have such extensive first hand knowledge. I
used to teach, and the amount of general misconception about the craft is very
frustrating.

Embarrassingly: how do you create a color changing circle on the screen? A div
with border radius?

Anyway, big fan of your podcast also.

~~~
marcosdumay
Not the author, obviously...

You mean the photo? It's an img with a border radius and a shadow.

~~~
sopooneo
No, I was referring to one of the challenges he presents to his students.
There's a link in the post.

------
wil421
I like these types of things and for someone who picked up an interest in
coding while in college. I wish I had resources like this when I was a kid.

I wish the programming community in general was more friendly to newcomers. I
see people tell others that only CS people should be doing this don't even try
a lot.

------
dpaluy
I started teaching kids Ruby on Rails with Nitrous IO virtual web environment
and it's pretty good.
[https://www.nitrous.io/join/ByKc2ypawx0](https://www.nitrous.io/join/ByKc2ypawx0)

------
krrishd
Maybe you could check out teen2geek.com when its released? It's mainly for
students like yours, so that could be helpful to them.

------
SkyMarshal
This deserves a mention of the "Scheme Story" [1] linked in PG's essay
"Beating the Averages" [2]. Conceptually similar to "don't patronize".

However:

 _> Unsurprisingly, I've found that gamification works._

I suppose it does for plenty of people, but personally I'm not a fan. Saying
"don't patronize" and then adding badges, points, and the like as enticements
triggers some non-trivial amount of cognitive dissonance in me. Then again,
I'm an adult, maybe it provides a structure children need and I've long since
lost touch with that.

But a deeper problem with it is that to gamify something you have to measure
it exactly, you get more of what you measure, and it's all too easy to measure
the wrong things (or even to measure the right ones but still have undesirable
untintended consequences).

It strikes too much of teaching to the test, which isn't the best way of
cultivating creativity and innovation in students. Students will optimize for
that gamification system, instead of optimizing for depth of understanding and
creativity and, perhaps, self-efficacy in real world unstructured situations.

Which also begs the question, when teaching young kids, should we be focusing
on drilling them in a body of knowledge, or first developing a hacker
mentality - curiosity, resourcefulness, and determination to figure this thing
out and make it do what you want?

In that light, I find the recent Wired article on the "radical new teaching
method" [3] of just giving kids computers and seeing what they do with it much
more interesting.

It's well documented that children pick up foreign languages much quicker than
adults by mere exposure, might it be the same for computer languages?

How about try giving the class a bunch of Chromebooks w/ a terminal app and
SSH, and their own AWS t1.micro, and see if they can figure out how to set up
a website, using whatever means they're able to (even Amazon's excellent
documentation).

Get a static site up, then build on it from there - HMTL -> CSS -> JS ->
backend whatever.

Web development is not exactly hardcore programming, but few things are as
exciting and captivating as seeing your own website on the Internet for the
first time, and the combination of that plus the relative ease of figuring it
out would be perfect for 9-13yr olds, I think.

[1]:
[http://www.trollope.org/scheme.html](http://www.trollope.org/scheme.html)

[2]: [http://paulgraham.com/avg.html](http://paulgraham.com/avg.html)

[3]:
[http://news.ycombinator.com/item?id=6553155](http://news.ycombinator.com/item?id=6553155)

~~~
jayro
This is a valid sentiment / concern that was also raised in the comments
section of the Google+ post. Here's a mildly edited version of my response.

...

When you don't formalize the challenges, the kids just kind of meander, don't
get much accomplished and things start to devolve into chaos. I know there's
been a bunch in the press lately about how if you just poke a hole in a wall
and stick a computer in it the kids will teach themselves differential
equations or something and then of course teach it to a bunch of the other
kids (believe me, I'd love it if it were that easy), but that's not been our
experience at all. Not remotely. We've tried that a number of times in a
number of different ways (because you know - it's easy) and when you're
feeling burned out from work or didn't have time to write up a bunch of
challenges, it's something you can rationalize trying, but we've NEVER seen
that work. Occasionally, one of the kids will look something up on the web or
figure something out on their own and tell the other kids about it, but that
rarely gets them very far.﻿

...

Just to add to this a bit in the form of a slightly different technology. I
bought a few Mindstorm kits last year for the class, wrote up a bunch of easy
to read documentation and examples and basically told them to go at it, but
even with that and the occasional soft intervention, not a whole lot happened
in terms of learning. And we tried this a number of times throughout the year.
Sure, they learned a few basic concepts, but the efficiency was extremely low,
and nothing much was learned that was transferable. This is also pretty much
the same story I heard from every well-meaning, thoughtful and supportive
parent who bought their "gifted" kid a Mindstorm kit. They basically played
with it a few times, mostly with the legos and then gave up and left it in the
corner.

...

In regards to the concern about teaching to the test, I make up new challenges
every week based on how the kids are progressing, what they're struggling
with, what they're excited about, what the next logical learning step might
be, etc., so it's not like there's something static that they can optimize
against or cynically "game" without actually learning how to code.

Also, while we're very focused on whether they're having fun, exploring and
being creative, at this stage the primary goal is to give them enough
fundamental skills to be able to do ANYTHING interesting. I mean it takes a
lot of work to get them even to that point, and we're not there yet. And the
thing is that we're competing against very attractive distractions like
Mindcraft and YouTube, as well as all the homework they have to do and the
other activities they're involved in, so it's not like being relentless task
masters would even fly with them. They'd simply quit.

To sum it up, what we're attempting to do is extremely hard. We're not idiots.
And we're really trying. I've probably read just about every related article
that's popped up on HN over the past two years, plus 100 others on learning
theory and creativity, but a lot of these articles are just people spouting
off who've never really tried it in the real world for any length of time or
with kids this young, and I can tell you that a lot of it just doesn't work,
or not to the degree that you may have been lead to believe. Look, I can't
speak for what works for a every group of kids in every context, but what
we're doing seems to be working, the kids are having a blast, and if we keep
up this pace I think the kids might actually be able to do some real stuff
within the next few months, which, in my opinion, would really be something.

~~~
SkyMarshal
Great answer, thanks, glad to hear you've tested the alternatives and it's
just that I've been away from the child learning picture too long.

Out of curiosity, in your research, did you ever come across any material on
how to teach symbolic logic (be it math, CS, music, or linguistics)
specifically to children not naturally talented in it? This is a problem I've
become interested in recently, but haven't dug into the research yet.

~~~
jayro
Honestly, I can't remember if I have, but it would be interesting to read
something about it. I wonder if it's kind of the same problem as trying to
teach concepts to kids that are just at the limit of their ability to
comprehend even if they are naturally gifted. It's tough, man. My experience
of trying to explain functions, arrays, loops and conditionals to young kids
is tricky, but I think you just have to apply the same techniques as you would
teaching math and eventually you'll figure out some techniques that work. You
can try breaking it down into the smallest of steps and go very slowly with
lots of practice. Sometimes analogies help, but sometimes not. Sometimes, you
can just show them a bunch of simple examples which they'll be able to pattern
match against until they can absorb it, but sometimes not. More than anything,
I think you just have to be patient and experiment.

As an example, my daughter Izzy, who's 7 and in second grade, is really
struggling with her math and it's pretty frustrating frankly. But my wife has
been trying lots of stuff with her like watching Khan Academy videos, doing
practice problems on www.ixl.com, working through Singapore and JUMP math
workbooks, working with physical objects as examples - counting change, poker
chips, or whatever.

The bottom line is that every kid is a little different and what works for
some may not work for others, unfortunately. ;)

Edit: In regards to how to teach symbolic logic to children who may not be
naturally talented, you might want to check out JUMP Math:
[http://jumpmath.org](http://jumpmath.org). They seem to be doing some
innovative things. Here's an interview with the founder:
[http://www.youtube.com/watch?v=g3YWnbxOxMQ](http://www.youtube.com/watch?v=g3YWnbxOxMQ).

~~~
SkyMarshal
Thanks for the info, great interview and site, good start to what I was
looking for, much appreciated!

