Learning to code through Codecademy: a great idea, but not quite perfected

As a librarian with a strong interest in web services, I’ve always wanted to improve my coding skills. I’m comfortable with HTML and basic CSS, and way back in the day my friends and I entertained ourselves by creating text-based adventure games in DOS using some form of BASIC, but to be honest, more advanced programming languages intimidated me a bit. So several months ago I was intrigued to discover Codecademy. The claim on their home page caught my attention:

Codecademy is the easiest way to learn how to code. It’s interactive, fun, and you can do it with your friends.

When I first signed up, lessons were only offered on JavaScript, but they have since added HTML, CSS, and jQuery (which works with JavaScript), and more content is being added on a regular basis. In fact, the site offers a course called Code Year, which was designed for people who wanted to make a New Year’s resolution to learn to code. Each week, starting from the beginning of 2012, there is a designated set of exercises for participants to complete.

Registration is free and only takes a moment (Codecademy states that they reserve the right to charge for premium content in the future, but for the moment the site is entirely free). You can give it a try without registering, but I suggest you set up an account to keep track of which exercises you’ve already completed. Each exercise consists of instructions on the left side of the page, and a window on the right with a command prompt where you can enter code and then run it. In some cases there will already be some code to get you started, and at other times you’ll write all the code from scratch. After you hit the run button, you’ll see the results of your code and a link to the next exercise will appear if you’ve written the code correctly. Otherwise, you’ll receive an error message and you’ll have to change your code to make it work. The system makes use of gamification (also popular in libraries): each time you complete an exercise you receive points, and a running tally will show at the top of the page.  Then, once you’ve finished a section of exercises, you’ll receive an achievement badge (an icon that shows up on your profile with a name representing what you’ve learned, such as “Loops in JavaScript” or “Recursive Functions”). After each new concept you learn through these exercises, there is a “project” – that is, a set of exercises where you put your skills to use building a program (such as a blackjack game or a cash register program).

I think this is a great idea. Coding is something you need to actually do in order to learn it –  I’ve tried to learn from a book and found it frustrating to be always shifting my attention from the printed page to my computer monitor. Considering the service is free, I would recommend that everyone give it a try. However, there are a few aspects that still need some work.

What I like about Codecademy:

  • It’s much less imposing than a heavy textbook.
  • Each lesson is broken down into a series of very short exercises, and as long as you’re logged in to your account, this means it’s easy to work through an exercise or two and pick up later where you left off – even if you only have a few minutes at a time to work on it.
  • When you get stuck, you can always refer to the Q&A, which is a forum where you can post questions about a given exercise and other users can post answers. In my experience, I’ve always been able to fix my issues by reading what others have already posted in the Q&A.
  • It’s web-based, which means there’s no software to install and you can log in from any computer (it even works on my iPad, but let me assure you, having to move the cursor around so much on a touch screen is not a pleasant experience).

What still needs work:

  • There is a bit too much hand holding. Too many exercises provide the vast majority of the code for you, and just prompt you to add a line or two. Although this means you can get through more content more quickly, I feel there should be more opportunities to start from scratch. I understand that programmers usually build on existing code rather than starting from a blank page, but I find I learn better when I have created something from the ground up. Some exercises are also too simple, in the sense that they tell you precisely what to type and on which line. I would rather figure more things out for myself.
  • The “hint” feature isn’t used consistently. Usually, this space is used to point you in the right direction if you’re having trouble, and it is a useful feature. However, there are a few exercises where critical information is located in the hint; in other words, there’s no way you could be expected to complete the exercise without looking at the hint. There are also some instances where the hint provides information that isn’t critical but is interesting and helpful to know, which means that if you were to complete the exercise without looking at the hint you would miss out. Of course, consistency is difficult to achieve when the lessons are created by other users, but perhaps they could have an editor look into this.
  • They take the gamification aspect a bit too far. In the early stages it seemed that I was receiving a new achievement every ten minutes or so, which made each one feel like less of an accomplishment. And you earn points for each exercise, even the ones that don’t require you to do any coding (they provide some text for you to read and then prompt you to hit the run button to move on to the next exercise). I would rather have the feeling that I earned all of my points.
  • There are some small technical issues. On a few occasions, I’ve written my code and seen it run correctly, but the error message says I need to change something. Usually when I check the Q&A someone else has had the same issue, and the answer is that you need to use a very specific variable name or change some spacing; in other words, what I’ve done is correct as far as the programming language is concerned, but the Codecademy system won’t acknowledge it. In other cases, the message tells me I’ve completed the exercise, but when I check back later there’s no green checkmark to indicate I’ve completed it. When this happens, I have to redo the exercise in a different browser.

Overall, I am certainly impressed with Codecademy, but it might not hurt for them to slap up a big “beta” sticker while they iron the kinks out. To their credit, each exercise gives you the option to give it thumbs up or thumbs down, so I’m sure they are collecting data as to what works and what doesn’t. I would suggest they take this one step further and put a comment box next to the thumb icons, since there has been more than one exercise I’ve found frustrating enough to want to write down a sentence or two in addition to clicking on thumbs down.

