I spend a fair amount of time thinking about how to introduce my three young boys to programming. As much as personal computers have evolved over the last 30 years, I feel learning to code has gotten more complicated.
Computers weren't very accessible until about 1976, when Steve Wozniak developed the Apple. My grade school, like just about every other school in the country, got an Apple II that sat at the back of the classroom. Considering that computers had always been room-sized objects that only existed in movies, it seemed like the future had arrived.
It seems kind of crazy now, but there were actually very few things we could do with the computer at that time. We had a couple games, such as Oregon Trail. We quickly discovered that the Apple II came with a BASIC compiler, so we started to learn how to use it. During breaks between classes, three or four of us would huddle around the computer and type in programs from magazines like Enter (I wrote about my love of Enter a while back).
So what is different nowadays? Why should learning to code be more complicated in 2014 than it was in 1980? I can think of at least a couple reasons.
Kids are harder to impress. When I was a kid, just hitting letters on a keyboard and seeing them show up on a screen was pretty thrilling. Until then, the only thing I'd every seen in a screen was whatever the TV station decided to show me. Even cooler, typing
10 PRINT "Todd"
20 GOTO 10
would print my name an infinite number of times. What could be cooler than that?
Today, my kids play with computers all the time. I hate to admit it, but I frequently take a powerful one out of my pocket to keep them entertained when I need a little peace and quiet. They have pretty high standards: an app the prints
Drew
Drew
Drew
Drew
isn't going to impress them.
Coding is a lot more complicated. Computers can do so much more than they ever could before. However, this adds countless layers of complexity and, as a result, creates a much larger barrier to entry.
When I wrote little programs on an Apple IIe, I just fired up the computer, fired up BASIC, and started typing. Today, it's a little more abstract. For most, the easiest place to start would be to write some javascript and HTML in a text editor and run it in a web browser. However, this still requires multiple steps along which multiple things could go wrong. After this option, things get a lot more complicated: proprietary software, frameworks, fancy IDEs, etc. might be required just to get started, which would likely be out of reach of any kids that don't have a programming- savvy adult to help them out.
I do think things are improving, however. Apple's new Swift programming language includes Playgrounds, which allows newbies to write small amounts of code and immediately see the results.
"Playgrounds make writing Swift code incredibly simple and fun. Type a line of code and the result appears immediately."
Definitely a much easier way to start experimenting with programming concepts.
Maybe it's because I now have small kids and it's on my radar, but it seems like there's a lot more awareness of the need to teach kids to code. The Hour of Code seems to be a great program that has introduced a lot of kids (and the President) to coding.
There are now a number of iPad apps that teach programming (Tynker, Hopscotch, Scratch). For the little kids, this doesn't mean coding - 6 year olds aren't going to write lines of Objective-C. However, they teach the systematic approach to programming: breaking your problem down into tiny little problems and solving each one in an elegant way. In my opinion, this is the most important part of writing code. Once you've got this down it doesn't really matter what language you're learning
And here's something else that just showed up in my RSS feed today: BitsBox, from a couple employees of Google's Sketch:
"Each month a surprise comes in the mail, filled with dozens of programs to type in. Like the computer magazines of the 1980s, we invite kids into learning with irresistible projects."
It's a Kickstarter project, but it sounds like a great way to get kids excited about programming. Kids love getting packages in the mail, after all!
As a dad, and a geek, I'm really excited that there seems to be a renewed emphasis on teaching kids to code