Codecademy: A review
I first tried Codecademy shortly after they debuted in January 2012. I had recently finished acquainting myself with the basics of markup via a combination of W3 schools and some help from a couple of web developer friends. I felt pretty good about my growing grasp of HTML and CSS, so I figured maybe it was time to jump into an actual programming language.
Codecademy aimed to help me do exactly that in their Code Year program starting with JavaScript, and then eventually progressing into Python. I didn't make it very far in Code Year. Life got busy, and I rapidly discovered that basic JavaScript syntax was just a bit more complicated than HTML and CSS syntax. It wasn't that much more complicated, but it was tricky enough that I found I was hitting walls a lot more frequently with a missing curly bracket here, or an extra semi-colon there.
Right around that time my work with Nerd Kingdom started to get a little more intense, and a little later that year I began transitioning into work with Ronin while still holding down my regular job with UW–Extension. I simply didn't have enough time in the day to learn JavaScript, and of course, the further behind I got in Code Year, the lower my motivation became for jumping back in.
Then, in early August of this year I decided that I had both the time and the need to press on further. I ran through Codecademy's HTML and CSS lessons (which provided a solid review), and then jumped into JavaScript. It might be more accurate to say that I slammed into it, but either way I began getting exposed to Codecademy's unique method of teaching JavaScript.
I'm not about to claim that Codecademy taught me how to code, and I'm definitely not going to claim that it taught me how to program. At this point in my life, I'm still not a programmer. It's highly unlikely that I'll ever become one given the other skills I've already cultivated and need to maintain, and the limited amount of time in the day (and days in a lifetime). I may count myself a "coder" eventually, but honestly my main goals in learning a little bit of code involve becoming a more effective designer. The more I understand about the work the other developers on my team do (whether they're programmers, artists, writers, sound designers, or anything else), the better I become at working with them to design excellent experiences.
So, I'm not going to claim that Codecademy taught me to code because it didn't. It helped me learn how to fumble around through some JavaScript based puzzles, and sometimes how to find answers. It helped me get a grasp of the most basic syntax, and where really simple things are likely to go wrong even when they look right. That's not nothing, but it's not even a basic level of competency when it comes to actually doing front end software development in JavaScript.
So, where does Codecademy fail? As others have commented, Codecademy suffers from having lesson sequences developed by a variety of subject matter experts who aren't necessarily getting a whole lot of close coordination. It also suffers in a fundamental way from a lack of built in pedagogical structure. Incoherence across the instructional sequence aside, the biggest (but not only) pedagogical problem embedded in Codecademy is the lack of opportunity for reinforcement of prior concepts. At their best Codecadmey lessons do build on one another, but they don't give you solid opportunities to practice the concepts and techniques you've already been introduced to before advancing on to the new ideas.
The result is a learning environment where you are forced to sort through prior lessons in order to track down concepts that have been covered previously in order to apply those concepts in more advanced lessons. There is no effective just in time support to help you find the appropriate elements to reinforce your understanding of them, and even more problematically, there is no implementation of any sort of spaced learning to reinforce ideas and help them become integrated into practice. In effect, the learner cannot effectively develop useful chunks of information, and is instead forced to recall or seek out smaller sized informational pieces at every step in order to accomplish the tasks that Codecademy presents. This is why it worked effectively enough for me as a tool to review HTML and CSS (topics where I already had developed more sophisticated chunks), but left me struggling with JavaScript because almost everything there was basically new.
Another major pedagogical problem with Codecademy involves the hint structure. The vast majority of hints in Codecademy either gave away the correct answer to the code puzzle, or left the learner with almost nothing to go on. In those instances I would resort to their forums where I would track down an answer, and then work to understand where I had gone wrong, and why the working code presented in a forum actually ran. Hint: The vast majority of the time it was a relatively trivial syntax issue that a decent IDE would have brought to my attention.
Most significantly of all, Codecademy doesn't really teach concepts or systems. It doesn't teach you how to think about the tools you're learning about, just how to solve very specific decontextualized puzzles. At the end of the day this isn't necessarily terrible, but it just isn't deep learning that facilitates transfer.
For all of this, Codecademy helped me to gain a reasonable grasp on enough of the basics of JavaScript that I have been able to continue playing around with it, and have even developed a learning resource (an ROI calculator) for a course I've been helping to develop. One way to put it might be that that it gave me just enough of the basics so that I could make use of StackExchange. ;)
Oddly enough, a lot of the success I found with Codecademy is due to its successful use of gamification. As you may know, gamification is a tool that I have decided is often a bad fit for learning. That said, the reason Codecademy's gamification worked for me is simple. I was motivated to learn some basic JavaScript, and consequently, when I saw a daily reminder that I had a code streak going, it drove me to make sure that I got back in there for at least 30 minutes or so to keep the things I was learning fresh in my mind. This is a point that people who actually understand gamification as simply a marketing buzzword that means motivational design get. I had an intrinsic drive. One of the supporting mechanics (reminder messages highlighting my ongoing engagement) worked to amplify that drive, getting me to return to Codecademy and push forward a little more each day.
I can't say that I recommend Codecademy overall, but I also can't say that I don't. Ultimately, I believe that working with the right team of developers and subject matter experts, I could probably help to build a much better version of a self paced tool for learning software languages. It wouldn't be easy, but a system that relies a little less on gamification and a little more on learning theory could definitely help people learn how to code, if not learn how to program. That said, I'm glad Codecademy exists. It helped me take some valuable steps. Now, based on the recommendation of a friend, I'm going to start reading JavaScript for Kids, I'm going to keep playing around with JavaScript and jQuery when I can in my work (including my side projects), and I'm definitely going to figure out how to leverage some JavaScript for Twine. I'll also try to learn some PHP in the not too distant future, and when I get started with that there's a good chance I'll begin with Codecademy.
At the end of the day Codecademy may not have taught me how to code, but it helped me feel a little more competent, and it gave me just enough motivation to push myself to start actually learning some basics. The fact that I was taking fairly detailed notes as I went is probably pretty relevant on that front. I'd ultimately say Codecademy isn't a bad start, as long as you know going into it that it's not actually going to get you to any meaningful end.
Reader Comments