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'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.
Introductionary university-level mathematics does that to. Just take a random university's, say, Linear Algebra course.
The upside for codeacademy for now is that there are few viable alternatives and there is little information about comparable sites.
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.
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.
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.
Not to say the opinions expressed are wrong, just that this stuff shouldn't be mixed with your startup's product blog.
PS- I know that most developers google answers as much as they write things
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.
Check out the Abelson/Sussman lectures: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...
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.
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...
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.