This is stuff educational researchers have known for over 20 years, and theorists have known for 100 years (John Dewey). It's called situated cognition. Learning happens in context. You have to give students a reason to learn, not just learn something for its own sake. It explains why for example a Brazilian street kid may be a whiz at math, and a 6 year old may have hundreds of Pokemons memorized. See for example the work by James Paul Gee or Jean Lave. John Dewey said 100 years ago that we shouldn't educate just to prepare kids for a future they know and care little about, we should educate them for today, teach them stuff that is useful and interesting to them today.
An example of my own - at 9 my father attempted teaching me programming with basic - I thought it was pretty boring all that work just to draw a US flag on the screen, especially compared to the videogames I was playing. I was similarly bored with a basic programming class in high school and a survey of programming languages (lisp, C++) class in college (worst class I ever took in my life, actually).
It wasn't until early college when I started making CGI web applications, games, and educational software that I learned real programming and saw the value of it (along with the value of similarly boring calculus/linear algebra stuff).
I disagree with the author of this article's put down of GameMaker and similar tools. Python was not designed for beginners, and neither was Javascript, of course. Right now Scratch may be the best tool for teaching kids how to program, although it is very limited and not so great for creating games as other tools.
I wish I could vote you to the top. It's painful to see people "rediscovering" something so obvious. By not understanding this people are wasting so much time.
I've been programming for 30+ years. It was the enthusiasm of putting sprites on a screen and moving them around in 6502 assembler that kept me awake into the wee hours, pouring through books and magazines. The need for loops, branching, subroutines, etc all come naturally. As programs got bigger, the need for modules arose.
Once you have the "need/desire" to learn a subject, the rest comes so much easier.
Totally agreed, and it was how I got my foot in the door with web development.
The first tutorial wasn't, Getting started - adding and subtracting numbers in a REPL or doing some basic Hello World nonsense. It was How to build a blog with PHP and MySQL and I came across it when I found out that I didn't have to hand-code all my pages, even in Dreamweaver (at the time).
Once again I wanted to do something more, and came across the concept of frameworks (this was just when RoR was born), and then, the famous Make a blog in 20 minutes trend of tutorials that all frameworks eventually copied. I did CakePHP's, and I learnt about classes and MVC and separating concerns.
My boss summed it up perfectly: "you need to be given something real to be able to learn from it and enjoy it."
He was right, because I'd never have learned how to create an iOS app (and learned Obj-C) if he didn't give me a fortnight to program a design.
An example of my own - at 9 my father attempted teaching me programming with basic - I thought it was pretty boring all that work just to draw a US flag on the screen, especially compared to the videogames I was playing. I was similarly bored with a basic programming class in high school and a survey of programming languages (lisp, C++) class in college (worst class I ever took in my life, actually).
It wasn't until early college when I started making CGI web applications, games, and educational software that I learned real programming and saw the value of it (along with the value of similarly boring calculus/linear algebra stuff).
I disagree with the author of this article's put down of GameMaker and similar tools. Python was not designed for beginners, and neither was Javascript, of course. Right now Scratch may be the best tool for teaching kids how to program, although it is very limited and not so great for creating games as other tools.