Recently I wrote a Leanpub book called Programming for Kids.
It's a book to teach kids who are between 9 and 14 years old and who have a Mac computer the basics of programming.
Why did I write the book?
Primarily, I wrote it to teach my 9 year old son the basics of programming. He has been playing video games for years, and he wants to learn programming since he wants to make his own video games someday. This book is intended to be the first step. (No, it doesn't teach you how to create the kinds of video games a 9 year old can dream up; that takes a lot more knowledge!)
When my son was 7, he wanted me to teach him how to write computer programs. He had been playing a lot of Little Big Planet and Spore, and the patience to create the types of things that he was creating meant I thought he might be ready. So, I tried at that time, but he wasn't ready for it. We played with things like Scratch and Lego Mindstorms, but that was about it.
But, when he was 9, he asked again. So, since I didn't have much time, I bought a couple of the well regarded books. But the examples were really long, and required a lot of typing. Also, the book was realy targeted at kids a few years older than he was. There wasn't really anything I could buy that I wanted to use to teach him.
So, I decided to write the book. I had some free time over the Christmas holiday period, and I decided to write the book then.
Every time I'd write a chapter, my son would read it afterward, and do the exercises. I'd hang out with him while he was reading it, and see what he'd get stuck on, what questions he had, etc. No chapter survived his reading it without a bunch of edits! I remember at one point he said to me "This is why you have a tester. Wouldn't it be disastrous if this was published?" So, he takes after me in his perfectionism!
Anyway, this is why the book exists: to teach my son.
But, of course, I wrote it since I thought that if I did a good job, other kids would find it useful too!
I want it to be the best book in the world for a kid who is wanting to learn to program computers to read first. Computer programming is a good skill to have, regardless of what occupation your child eventually does as an adult. (I'd argue it's much more important than lots of the math that you learn in high school, for example.) But more importantly, learning how to program computers teaches a rigor and discipline of thinking which is useful in any field. This book exists to show kids that they can code, and to help them get started.
Besides teaching programming, the book also teaches basic use of the command line on a Mac. This is accessed via the Terminal program. The reason for this is that I feel that the best way to learn is to follow along, and the simplest way to follow along is to type everything. Real programmers use the command line every day. If you want to learn programming, you should use Terminal and files. Yes, you can play with stuff in a web browser at places like Codecademy, and while this is very friendly and instructive, it is fundamentally a different activity from what real programmers do. And, besides being easier, it's somehow less rewarding. There's no reason to hide from what programming really is: a bunch of thinking, some typing and testing, and then back to more thinking.
Programming for Kids is available for purchase here.
There is a sample of the first 4 chapters of the book here.