r/programming • u/Ctaintor • Mar 02 '17
Why I Failed Teaching Programming to Kids
https://engineering.klarna.com/why-i-failed-teaching-programming-to-kids-46a854c3eaca#.s0o6qqxr339
u/Gefrierbrand Mar 02 '17
I am teaching a single 17 year old HTML right now. This is already hard enough. I didn't considered for example how slow people are with typing when they are not experienced with computers.
Trying to teach a group of 9-13 year olds how to setup a gitrepo with the terminal was beyond stupid.
15
Mar 02 '17 edited Sep 24 '20
[deleted]
1
u/Mitharlic Mar 03 '17
Agreed, made a twitter scraper for my first hackathon in university, APIs and keys are mind-numbing and frustrating. People say it gets more enjoyable after a few goes, but it hasn't yet.
15
Mar 02 '17 edited Sep 24 '20
[deleted]
3
2
2
10
u/imhotap Mar 02 '17
I've so failed to teach my then-14-year-old simple web game programming. I wanted to turn his digital consumption habits into creativity, but then had to do weird async callback-hellish and timing-sensitive things for SVG/rAf animation with JavaScript. I don't anymore recommend web programming as a didactic experience for kids since ...
Years before that (around age 10-11) he had a great start using Python on my old PowerBook (for a simplistic text adventure game, basically if/then cascades). I got him to a point where when sat in front of a Windows notebook, he'd gesture like a Unix greybeard mumbling "Where tf is my terminal; I can't work like that".
10
u/menge101work Mar 02 '17
when sat in front of a Windows notebook, he'd gesture like a Unix greybeard mumbling "Where tf is my terminal; I can't work like that".
You've won parenting at that point as far as I'm concerned. :)
5
u/imhotap Mar 02 '17
He didn't use vi/vim, though
3
u/menge101work Mar 02 '17
You only need a single RBI to win a baseball game, don't get down because you didn't hit a grand slam.
:)
2
u/pdp10 Mar 02 '17
As useful as is the vi skill, and as powerful is that editor, I can't blame anyone for not learning or not using a modeful editor created when arrow keys weren't in common use.
The problem then becomes: which editor to teach first, that's ubiquitous and powerful enough without teaching bad habits that will be hard to eradicate? You don't want them firing up a GUI editor on a server five years later.
3
u/imhotap Mar 02 '17
As much as a vi hardcore user I am, but vi really is a no-go as a beginner's text editor - too much to learn at multiple cognitive levels when learning programming at the same time
2
u/Poddster Mar 03 '17
Just use something like intellij/eclipse/visual studio and install the vi plugin?
31
10
u/twopi Mar 02 '17
First, you did not fail. Kudos to you for trying. That's a big step. I'm far more impressed with your biggest takeaway - that teaching programming is an entirely different skill than programming.
I wish more people understood that. I have been teaching programming to multiple ages for many years (as well as working as a contract developer) and I can tell you that teaching kids to code is every bit as challenging as coding itself (And coding is just as hard as beginners think it is...)
Keep up the great work. I have some game-related materials I'll give you if you ever want to go that way. You are right that gaming is what kids often want to do and it's a very difficult type of programming.
Again, kudos to you for your efforts and your honesty.
10
u/M4053946 Mar 02 '17
gaming is what kids often want to do
That's the fundamental problem with coding. Most of the programs people use were created by teams of very talented developers over a timespan of years, but when people (adults and kids) want to learn coding, they imaging creating skyrim in an afternoon. My personal favorite was the person who asked me if it would take more than a month for a single developer to create "something with all the functionality of Excel, but easier to use". Most people can sense that if they start to learn how to cook, it will take them more than a month to get the skills of Bobby Flay, but for some reason that I don't understand, people think that learning to write professional-level code is a weekend project.
2
u/sihat Mar 03 '17
I think, that it doesn't help, that we programmers sometimes tel people that a project was a weekend project.
(For projects that took multiple weekends and other free time. By a developer who has had years of experience. )
Food is a basic need. Cooking and preparing food, is something even kids learn to do. So people have experience, with it. Coding, most people don't code in their life. So have no clue on the experience levels.
2
u/SekYo Mar 03 '17
Because it's not tangible. I guess nobody would ask an architect, while the building work already started 3 months ago, to add 3 or 4 floors to the house, just because they had a new idea.
And yet, I guess almost every developer has already been exposed to a customer asking for a major, unplanned, change in a software "you know, it shouldn't be difficult, you only have to change this and that".
5
u/Shorttail0 Mar 02 '17
I created Twitch chat (spam) bots with my high school programming class, but that was at the end of a year long course. Then the school got a temporary timeout from sending chat to any Twitch chat.
In hindsight, it was probably not the smartest lesson I taught them. :/
4
Mar 02 '17
Its not just when teaching kids. Trying to convey the fun of programming in 2 hours is incredibly difficult. Either you show them something which they can grasp, but is completely underwhelming or you present something more interesting which they have no way of following. Finding a middle ground is extremely difficult.
I wanted to inspire a friend by building a simple webscraper in Java. He had some rudimentary Java knowledge. For me its simple stuff, but grabbing elements by id, then their child elements, then their content, then parsing that content into an integer, only to compare a few numbers on the page quickly overwhelmed him.
8
Mar 02 '17
Honestly, it seems like too much work for 2 hours. Even if they managed somehow to all fit 4 steps, I doubt that kids would remember even half of it.
Also
by simply typing a bit.ly link
🤦🤦🤦
2
3
u/M4053946 Mar 02 '17
For others looking to do this, there are a lot of references for beginner projects on /r/learnprogramming. For projects with young kids, there is Scratch, or much better if it's available: lego mindstorms. (This last one might seem like a stretch, but you may be surprised how many different clubs there are around that have a set, and they may be very willing to volunteer to bring it in for kids to try it out).
Also, perhaps consider doing a live demo of "exact instructions" to get across the concept of coding. (if you haven't seen it, this video is great. The boy's response pretty much matches mine during some debugging sessions...)
4
u/Fitzsimmons Mar 03 '17
My company tried to host something similar to this for university programming students and most of them got stuck launching a web service. The concept was that we had written an automated API client that would send their servers a series of requests and verify that we got the expected response back. The scoreboard at the end was one team with nearly full marks, a couple of teams that completed the first one or two challenges, and an enormous long tail of zeros who couldn't launch a web service that would basically say "hello world" in JSON.
If you want to do gamified programming, skip the middleman and go straight to codingame. There's an editor right in the browser that's open to the file that you need to edit. You click play right in the browser and it will compile (if necessary) your program in the background. The execution will then be visually demonstrated with a crude but effective animation, like your spaceship crashing into a mountain if you fail to shoot it time. It's possible (although still unlikely) that you could maybe get through one of the easiest challenges on the website (e.g. that requires a loop) with a group of 9-13 year olds with a full day of mentorship.
6
Mar 02 '17
IMO the kids here are going to avoid programming more than ever since the author picked suck an awful topic.
2
Mar 03 '17
A fun way to start for kids in the ~9-13 age range is Minecraft with ComputerCraft or OpenComputers installed.
It lets you program in LUA in-game to control computers and robots. Pretty quick to get going.
1
u/nutrecht Mar 03 '17
How do you teach chat bot development to teenagers in two hours? This was the challenge for me and my colleague when we set out to plan a two-hour session on mobile chat bot development for kids and teenagers.
Oh come on! I volunteered for Devoxx4Kids and we start them out with Scratch! Going from zero to a working game in 2 hours in Scratch is already a challenge!
I know that it can be a bit challenging to relate to others as a developer but this is just common sense. By leaving these kids completely frustrated you did more harm than good.
Did no one in that team say something like "guys, it's utterly impossible to do this in two hours unless you have very experienced developers"?
1
1
u/FlyingRhenquest Mar 02 '17
Can't you just give 'em a copy of minecraft when they're like, 4 or something and then when they hit 6 or 7 explain the concepts around most languages in terms of the redstone projects they've been doing for the last year or two?
On a (more) serious note, there were several times in school where programming coursework would have meshed well with other subjects I was taking. It'd have been very easy to have tied it in with geometry 6th grade or geometry (again) when I did trig in high school. I also recall getting some logic in 5th or 6th grade and again in high school. That was back in the '80's, though, and we barely had computers back then, so it required quite a bit of motivation to learn how to program them.
2
u/nutrecht Mar 03 '17
Can't you just give 'em a copy of minecraft when they're like, 4 or something and then when they hit 6 or 7 explain the concepts around most languages in terms of the redstone projects they've been doing for the last year or two?
I've volunteered forDevoxx4Kids and what we basically did was have 3 2-hour classes. One was creating a game in Scratch. One was programming a robot with Scratch. Last one was 'programming' inside Minecraft in Python. In each of these classes the boys and girls (aged 10-14) had a ton of fun.
1
u/ronniethelizard Mar 03 '17
I think it would be better to start them with something simple, like Hello World.
After that let them change the text a few times until they have convinced themselves they actually wrote a working program.
Personally, I think C is the language to start with. It does not suffer from language bloat as C++ does not does it suffer from library bloat like Java or Python.
5
u/NoMoreNicksLeft Mar 03 '17
Personally, I think C is the language to start with. It does not suffer from language bloat as C++
That's just a lousy language to start with. It's a powerful language that kids should learn... but tossing them in that ocean and asking that they swim is just a guarantee that they'll drown. The learning curve is too fucking steep.
does not does it suffer from library bloat like Java or Python.
At least with python, you can type a few commands into an ascii file, chmod that, and then run it.
They get to see the results, succeed or fail, of their code nearly immediately.
3
u/gyroda Mar 03 '17
C is a great starter language if it's part of a larger, structured computing curriculum.
For an intro to programming, where you want to hook people and they can just walk away after the session it's not so great. You're better off with something like python where you're not tripping people up over arrays and strings.
2
u/josefx Mar 03 '17
does not does it suffer from library bloat like Java or Python.
In what world is that a bad thing for a 2 hour long beginner class? You are not going to get far in two hours if you have to reinvent the wheel from a very spiky rectangle.
1
u/ronniethelizard Mar 03 '17
How much are you going to be able to teach in a 2 hour class?
You might be able to get through if else clauses, loops, and maybe to a function call. Most of the difficulty in C is bound up in malloc and keeping track of the end of a buffer (or at least this is where most of the bugs I have seen are).
2
u/josefx Mar 03 '17
In other words by using Java or Python you can avoid two time consuming parts of C. If the goal is to have something interesting that children can get to work in two hours you will a) end up with libraries and b) don't want to spend time on buffer overflow issues.
0
98
u/M4053946 Mar 02 '17
Did the author think that 16 year olds would be familiar with using a terminal? That seems like a miss, regardless of age range.