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.