Around the end of 2011 and 2012, CodeAcademy.com starting promoting and subsequently launched Code Year, offering up a programming lesson every Monday for people to learn to code. In the interest of full disclosure, I’m doing the Code Year lessons myself, since I haven’t had a lot of web development experience in the past, and for the kicks.
Jeff Atwood (also know as “The Coding Horror Guy”) put out his opinion on the matter on May 15, and followed up on May 25. In keeping with the tradition of striking after the iron has gotten cool, I had a few thoughts I wanted to contribute to the topic.
The value in initiatives like learning how to write software isn’t just that you can put together lines of code that don’t crash, if it was, “Hello, World!” would be a much more valuable skill set. What makes learning to program so valuable and useful is the mindset it takes to do it right. (OK, that assumes that you’re learning how to write code correctly, but you get the idea.) By the way, ever hear people talking about teaching children how to think when discussing education? Teaching them programming does that.
By the way, the language you teach doesn’t matter. In fact, you don’t really need to teach any specific language or framework at all. As long as students are learning to develop at least pseudocode, they’re getting the important parts. If it sounds like what I think is that everyone should take a course on algorithms, it is. Specifically, everyone should learn the basics of algorithm design analysis. They need to know how to abstract out problems, break them down into component parts, figure out how to solve them, and be able to explain how well their solution will perform with large inputs. If people learn this by learning to program, through an algorithms course in school (I had another course called “Discrete Mathematics” that did much the same thing when I was in college), or whatever, it doesn’t matter – they’re still learning important stuff. In fact, while we’re at it, throw in a course with predicate calculus and lots of proof-writing. That sort of thing does a body good (well, the brain part of the body at least).
Gaining knowledge is never a bad thing – although Atwood makes a pretty good point that some pieces knowledge is more useful than other pieces (seriously, why did I spend 4 years taking English in high school?). That said, while programming specifically is probably not very handy, people do need to learn algorithms, which most people don’t learn until after they already know how to program. If there’s a problem with people who don’t need to learn how to program learning how to program, then what we really need is a way to skip programming and jump straight to the algorithms. After all, that’s the important part, and contrary to popular contrarians, it’s useful for everyone.