Have you tried Codecademy? I’d be interested to hear your thoughts, so leave a comment below.

Advertisements

17 thoughts on “Learning to code through Codecademy: a great idea, but not quite perfected

  1. I agree – great post and an astute analysis. I have many of the same issues with codecademy that you have and would gripe about it except that I think it’s the best thing out there. Especially for people like me (with no real coding history) the hand-holding does help, but I also think the site lacks some longer, soup-to-nuts assignments that would really get you working with the material that you are learning. The nice thing is that they do have Codecademy Labs (a less obvious link at the bottom of the page) that gives you the space to do any practice programming you like. I have found it invaluable to use that space to make some relatively simple, but still quite involved projects.

    By the way, it sounds like we have a very similar history with programming back in the days of BASIC. My friends and I lost a lot of nights making text adventure games during sleepovers. They were both laughably simple and wonderfully fulfilling.

    Best- – and keep coding.

    • Thanks! I haven’t spent much time in the Labs, but I should probably make a point of using that opportunity to practice my new skills.

      And yes, it sounds like we have quite a similar history. The games were definitely simple, but it would be fun to see them now. I’m pretty sure I never made any backups, though. Oh well – the memories may be better anyway!

      • Backups!? So, for my TI994a, I stored data on audio cassette tapes. I’d love to see how hard it would be to ever recover that data.
        And, I think you’re right – memory can be kind. No need to muddy the past with facts.

  2. A thoughtful review of Codecademy.

    I started Codecademy a little while ago, but with a different background, that is, no coding or programming experience at all. I enjoyed most of the features. I would add to your analysis of the hints, that on one or two lessons with which I struggled, there were no hints at all! I do quite like the hand-holding, since at this stage I require it. My favorite experience was using the extra lessons (Labs? not sure) to create an English to Pig Latin Translator, which I then ran on my Terminal.

    I haven’t used it in awhile – I got distracted by LearnStreet.com. LearnStreet has a similar interface (sometimes more frustrating, for a number of reasons), but it adds introduction texts and YouTube videos to get learners started on each lesson. I’d recommend checking it out, though it is also buggy.

  3. I’ve been using codeacademy for several months now and I completely agree. Some of the exercises are beyond easy because everything is done for and others seem almost impossible, but what I find, is that the instructions/tasks asked are not always clear. After searching the Q&A I’ll find a solution that works, but the wording that code academy uses is sometimes a bit funny. Overall though, great post!

  4. I just finished the HTML/CSS Codecademy course. I know more than I did before, (next-to-nothing lol) but needless to say its not like im gonna run right out and get a Web content editing job. I’ll need TONS of practice before ever submitting a job app/portfolio to someone.

    I particularly agree with you about the handholding bit. The last exercise has you do a website that’s basically a professional resume. All they want you to do is add attributes basic attributes to the page such as positioning, height/width and background color. That’s all you have to do, you don’t have to position the elements together so that they look neat and aren’t all spread apart. You don’t have to make the individual elements properly proportioned, they can look like something you created in Microsoft Paint while you were bored, and still be good enough to pass you through to the next lesson. You don’t even have to use good color combinations, I used like mint green,royal blue, and crimson. Hopefully, the next Codecademy update will make the final section a little more difficult.

    All things considered, I like Codecademy, it teaches you the basics in a way that’s easy to understand and fun, and the “Badge” system builds confidence, though as you mentioned they use it a little too much. At one point it seemed like I got a badge for completing each lesson in a course. I havent tried Javascript or any of their other courses yet, I plan to do that when I feel confident about my HTML skills.

  5. I honestly HATE the badge system, i dont know what it is, but it feels like its wasting your time, im learning javascript know after a problem cropped up on a HTML&CSS project, I checked with my ICT teacher, and he couldnt find any problems, now, only 8% through the javascript project, I’ve ran into yet another problem, and this one also seems impossible to get through, *SO ANNOYING*

    BJB

    • Although online learning has been around for a while now, and has improved dramatically over the years, it still has a ways to go to catch up with its potential. So as of today, there may not be an easy answer to your questions, but the more we build and improve solutions (and give our feedback to others who build and improve), the better off everyone will be.

  6. I am 13 years old and wanted to learn phyton from codecademy in 30 days is it possible if no than please, suggest me another site where I can learn for free, please suggest me something

  7. Great post Graham.

    This is Siva Nookala, founder at Merit Campus. At Merit Campus we are trying to get the complete list of Java Topics and lots of practice tests to perfect the learning. We offer high quality instructor led online course, 1:1 premium courses for affordable prices. Can I request you to review our website and if found useful, please add a review on your blog.

    The relevant links are

    http://java.meritcampus.com/
    http://java.meritcampus.com/core-java-topics
    http://java.meritcampus.com/java-quiz
    http://java.meritcampus.com/expert-java-training
    http://java.meritcampus.com/java-course-price

    Thanks a lot for your help and do let me know if you need any other information.

    Regards,
    Siva Nookala
    https://www.linkedin.com/in/sinoo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s