Seriously, someone has to say something about Codecademy ‘s courses. I feel like the little kid in the story The Emperor’s New Clothes. You know, the one where supposedly the clothes are made from cloth only really intelligent people can see, so no one wants to point out the emperor is actually naked.

With a week or so into the new year, 100,000, – no 500,000 – no a GAZILLION people are learning to code, and it includes the Mayor of New York, the president, the pope! Okay, well, maybe that is a bit of an exaggeration. Out of these 300,000 or 500,000 or 800,000 users, depending on what article you read, 99% of the tweets I read on twitter said things like,

“This is great! I’m learning to code!”

or

“I just unlocked badge #10. This is so wonderful!”

I have to agree with Ms. Watters review in (Not) learning to code that the people giving it rave reviews either aren’t past lesson two or already know how to code. Let me give two examples:

This first one is from the JavaScript Quick Start Guide, which is for people who already know some other language. I saw this after I had already completed the beginning programming course and I was happy to find it because I was interested in something that moved a little quicker. This little block below is all of the explanation on Do/While

 

7. Do/While
This is similar to most other languages:

do { // block} while(condition);

Implement the increment one the last time.

Then there is this exercise, which, as you can see, I did complete correctly.

// This function should increment the start value by 1
// the number of times specified.
function increment(start, timesToIncrement) {
// Add the appropriate code here, this time using a
// do/while loop. This time, you must also write in the loop
// body.
var i = 0 ;
do {
start++ ;
i++ ;
} while( i < timesToIncrement);
return start;
}

I actually was able to do it correctly because I had done it in Javascript before and I am taking the Codecademy courses because I would like to learn Javascript better, review material and do more with it. As I said in another blog, I’m also doing a lot of other stuff to learn more. My point is, if I didn’t already know how to do this I would be lost. There may be better ways to do this, although the little Codecademy program said it was correct. That kind of bugs me, because I would like to know if there is a better way to do this. I understand the reason for the start++ and i++ both being there because start may not always be equal to zero. This is a function, after all, and start is a parameter passed to it.

Then there is this in lesson 2 of the Functions in JavaScript course

…..To check that, run the code as is. You will see that the returned value is NaN, which stands for not a number. That happens to be the value returned when we try to multiply a string three times with itself, in the return x * x * x;statement.

Obviously, the only thing you are expected to do in this lesson is click RUN. You then see that the returned value is NaN. Yet, this tells me it is incorrect (duh, I know, that was the point of this lesson). Yet, when I change it to a number, it tells me I am incorrect – probably because what the instructions say to do is click RUN, not change it to a number. So, I can never successfully complete this lesson and hence can never complete the course. Since I didn’t really care beyond annoyance, I just went on to the next one.

Not surprisingly, with 3 billion users, there is no way to give feedback on this lesson other than the thumbs up or thumbs down.

I want to say that Codecademy IS free and it IS helpful for me to spend 20 minutes on basic stuff because I don’t use javascript right now unless I force myself, while I have a project coming up where i am going to need it a lot. I would agree with Watters that you can do all of the lessons and still not be able to code anything. Applications like FizzBuzz – which I have not had a chance to do yet – are a really good addition since she wrote that article.

Codecademy IS free and it doesn’t suck. If you are brand new to programming the beginner’s course is very good as a basic introduction. However, it is very far from perfect and is not going to be replacing the MIT Computer Science department any time soon. In fact, I would say that it’s not going to replace any really good books on Javascript, instructional videos on youtube, the OReilly School of Technology or other quality resources out there that can provide a whole lot more detailed explanation.
Small child in diaperAgain, it’s free. So far, as I see it, it is good for getting people off to a beginning on basic concepts and it is okay for reviewing topics you already know. Will it develop a huge cadre of web programmers? Definitely not on its own. As others have speculated, I doubt more than 10-15% of those who sign up will complete much more than the beginner course. What it MIGHT do is encourage some people enough that they start from here and pursue some more serious study on their own, and that is a good thing. Or maybe some amazing courses will come out in the future and I will be totally wrong.
But all of this cheerleading about “Hurray, I’m learning to code! This is wonderful!”

You’re trying too hard. Cut it out. The emperor isn’t naked but he isn’t really all THAT well-dressed, either.

Comments

9 Responses to “Codecademy’s New Clothes”

  1. PiP on January 15th, 2012 2:40 pm

    I’m doing the codecademy lessons now too. I’m enjoying them, but I’ve done most of this before so I can’t really judge how well I’d be learning from scratch. For an absolute beginner I do think they would be very useful as a sort of hands-on laboratory to mess around and try things out. Having a good book in hand to read deeper into each topic as you go would be best IMO.

    You say “Not surprisingly, with 3 billion users, there is no way to give feedback on this lesson other than the thumbs up or thumbs down.”

    Not sure if it has changed since you wrote this blog, but next to the thumbs up/down there is a ‘Send Feedback’ link which opens a dialog box to give feedback.

  2. AnnMaria on January 15th, 2012 2:51 pm

    Hey, Pip -
    The beginning programming course had the feedback option. When I did the Javascript Quickstart Course, for people who already know a programming language, it only had the thumbs up or thumbs down.

    I did 73 exercises – all the beginner course, plus most of the quickstart course plus some of the functions course. I agree with you that the beginning course might be good for an absolute beginner, but after spending some time with Codecademy I concluded it wasn’t very efficient – for me. I just went back to reading books, writing my own code and testing it myself. I don’t need an “Oops, try again!” I can run it in a debugger and get a lot better feedback.

  3. JaiGuru on October 15th, 2012 7:39 pm

    There are three MASSIVE problems with codeacademy that force me to conclude beginners should avoid this like the plague:

    1. The lessons are disjointed to say the least. If there is any collaboration between the people writing them, it does not show one bit. Lessons CONSTANTLY refer to material that was not covered. As a bare bones beginner, I had no idea I was getting wrong results because I wasn’t using something that was not taught to me. I spent hours pouring over my code only to find out it required symbols we weren’t taught. This does not just happen in one or two lessons. It’s almost every other one.

    2. The are no drills: More often than not, the lessons that don’t ruin themselves by requiring information you have not covered yet, then ruin themselves by not properly teaching the language. You will have blocks of code chucked at you and then there will be no drills to teach you the basic syntax. This method will teach you parlor tricks, not methodology and good luck recalling that when it’s needed as a novel solution to a problem with your program. Failing a photographic memory, you are screwed without drills.

    3. The console itself: There were a bunch of times I had written code that fulfilled the requirements but I didn’t pass because the author of the lesson envisioned it differently than I had. code is language, and as with all languages, there are times you can convey the same data in slightly different ways. Did they bother to tell you that in the console? NOPE. You fail the lesson and have no idea why since it’s returning the data it was supposed to return. To make matters more complex, apparently there are sometimes bugs in the console that stop even the correct code from passing. Again, are you told this? NOPE. What this amounts to is a situation where you don’t know if you screwed up your code, you didn’t write it the way the author of the lesson wanted you to, or the console is just plain jacked up.

    And given this is a sight allegedly about teaching you to code ONE WOULD THINK THE LESSON’S CONSOLE ITSELF WOULD BE CODED CORRECTLY!!!!

    Yeah…I’m a little mad.

  4. AnnMaria on October 15th, 2012 7:55 pm

    Jai -
    I agree with you completely. After giving up on codecademy I read JavaScript: The definitive guide – NOT light reading, the essential guide to HTLM5 and several books on jquery, to name a few.

    I wrote a few simple games – math minute, a memory game, then rewrote them to be less simple. Then I got involved in the 2-D part of a game our company is producing. The good news is that I learned A LOT of javascript this year, about 3% of which I learned from Codecademy

  5. JaiGuru on October 15th, 2012 8:38 pm

    Can you recommend Javascript the Definitive guide as a book that would be appropriate for a complete beginner to coding? I would like to learn it and jquery. I’m enjoying Javascript thoroughly, I’m NOT enjoying code academy and the problem is that so many learning resources assume the reader has prior knowledge to build on. It’s easy to get burned as a beginner.

  6. AnnMaria on October 15th, 2012 10:19 pm

    I had plenty of prior experience coding so that made it easier for me. The definitive guide is a huge book and “densely packed” is the best description I can give.

    As you are a beginner to coding, some concepts like functions, arrays, etc. may be new to you. Whatever book you read and whatever programming language you learn first will be an uphill battle.

    Pick any language and any well-recommended book and read it. Read it twice. Read another book.

    I would read the definitive guide first if I was you – maybe not all of it but the first couple hundred pages at least. Then, I would read Eloquent Javascript which, will be easy by comparison.

  7. JaiGuru on October 16th, 2012 10:40 pm

    I will say that, if CodeAcademy has an upside, it’s very earliest portion of the javascript lessons were actually quite useful. I learned enough about arrays and functions to be writing a VERY primative chat bot program in javascript without the use of objects.

    So, I can’t say I know enough about it yet to be able to declare that I have a good understanding of functions and arrays or not from it, but it’s gotten me that far at least.

    Thank you for the info, I will pick up both of those books in the near future.

  8. My not-quite-year of code : AnnMaria’s Blog on November 11th, 2012 4:10 am

    [...] I started out with Codecademy and perhaps it has gotten much better since I tried it, although given the fact that ten months later, comments on that post reflect similar frustrations, I don’t think so. My main advice is that if you have tried Codecademy and gotten frustrated, don’t give up. I really did give it the old college try. I went through 73 exercises in a week or two and decided my time could be better spent. Your mileage may vary. The next thing I did was get two books, The Essential Guide to HTML5 – which uses game programming to teach javascript – and Javascript: The Definitive Guide. [...]

  9. Coding Tools to Make Life Easier : AnnMaria’s Blog on July 2nd, 2013 3:02 am

    [...] year and a half ago, I took a look at Codecademy and was underwhelmed. It’s gotten mixed reviews and if you find it awesome, good for [...]

Leave a Reply