Live data from Hacker News

On the Usability of Codecademy

programmingzen.com

21–30 of 85 posts

Re: On the Usability of Codecademy

#21

This online tutorial grossly overestimates how much the layperson understands about computer languages. For the complete beginner, far too much is left unexplained. No one actually codes using a REPL in a browser. Yet the site makes no attempt to explain why or how this REPL exists, or how it works. It doesn't explain why I can only type in certain places on the screen. It doesn't explain how to try again, or undo mi…

Maybe you're right about learning 'the hard way'. I too strongly believe in learning with rigorous practice. But, one has to understand that people take various approaches to learning and teaching.

There cannot be a right way to teach given the multitude of learners now online.

Re: On the Usability of Codecademy

#22
I was a complete beginner at coding a few months ago. I really really wanted to learn, so I've tried going to local meetups designed to teach newbies to code and I've tried Codecademy.

The problem I found was this tendency to start with the terminal as the teaching tool. The terminal is a black and intimidating hole to a beginner. Sure, I happily typed in 2+2 and got 4 as a result, and I understood how to store variables and even if statements and while loops, but honestly, I found this to be too abstract. I didn't understand what the terminal was and how typing in 2+2 was supposed to help me build a website, which is why I wanted to learn to code to begin with. I got frustrated and quit learning to code for a while as a result.

But then I decided to try out the free Stanford CS106A course. I was hooked from the very first lecture. Instead of starting at the terminal, Stanford had me download Eclipse (which is less intimidating than the terminal) and they started with a fun "Karel the Robot" language. In the first assignment, my goal was to make Karel the Robot run around the grid and drop / pick up diamond 'beepers'. I LOVED it. The excitement I got from actually getting Karel to do what I wanted was exhilarating and far more rewarding than getting a pretty badge from Codecademy. I completed the course in about a month and am now learning Ruby, which I absolutely love.

My point is, people want to learn to program so they can build something, so starting off with concrete and fun projects (versus typing random stuff into a Terminal) is the way to go.

Re: On the Usability of Codecademy

#23

This online tutorial grossly overestimates how much the layperson understands about computer languages. For the complete beginner, far too much is left unexplained. No one actually codes using a REPL in a browser. Yet the site makes no attempt to explain why or how this REPL exists, or how it works. It doesn't explain why I can only type in certain places on the screen. It doesn't explain how to try again, or undo mi…

> Coding is best learned "the hard way".

Funny. There is a series of books by Zed shaw called "Learn 'x' the Hard Way". The books tells you to type things first; the explanation comes later.

In my experience, the most important part of learning to program is that you can do something fun, quickly. If you enjoy the programming, you will continue with it, and then bother to learn the "why"'s. If you don't find it fun, why would you bother learning "why"?

The Code Academy tutorial isn't perfect, but I do think it's a fun introduction. Importantly, it's a fun introduction that require almost no set up. I know it has limitations, but it is pretty awesome, and a much better path into Ruby than a lecture on object oriented programming.

Not to knock the lecture. It's very important, in fact. I just think the lecture should wait until lesson 2 or 3.

Re: On the Usability of Codecademy

