I agree with the general principle behind this. But I don't agree with it in practice. It's a bit like saying "Nobody wants to learn how to drive, they want to learn to get to the store.". And strictly speaking, that's true. I mean, nobody wants to know about how to use the steering wheel or blinkers. Now, the first time I got behind the wheel, did I get to drive to the store? No. I got to drive around the parking lot after taking a class about how the steering wheel and blinker work.
Now clearly this example is different from programming because it's much more difficult to hurt or kill someone learning to program than it is when learning to drive, but I'm not convinced that the general principle is any different. With programming, you'be simply gotta learn about variables and loops, just like you've gotta learn how the steering wheel and blinkers work.
What I'm concerned about with this approach is that it might give newbies a premature sense of accomplishment that might hide just how difficult programming really is. In other words, it's like trying to convince someone that they've driven to the store when all they've done is driven around the parking lot.
The article states "A small amount of programming concepts had to be taught at the start and some single-concept examples are given, but the chapter always centers around a complete game."
But besides, getting to the point of premature successes:
In a way, you need a premature sense of accomplishment to keep a person motivated. Plus, if they ever come across the difficult portions of programming, that motivation might get them to go through the difficulty.
To me, the difficulty in programming is solving a problem using a lot of the difference concepts that make it up, but that's true with any profession and you can't get those concepts in your head unless you learn it one at a time.
What I don't want to see anymore is programming instructors teaching students a lot of concepts at the same time because to them that's the difficult way they learned and the "right" way to learn. That's just not a proper way to learn, you need to teach one concept at a time and if that means premature sense of accomplishment, so be it in the short term.
Now clearly this example is different from programming because it's much more difficult to hurt or kill someone learning to program than it is when learning to drive, but I'm not convinced that the general principle is any different. With programming, you'be simply gotta learn about variables and loops, just like you've gotta learn how the steering wheel and blinkers work.
What I'm concerned about with this approach is that it might give newbies a premature sense of accomplishment that might hide just how difficult programming really is. In other words, it's like trying to convince someone that they've driven to the store when all they've done is driven around the parking lot.