Hacker News new | comments | show | ask | jobs | submit login
Why Codecademy is overrated and missing its target audience (attendly.com)
60 points by corinamackay on Sept 26, 2012 | hide | past | web | favorite | 28 comments

Thank god someone has said this. I want to learn JavaScript. I tried Codecademy. My god, it made so sense whatsoever. There was context for nothing. "Why should I learn this? How does it fit?" "Just shut up and do what this prompts tells you to do, like a beast of burden." This is why I loved the top post at HN today: Learnable Programming. If only he was teaching JavaScript online, it'd make sense and be an actual breeze.

And for the record, yes, I already know to close HTML tags and that typos will kill code. And what the hell a browser is. And that JavaScript is named that to cash in on Java and should properly be called ECMAScript.

I think context is the hardest part of teaching web-application development. You have so many moving pieces that need to be taught before someone can build something tangible that often-times people get stuck or discouraged before they hit this point in the learning process.

When you sit back and look at it web application development is a total disaster. If you tried to conceive of the "ideal" UI platform (or even a "good" one) you would never, in a million years, come up with what we've got now. It is a testament to the skills of everyone in the industry that things like google maps, Gmail etc. can be built on this sky-scraper of bananas. No wonder it is hard to learn.

Codeacademy is awesome! The industry had to start somewhere and they've done a stellar job, but it could be even simpler.

That said, the issue the author appears to be having is specifically the disconnect between the marketing, 'easiest way to code' and the reality.

For example, my gf who is a non-coder but has modest computer literacy skills, tried it out for the first time last week (doing the python track). She was going fine until about 10 minutes in and didn't understand some really elementary concept, she spent the next 30 minutes trying to figure it out, got frustrated, and then gave up.

A quick win might be to focus on the community aspect more, helping each other, live chat rooms and forums, and explain the UI a bit better. There might even a tutoring revenue model somewhere in there...?

Technical people have years of built up mental models that we take for granted. You really have to take someone like your mom and put her on the site, to realize just how complicated it is for the masses.

I have used codecademy to teach my gf's brother (12) who is a computer n00b that wants to make computer games, I'm tutoring him while he's using the computer. We hit a brick wall at assignments. He could not understand why `a=a+1` is okay, he could not under stand how `x=1` is okay and `1=x` is bad syntax. Codecademy does not explain how programming is different from algebra. Codecademy test if basic concepts are understood, eg. difference between `hello`, hello and hello() I think n00bs w/o tutoring wouldn't even get past further stuff.

The problem with Codecademy (and most programming instruction) is that users are learning in a vacuum with no real direction. Learning for the sake of learning rarely works, unless you're an autodidact extraordinaire. Maybe I'm completely wrong, but in my experience, I learn best by doing -- specifically when working toward a concrete goal. Codecademy is a decent option if you just want to refresh or pick up the basic syntax of a language. But for in-depth learning -- as with all things in life -- you'll learn best by doing, especially if you need to know that certain something to progress.

@bitsoda, completely agree

I try to stay out of these "learn to code" conversations due to being crucified for believing that it takes years to become a programmer who can create anything of value or significant complexity.

I've helped TA for CS classes and aided new CS students in college. The intro classes start with Python, second level classes move on to Java and OOP.

Students really struggle and bust their behinds to pass these classes and become good coders.

When websites try to sell an equivalent education in a matter of weeks, I always have trouble believing them.

On the other hand, I've had some good experiences with LCTHW by Zed Shaw (I used it for refreshing myself in C and regex). But I think it was helpful mostly because I already had the coding mindset.

I'd like to see a "Learn to code" website really focus on "warping" the average mind into a coder's mind. Attention to detail, thinking holistically, and iterative problem solving should be the teaching goals for any resource that wants to teach beginning coding.

> I'd like to see a "Learn to code" website really focus on "warping" the average mind into a coder's mind. Attention to detail, thinking holistically, and iterative problem solving should be the teaching goals for any resource that wants to teach beginning coding.

Introductionary university-level mathematics does that to. Just take a random university's, say, Linear Algebra course.

I started codeacademy about a month ago. (I am a complete beginner at programming). The article sums up a complaint e-mail I sent the other day.

The upside for codeacademy for now is that there are few viable alternatives and there is little information about comparable sites.

I spent probably 10 hours on codecademy. I've done PHP, Ruby and some CS classes in college, but day to day I don't write that much code.

I wanted to get some fundamentals on Javascript to be more capable with D3.js.

If I didn't have all of that previous knowledge, I would find it really difficult to get going.

I wouldn't call Codecademy overrated. But I'd say that geeks like me (and probably you guys) are the wrong people to be evaluating Codecademy.

If they're not testing out their teaching methods on n00bs, they should get on that right now.

I'm a high school computer science teacher, and I use CodeCademy in my intro Web Development course.

