Thoughts on Code Year, Codecademy, and Learning to Code
Then again, neither does every online learning environment. Do any?
THINGS I BELIEVE:
- Everyone who wants to should learn to code.
- My answer to the question “Should all majors (not just computer science majors) learn to code?” is “sure”, for some value of “code” (there’s a difference between markup and programming) and in a context that makes sense for the student. I’ve been at schools where “Professional and Technical Writing” is a course required of all upper-division students regardless of major, and were I to teach that again I would spend some time on “code or be coded”, probably more in the context of understanding the “rhetoric of information” than code, though. Oh hey, I just remembered I wrote something to that effect in 2009.
- When someone is “learning to code,” the only outcome of Lesson the First should be to understand what you’re learning and why.
- The ideal outcome of Lesson the Second would be to understand how what you’re learning is or is not (or when/when is not) applicable in your life and current or future career
- Learning to code (learning anything) requires scaffolding.
- Teaching code (teaching anything) requires careful consideration of scaffolding and when to add and remove it.
- Teaching code (teaching anything) through imitation (type this! now type that!) without context or mentorship (for some value of mentorship: one-on-one, group, virtual, StackExchange or its ilk, etc.) is as bad of an idea as sending someone to France who has sat in High School French class but who has only memorized enough phrases to ask for the location of the bathroom.
- Pedagogy should be rewarded.
- Badges alone, while fun and useful in some contexts, are not pedagogy.
Given all of the above, I find myself in the situation of watching a considerable number of people I know (virtually or otherwise) get really, really excited about Code Year and the learning platform and curriculum developed by Codecademy, while I am really, really not.
I was trying to figure out just why my internal reaction was so negative, and then I came across this tweet by Dan Morel (note that I abhor the use of the word “retarded” and Morel himself said he should have used a different word):
What Morel’s quote reminded me is the fact that there is a not-insignificant number of people out there with jobs like “programmer” or “developer” who themselves don’t actually know how to code; they may have taken initiative on their own (a good thing!) and gone through a tutorial (or read a book, mine included), or took took a semester or two in Java or whatever language, maybe memorized some concepts, keywords, and typical sample interview questions, and managed to get a job as a developer. Or, they were in a position at a organization that decided it needed a “coder,” this person dabbled in some things, they were given a task to do, the task was done (for some value of done, meaning not knowing if it was a secure, scalable, safe, tested product), and they moved up the chain or to a different organization into a developer group and learned that they didn’t actually know development norms. These are things that happen, and they happen more than you think. People in my field have been discussing these situations for, well, as long as I’ve been in it, and I have seen at least one, if not both, examples in just about every organization I’ve worked with.
You may say that these situations are all the fault of HR or hiring managers, or managers in general, and sure, that’s the case in a lot of situations (here’s another plug for not hiring programmers based on puzzles, API quizzes, math riddles, or other parlor tricks). But the heart of the matter is still that there are a bunch of people out there with delusions of grandeur thinking they can code when they can’t. Code Year, and the Codecademy approach—based on what I’ve seen of it at this stage in their game—is not going to help that situation at all.
For two months I’ve been trying to come with a response to Audrey Watters’s post “Codecademy and the Future of (Not) Learning to Code” that wasn’t just OMG I SO AGREE WITH YOU.
I can’t. Because I do agree with her, and the key issue is pedagogy.
You know what I hope more than anything in the world? That the $2.5M and other venture money that Codecademy got goes predominantly toward pedagogy and user experience. Yes, the interface is shiny and the badges are neat, but no, it is not teaching you how to code. It is teaching you how to call-and-response, and is not particularly helpful in explaining why you’re responding, why they’re calling, or—most importantly—how to become a composer.
I’ve silently watched many people start the lessons, ask the right questions (“why am I doing X?”, “what happens when I do Y instead of X?”, “how does X and Z fit together?”, “how does Z compare to A?”, “wait, all I’m doing is typing what you’re telling me to type?”), and end up saying “well, I just earned 5 badges and don’t know what the heck that was all about or how it relates to [insert completely reasonable things here].” That is not an acceptable outcome for any learning venture, online or otherwise.
Learning anything without context is hardly learning. I wish that Code Year was 2013 and 2012 was “some smart people with good ideas and a lot of money built took the time to build great pedagogically-driven tool to really solve an existing problem for folks who want and need training in this area.”
Sure. I can be cool about it. I think it’s beyond awesome that 500,000 people want to try something new and that new thing involves code. I was just as excited when I saw “engage the arts and humanities” on Matthew Might’s “12 resolutions for programmers” list.
The thing is, like Audrey said:
You can look at something like Instagram in contrast, another “hot new startup” that boasts some 5 million users and over 100 million photos. You can ask, “how many of those photos are actually crap?” and the answer is probably “it doesn’t matter.”
Edited to add, months later: If you read this post and think my point is “you should buy my books”, you’re quite wrong. If you’re looking for a recommendation about where to learn X, Y, Z, I can’t give it to you because I don’t know you, and everyone learns differently and has different goals (also stated in the post). The point of this post is the pedagogical implications and pedagogy of Codecademy specifically (ca. Jan 2012) and things like it in general.