#24
One thing they might do: offer better feedback on an error by treating the input as a 'spelling correction' problem (like http://norvig.com/spell-correct.html). A useful implementation can be pretty naive when inputs are short -- e.g. my old numerical-expressions parser https://github.com/darius/expr/blob/master/expr/Parser.java)

Re: On the Usability of Codecademy

#25

This online tutorial grossly overestimates how much the layperson understands about computer languages. For the complete beginner, far too much is left unexplained. No one actually codes using a REPL in a browser. Yet the site makes no attempt to explain why or how this REPL exists, or how it works. It doesn't explain why I can only type in certain places on the screen. It doesn't explain how to try again, or undo mi…

Just a quick correction to your comment - they are CodeCademy www.codecademy.com, not Code Academy www.codeacademy.org

Re: On the Usability of Codecademy

#26

This online tutorial grossly overestimates how much the layperson understands about computer languages. For the complete beginner, far too much is left unexplained. No one actually codes using a REPL in a browser. Yet the site makes no attempt to explain why or how this REPL exists, or how it works. It doesn't explain why I can only type in certain places on the screen. It doesn't explain how to try again, or undo mi…

Agree with you about Codecademy's assumption/expectation of a layperson's understanding is ambitious but your expectation of what needs to be explained kinda deviates from their aim. Yes, they should've expanded on some concepts but Codecademy should really concentrate on the 'what' and not the 'why' as that can be developed afterwards. Spending most teaching on the 'why' (like most adult learners would do) early on will put off some users off as they do not feel they are 'doing' much and quit/move onto something else.

It is obvious the users' background covers a wide spectrum so Codecademy would have to draw a line somewhere and say here's the pre-requisites prior to starting the intro coding course. They may need to provide this background knowledge via a pre-sessional/foundation/principles course (or pintpoint users where to go if they don't) covering the barebone basics of computer science and computing as a task.

Whether 'the hard way' is the best is really up to the learner - people learn in different styles so whatever gets their attention really. As a suggestion , Codecademy should provide a list of additional resources for eager learners who wants to understand the underlying concepts and/or provide links to other courses if this particular course is not useful for them.

Re: On the Usability of Codecademy

#27
tl;dr -

I think I fixed this problem in my app (iheartpy.com) using AIML. Caution: Still a work in progress.

The whoe thing -

I am a self-taught programmer. And I had been an extensive user of codeacademy myself. I realized this rather serious design flaw early on and tried to do something about it.

Initially, I tried to right my own engine based on JSON but midway I discovered AIML. It suited the task perfectly. So I downloaded pyAIML library [1]. It is surprisingly simple to get started with. I hacked around a bit and got a workable python app.

Finally using pyAIML + regexp, I ended up with a crude engine that takes something like this (in Python):

      def foo(param1, param2)
and spits out:

      FUNCTION foo PARAMS param1 param2
which can be easily manipulated and replied to by the pyAIML parser. It worked flawlessly. And moreover, designing lessons is as simple as creating an XML file.

Then I threw together a minimal UI and got it up and running on App Engine here:

      iheartpy.com
I used CodeMirror [2] for the editor. The focus of the UI was to be extremely minimal ( = blazing fast) and delightfully non-distracting ( = no post-to-facebook rubbish). This being a side-project, I thought I could easily get away with that. :)

Honestly, this is my first project and looks more like the work of a script-junkie at this point of time. The lessons are not done yet. I wasted a lot of time in trying to optimize my app for App Engine. And now I'm an 18 year-old who has a LOT of exams on his head and this unfinished project. It is kinda disheartening.

Anyway here's the github repo [3]. It is not very neat. Psst.. I added some LOLPython magic as well [4]!

Finally, I made something that is essentially an MVP. I'm new to both design and coding. Plus, I don't think I'm proficient enough in Python to teach people.

In short, I need help. Would be happy enough with some feedback, though. ;)

[1] http://pypi.python.org/pypi/PyAIML

[2] http://github.com/marijnh/CodeMirror2

[3] https://github.com/creatorrr/IHeartPy

[4] http://www.dalkescientific.com/writings/diary/archive/2007/0...

Re: On the Usability of Codecademy

#28

I was a complete beginner at coding a few months ago. I really really wanted to learn, so I've tried going to local meetups designed to teach newbies to code and I've tried Codecademy. The problem I found was this tendency to start with the terminal as the teaching tool. The terminal is a black and intimidating hole to a beginner. Sure, I happily typed in 2+2 and got 4 as a result, and I understood how to store varia…

Is there a link to this Karel the Robot exercise or is it a hand out?

We're in the amidst of creating something complimentary (different too) to Codecademy called http://CodePupil.com. We're eager to see different styles of teaching; especially examples where gaming is used!

As noted in the OP's article creating a new experience and especially one that teaches all the Elizabeth's how to code is a big challenge. We've been asking our friends like Elizabeths to test and then we reiterate. Also we've found Mechanical Turk to be helpful in re: to user testing feedback. There seems to be a lot of Liz's there.

Re: On the Usability of Codecademy

#29
I dunno. She didn't really follow the instructions. Maybe the error messages should be more helpful. But part of being a programmer is being very precise and having to deal with initially obscure and unexpected errors like that. Its frustrating yes, but if a person's reaction to that tutorial is to give up rather than be intrigued and push harder, I can't imagine them ever having the patience or drive to debug way more complicated systems.

Re: On the Usability of Codecademy

#30

I was a complete beginner at coding a few months ago. I really really wanted to learn, so I've tried going to local meetups designed to teach newbies to code and I've tried Codecademy. The problem I found was this tendency to start with the terminal as the teaching tool. The terminal is a black and intimidating hole to a beginner. Sure, I happily typed in 2+2 and got 4 as a result, and I understood how to store varia…

Is there a link to this Karel the Robot exercise or is it a hand out? We're in the amidst of creating something complimentary (different too) to Codecademy called http://CodePupil.com . We're eager to see different styles of teaching; especially examples where gaming is used! As noted in the OP's article creating a new experience and especially one that teaches all the Elizabeth's how to code is a big challenge. We'v…

I too tried my hand at it in a side project: iheartpy.com

See if there's anything you find useful in it. Although, I think this comment needs to be someplace else.

Post reply on HN