For my use case, it's not bad, but the students are working through the lessons in class with me there to help them when they get stuck. And they get stuck a LOT. The lessons are improving (slowly!), but they've still got a LONG way to go.

I can't imagine anyone is teaching themselves to code anything using CodeCademy that couldn't have done just as well using a tutorial online. Anyone with the natural aptitude to make it through their lessons could teach themselves with damn near anything.

I have the same experience as a student at Hackbright, a 10 week programming course. Prior to hackbright I took a lot of codecademy courses, but it never got me from newbie to 'yes I can do this' programmer. Yes, I can follow the exercise and figure out how to pass each quiz, however, I believe CodeCademy essentially suggests that you have to follow 1 way to do things to be correct, which is not how problem solving (and programming) works.

At Hackbright however, I found learning with CodeCademy to refresh some knowledge is helpful, especially with a teacher around to ask questions. Most of the time, the questions confirm that my solution is also valid, but it's just different from the CodeCademy answer.

Why is this being posted on Attendly's blog? This seems suited for a personal blog, I don't think a startup's product blog is really an appropriate place to lambast another product/startup/project.

Not to say the opinions expressed are wrong, just that this stuff shouldn't be mixed with your startup's product blog.

Yeah, it's not perfect, but their goal was obviously to get you to jump straight in to coding. No explanations, no videos, just "bam, you're coding." Could they do a better job? I'm sure they could, and I'm sure in the future they will. But couldn't every product?

I actually agree with much of this. Having attempted to "re-learn" to code since my time in college I got several lessons in before hitting a wall where the on-site messaging failed to be helpful anymore. I loved the concept, and was more than able to find help with Google and friends, but to keep things on-site and cohesive, they'll have to improve some of that.

PS- I know that most developers google answers as much as they write things

I think Udacity does an excellent job of structuring intro coding lessons. They provide the proper motivation (build a search engine) and explain the theory behind what you're doing.

I agree, I've tried a bunch of different "Learn to Code" sites out there and think the Udacity's "Intro to Computer Science" course to be the best, IMO...

