This is a genuine question; not trying to be cynical or troll: is there any chance these games actually deter children from learning to program? I personally feel it was more satisfying as a child just to open up Visual Basic and drag and drop buttons and hide windows and whatever. If I'd been introduced to programming through a game meant to introduce kids to programming, I'm not sure I would've developed the same enthusiasm.
I found that I reasoned everyday things in a more organized and structured manner once I really got into programming. I think it's an interesting and worthwhile idea to try to teach children this way of thinking, regardless if it will lead to them programming computers or not.
I think "board game to teach kids programming" is a misdescription. This is a board game that teaches kids to think like programmers --- it teaches elementary logic skills and makes them familiar with programming concepts. It doesn't teach them anything about actual programming, though it makes them better potential programmers. I think this game is worthwhile as a general learning exercise, i.e. to develop structured thinking, but with regard to programming, it is a misdirection of efforts.
To elaborate: there's a certain magic moment when you write your first program. You realize that you can make the computer do things. First, you just have it print a test message. WOW. Then you have it add two numbers. It works, and you feel a surge of emotion: with this tool, anything is possible. It's an incredibly powerful and liberating feeling. It is very persuasive, and often gives rise to an immediate fascination.
The way to "teach kids programming" is to give them that experience, to let them feel that Eureka!-moment. Teaching kids about logical statements, loops, etc. is neat stuff, and will certainly make them into better thinkers, but it does not make them (significantly) likelier to open up a REPL and type in "print 'Hello World'".
And that is the critical point: if a parent wants their child to pick up programming, they'll have to get them to actually program. Playing games about conditional statements and basic logic is only very tangentially related to getting children to write and run code. (The same complaint goes for other products in this space: picture-books, games, etc. to bring children closer to programming have been released in great number recently.)
Perhaps there is some sort of general fear that actually opening up a terminal, notepad, etc. is somehow an intrinsically difficult task (likely because most parents have no idea how it works, either), so parents try to edge closer to programming with these educational toys, but the problem is that "learning to code" is not something that can be done by gradual immersion. A child can learn to swim by dipping their toes into the water and then slowly wading into the pool while moving their arms --- a couple hours of this, and they'll learn to swim. However, with coding, the process is not as gradual: at some point, the child has to open up an editor and start typing. An effective educational tool that "teaches kids programming" really must do only one thing: help them make this step.
Two things limit children from learning to program: ability and enthusiasm. Resources to teach programming to "kids" tend to optimize for fixing the former, but in my opinion it's the latter that matters so much more.
The easiest way to teach kids how to program is via Lego Mindstorms. I don't know a single programmer who didn't play with Lego as a child. The Mindstorms kit is expensive, but you can do a lot with it and it also teaches the basics of sensors and robotics. Graphical languages are great ways to introduce programming without the rather inane things you need to learn like syntax.
In hindsight Mindstorms was my first exposure to programming and I didn't even notice. I just enjoyed solving the problems in the book and making the little robot do what I wanted.
Pretty neat that they have this now. When I was young I didn't have Mindstorms but there was the Lego that allowed you to create running electrical parts. Yeah... I sure played a lot with Lego. Now I play a lot with Haskell. Look mom, no state! Except the problem is I can't show this to my mother, she does not understand it. :(
I wrote my first program before seeing my first Lego block, a toy which I never got in to. I realize this might sound unlikely, but it was cheaper to program than to buy Legos, in a manner which made a difference for my family at the time.
Lego is exorbitantly expensive, though it is virtually indestructible. I was given Mindstorms for Christmas one year, but I was only able to play with it at my grandparents' house where the computer was good enough (i.e. had more than 16MB RAM).
After using Mindstorms a bit at my school I'm not too sure about their value as introductions to programming. The kids I have coming through seem to have done better things after being introduced via something like Scratch (or Gamemaker) where there isn't a break between what they code and how they get it to work. ie for Mindstorms you need to physically build something that is capable of doing the job that your program requires. A surprising number of students either didn't have the interest in that aspect or were unable to build what they had in mind.
I agree that's the ultimate goal, but I think if opening a REPL is sitting at the grown-up's table, then this is a booster seat. Having a game like this helps things get moving in a non-intimidating way or at least seems better than searching for analogies or sketching out pseudo-code. And after the game you can say, "Remember that for each card? Well here's what that looks like in real life..." and have it relate better (perhaps).
At least I now have a phrase for updating code written by several people who apparently didn't talk to each other: coding on monkey island.
I partially agree, but I want to clarify that "open up an editor and start typing" is not the sine qua non that it used to be. I would argue that Scratch (for instance) is very much a programming tool, and kids that play with it are learning to program, even though there's no text editor and all the manipulations are block-based.
The "check" and "count" cards in this game remind me a lot of the sorts of control flow you build when you're just starting to use Scratch---one control element, one command inside it---and as such I could very much see using this board game as an introduction to be immediately followed up by putting the kids in Scratch. So as I said, I partially agree with you: this board game does not, by itself, teach programming. But, I think it's not anywhere near as distant or as tangential as you claim.
From reading the title I was hoping the article was going to be about the coding of Monkey Island, or an open source port of it or something. Which I would have preferred..!
This is an interesting approach that seems like a good complement to Robot Turtles. Whereas Robot Turtles takes a more open-ended "create your program and go" approach, Code Monkey Planet is focused on strategic use of more complex control structures.
I'm personally on the fence about the recent movement to teach kids programming at a young age as evidenced by all of the financially successful Kickstarter projects and summer camps aiming to do so. Personally, I would rather see things that teach kids about programming and then let them decide whether they want to pursue it or not.
While it doesn't necessarily teach you skills that would be practical in the real world, it's a ton of fun, and all the programmers I know that have played it have really enjoyed it.
I think "Code Monkey" is only self-deprecating in our community, but not necessarily a bad thing. I interned for a web shop that called the developers "code monkeys" and designers "pixel junkies," and I didn't take it as an insult. Unless the supposition is like the million monkeys who wrote Shakespeare thing. But I don't mind the term, and use it self-descriptively all the time.
22 comments
[ 3.2 ms ] story [ 60.1 ms ] thread1. http://codemonkeyplanet.com/
To elaborate: there's a certain magic moment when you write your first program. You realize that you can make the computer do things. First, you just have it print a test message. WOW. Then you have it add two numbers. It works, and you feel a surge of emotion: with this tool, anything is possible. It's an incredibly powerful and liberating feeling. It is very persuasive, and often gives rise to an immediate fascination.
The way to "teach kids programming" is to give them that experience, to let them feel that Eureka!-moment. Teaching kids about logical statements, loops, etc. is neat stuff, and will certainly make them into better thinkers, but it does not make them (significantly) likelier to open up a REPL and type in "print 'Hello World'".
And that is the critical point: if a parent wants their child to pick up programming, they'll have to get them to actually program. Playing games about conditional statements and basic logic is only very tangentially related to getting children to write and run code. (The same complaint goes for other products in this space: picture-books, games, etc. to bring children closer to programming have been released in great number recently.)
Perhaps there is some sort of general fear that actually opening up a terminal, notepad, etc. is somehow an intrinsically difficult task (likely because most parents have no idea how it works, either), so parents try to edge closer to programming with these educational toys, but the problem is that "learning to code" is not something that can be done by gradual immersion. A child can learn to swim by dipping their toes into the water and then slowly wading into the pool while moving their arms --- a couple hours of this, and they'll learn to swim. However, with coding, the process is not as gradual: at some point, the child has to open up an editor and start typing. An effective educational tool that "teaches kids programming" really must do only one thing: help them make this step.
In hindsight Mindstorms was my first exposure to programming and I didn't even notice. I just enjoyed solving the problems in the book and making the little robot do what I wanted.
(Also the Mindstorms software is awful.)
At least I now have a phrase for updating code written by several people who apparently didn't talk to each other: coding on monkey island.
The "check" and "count" cards in this game remind me a lot of the sorts of control flow you build when you're just starting to use Scratch---one control element, one command inside it---and as such I could very much see using this board game as an introduction to be immediately followed up by putting the kids in Scratch. So as I said, I partially agree with you: this board game does not, by itself, teach programming. But, I think it's not anywhere near as distant or as tangential as you claim.
I'm personally on the fence about the recent movement to teach kids programming at a young age as evidenced by all of the financially successful Kickstarter projects and summer camps aiming to do so. Personally, I would rather see things that teach kids about programming and then let them decide whether they want to pursue it or not.
http://boardgamegeek.com/boardgame/18/roborally
While it doesn't necessarily teach you skills that would be practical in the real world, it's a ton of fun, and all the programmers I know that have played it have really enjoyed it.
I would just call it something like "Island of Monkeys" instead. Sneak in the logical and programming concepts like RoboRally does.