I've never taken a programming class, but have done a fair amount over the years in a variety of languages. I'm not fond of it myself - at least not something I'd like to do for a living. You get spoiled being around the likes of Brian, Ken, Bjarne and Dennis -- particularly Dennis.1 I don't code seriously for the same reason I don't do serious art - I know what good is. That said knowing how to code and, just as important, how computers work, has been incredibly valuable and necessary to me over the years. Not only can I hack together what I need for physics and other purposes, but you get insight into how more complex systems behave -- sort of important these days. My belief is coding is something that young people need to be exposed to - even if they never write anything for your job. Because of this I've followed and even participated in a variety of teach-kids-to-code efforts over the years.
Most of them were awful. They tend to be implicitly and sometimes explicitly sexist. They're usually boring. Most of them don't teach you technique and many, combined with incompetent instruction, teach bad habits. CS 101 classes often have to focus on unlearning bad habits.
So why am I writing this?
Earlier today a good friend was looking for long-form reading suggestions for the weekend. Normally I have a dozen or so books that I try and push on others, but about a month ago I had a special experience. I watched a twelve year old code for the first time in her life. We, I should say she, used Swift Playgrounds - Apple's new teaching environment based on the Swift programming language. I won't get into language wars (heaven know I used to work out ideas in Common Lisp), but Swift is a very good modern programming language. Learn one well and you should be able to pick up others. What is special about Playgrounds is its playful nature. Some really serious folks who think deeply about teaching coding skills including girl gamers were involved and it shows. You start out solving a simple puzzle as it introduces concepts and you write real code. It encourages experimenting and learning from failure. It doesn't push cookie cutter solutions - you can solve an example in any number of ways, but it encourages efficient code.
She was thrilled and upset we ran out of time. I was there to help and offer suggestions, but she was off on her own. I mostly watched her excitement and thought about the enormous effort getting this as good as it is.
The full language is there and you can move your code over to Xcode and create iOS (or even OS X) apps. Educators are being encouraged to create their own games and modules with tools Apple has provided and free teacher instruction manuals are online.
Highly recommended. I can't think of a better introduction to coding. So if you know of a kid with an iPad - or if you want to learn about programming on your own - this is the real deal. All free except for the iPad ... if you don't have one, this may be is worth the price.
I'd love to try this with some senior citizens...
Here's Apple's glossy introduction with download links.
1 My word all of these are masters... The Picassos and Bachs of computing ... the 1 in 10,000 or 100,000 who see things so much more deeply than others. Dennis was a different sort all together - perhaps a one out of all of the programmers in the world... unique.. computing's Shakespeare.