If you want to really learn to code as a beginner, you should check out CodeHS (http://codehs.com). You get tutoring and help from real people, and the programs you write are actually really fun and interesting.

The focus isn't really on syntax but more on problem solving with a computer and helping motivate why you should write good quality code.

The idea is that you become a good programmer by having people read your code and give you good quality help and feedback.

A beginner, who is willing to put in a bit of effort and that wants to discover the magic and beauty of programming?

Check out the Abelson/Sussman lectures: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...

Wow. I really disagree. I suppose it's hard for me to decide if I am a "total beginner" or "slightly intermediate" beginner, but either way, I approached the Javacript Codecademy about 2-3 months ago with a promise to myself to finish it, no matter what, and as a true beginner in my own mind.

I found the lessons and explanations generally very strong. There is A LOT of review, and I mean a lot. So, if one teacher's explanation doesn't work for you, wait 5 exercises and a huge review of the concepts will soon follow.

I understand the argument that there is "no context." Often, I find myself wondering how I get from recursively counting sheep to building a real-live website/app. But, big point here: as a beginner, I can't handle context. I need something very boiled down. As far as Codecademy teaching me the basic, boiled down concepts, I feel it has succeeded amazingly with this. I am almost done with THE ENTIRE javascript track and have learning tons. In fact, I can now pair with my husband and vaguely get what he is doing. "Oh yeah, there is your array of arrays and objects!" type stuff.

In reference to getting stuck, yea, okay sometimes that happened to me. The first thing I did was look at their Q&A forums, and someone usually had the same problem as me. There was already several solutions and explanations posted. I read through their code and then blindly fixed my own. If a student is copying and pasting, well, they are just cheating themselves. I don't believe there is anything wrong with looking at the correct code and then going back to your own and rewriting it a few times to make sure you understand. This was my approach. If this didn't work, I was proactive by going to the internet and googling things. This often worked to solve my confusion and taught me things about how "real coders" solve their problems. If I was still stuck, I could always wait until my husband got home from work, but this has rarely ever occurred. (I know not everyone has this resource and all, but he wasn't that crucial to my codecademy learning as I did codecademy during the day by myself). I have only felt a few times, in the entire Javascript track, of over 200 or so exercises, that I had to ask a programmer directly for help.

Overall, I really cannot relate to the qualms others have with codecademy. If you are expecting something magical to happen... well... yea, they don't magically make you a hirable Javascript expert in 2 short months, and, yea, not every exercise is great. Every learner, no matter WHAT platform they are using to educate themselves, should/must take some responsibility for helping themselves out of problems by going to the Q&A or to the web, or occasionally, asking a programmer friend (most of us have at least one of those). I believe that with these tools available, the RARE Codecademy issue I ever have is quickly solved. But again, even needing to do this for me was very rare, as the lessons were generally good.

So, this beginner gives them an A, after the whole Javascript track completed. I know a lot more now than I did before, and I credit Codecademy for that. I don't think they sell this as a "2 months to becoming a Javascript ninja." They did, however, tell me I would learn a lot about basic concepts, and that I did.

"The first thing I did was look at their Q&A forums, and someone usually had the same problem as me. ... If this didn't work, I was proactive by going to the internet and googling things. This often worked to solve my confusion and taught me things about how "real coders" solve their problems."

This. I don't understand why people think having to Google something here or there is a complete failure of Codecademy. If anything, that gives them a better idea of how programmers solve their everyday problems.

It would be really interesting if Codecademy attached keywords or Google phrases to each step in a lesson. If they sensed that someone was stuck, they could show the phrase they recommend Googling, and explain that that's probably what a programmer would do. Or they could just sneak in a step in a couple lessons that involve Googling something. I really think that is a huge part of the programming mentality that should be taught.


When making the lessons they should include a quick Google button somewhere inside. Learning to use Google to seek or ask for help is vital. So many problems would be solved in seconds or minutes if people simple just knew how to look for the answers to the questions they're asking...

I am going to turn to a book because a book has what Codecademy does not have and needs: A professional editor who will question everything with the eyes of an outsider who is also experienced at developing information for learning. I got the impression the Codecademy stuff was done by the first person who chose to do it with absolutely no background in any teaching techniques or even basic informational delivery skills.

I really don't agree with this. I had no experience with coding, but after messing around on Codecademy I was able to put a website together > http://outgrow.me/ Isn't that the whole point?

codeavengers.com is way better...you dont have to search through forums if your answers are your wrong.

I have to completely agree with this

I think there are 2 key issues at play here:

1. The difference between user expectations and delivery

2. Not enough of a narrative and different levels of motivations

1. This is where you expect something to be really easy, or really amazing, or really beautiful but instead get something simply easy, amazing, or beautiful. The fact it doesn’t have the superlative means a slight let-down or disappointment.

When I tackled Hartl’s RoR tutorial, he made it clear that even just getting starting by installing and configuring the tools and environment can be a bit of bitch, particularly for new comers. Sure enough, when I encountered problem after problem, I was mentally prepared that this could happen. I wasn’t discouraged.

I think Codeacademy would be well served to provide some kind of contextual introduction for how difficult – but ultimately rewarding – programming can be. Rather, it makes it sounds like a stroll in the park with some friends that can be picked up at the drop of a hat. This is inevitably going to lead to frustration when the user finds this isn’t the case. Their expectations are not matched by the reality.

A second aspect to this is that programming is different than other pursuits you may do in your spare time, like sports, writing or drawing. For example if you’re a bad pool player, writer or drawer you can still play, write and draw ‘till your heart’s content and reach the end of the game/book/picture. It doesn’t matter whether you’re good or not.

But with coding, you can’t just offer up any old attempt at the code and have a program run for you. It has to be correct code. So it becomes the equivalent of saying why not come play an awesome game of pool with your friends, but when you turn up there’s a cranky coach who won’t let you take a shot unless you have perfect form and execution. Or a writing class where the teacher crosses out your work in red pen and won’t let anyone read it until it is grammatically perfect and conveys your meaning in perfect clarity and beautiful prose! I can imagine these activities would quickly get frustrating too in such a context, and wind up losing your interest unless you were prepared for such rigor.

2. The second issue with Codecademy is a lack of narrative. Other comments point out that there are multiple entry points and it doesn’t always get you to follow a linear path. This is something that services like Treehouse try to improve upon (I started learning HTML and CSS with them) by bringing elements of gamification to the tasks. You win badges, unlock new lessons, get treated to funny videos, take quizzes and it generally feels like you’re progressing as part of a narrative.

The problem with learning to code is that most exercises are pretty dull and repetitive. They’re like Mr Miyagi’s “wax on wax off” lessons – it’s hard to see the point to them without knowing the end goal. The reason why Daniel LaRusso continues to do this annoying tasks if because he has a really powerful motivation to do so. He knows he wants to master karate to stand up to bullies and prove himself in the sport.

I think for anyone who casually just thinks ‘learning to code sounds fun’ then they’re doomed to failure, because it is hard work and has a lot of obstacles to overcome. Whereas someone who has a business idea or a problem they really want to be able to solve will happily stick with it, because they have a vision for what it will help them achieve. I’m not sure how Codecademy could possibly cater to these different types of individual. One amazingly cool way though, would be ask at the beginning “describe what you want to build” and create an algorithm that could match the types of functionality required with the video content that would help you build it. Then you’d have a really, really compelling, tailored narrative that helps you to your end goal. Then, for the more casual user, they could try and think of more fun, practical applications they can work towards building to give them a sense of purpose.

As everyone has referenced though, Codecademy – and others like it – is an amazing step in the right direction, and will only get better with time. The fact that people care about it is a major indicator that it is on the right track and will ultimately succeed.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact