I cannot review this book under the most ideal circumstances as I have prior hobby programming experience, and recently some experience making games. However, I’m self taught and I highly value good resources to teach myself from. If I had access to a book like this when I was a little younger I think it could have easily been the introductory experience I was looking for. The book takes you through each program in a extremely clear manor, stopping to explain the more complicated parts.
From a programming reference perspective, the specifics of the language are largely glossed over. This surprisingly, is a good thing. If the book is about learning to program using games as a vehicle, then the main goal of the user is to make a working game. It is not to study the exact syntax of python, or compare with other languages. Each chapter wraps some programming concepts up in a familiar game, with plenty of pictures and sidebars for explanation. One feature that I found particularly useful was the hand drawn flowcharts for each program. These are the mental models of execution that are so often missing in educational materials. Learning to think systematically is the root skill in programming, so it follows sensibly that each game should be accompanied by such a chart, documenting the system.
The only downside of the book is the games themselves. They’re text based, and not necessarily the most fun games out there currently. It is hard to compete with modern video games in terms of graphical flash appeal, especially when considering the raw advertising budget available to major publishers. This issue is not really a solvable one, as it’d be impossible to maintain simplicity and low price of admission while leveraging huge graphics. I hope though that people who are interested in learning to program are in the mindset of creating content, rather than remaining consumers.
It’s been said many times (including by the author) that Python is the new BASIC. It’s reasonably simple, freely available and widely used. If you’re on a mac, it comes pre-installed. Avoiding the dreadfully serious approach that traditional schools follow (C++ and enterprise development), python lets you simply play and explore. Having an interactive command interpreter as a core part of the language lets you do just this. Python is well suited for the kind of personal discoveries that are necessarily in order to make lasting gains in the world of computer education. If I had a geeky twelve year old niece or nephew, I’d definitely drop this book on them.