9 ms·
Since I know the codecademy team is always listening, I'll share my feedback through supporting my two friends through codecademy: Firstly they love it. The ga
by apsurd 14y ago
Since I know the codecademy team is always listening, I'll share my feedback through supporting my two friends through codecademy:
Firstly they love it. The game mechanics and the reward cycle is a great motivation for them. I think nobody can argue that you've found a great way to get TONS of people to enjoy "learning to program".
The second part is a bit tricky... are they really learning to program?
IMO the problem with all pragmatic approach is the lack of the need to understand. I know you didn't intend it, but codecademy suffers from the same tired "tutorial" approach. Users follow instructions to win the prize.
I will say codecademy is better than the tutorial approach, but it's still a tutorial.
The fundamental problem is my two friends need me to teach them how to think in code, how to conceptualize the problem, how to understand that "i am taking this problem, i am working out a solution in my brain, in english, and then i will write this solution in code" They simply do not have the capacity to do that. And they are 5 months in through codecademy.
Just yesterday my friend had the idea that when using a for loop, the loop passed all values at the same time to the nested switch statement, upon which the switch statement would evaluate ALL the variables at the same time, using whatever the hell case was the best match.
He couldn't pass the level because he did not visualize in his head that the for loop passes each value, one at time. Then it procedurely flows down, line-by-line into the switch statement... and so on.
My friends do not have pictures in their head about how code works, why it works that way, and how to use those pictures to draw their own.
They don't know how to code.
EDIT: sorry one more thing. The only lifeline they have when they get stuck (aside from asking me) is to look at the QA. I have never once seen an answer that explained the answer, nope, it was "here put this magic code in it and that way it will PASS! YAY!" And I mean answer in the sense of "why", not why does javascript require a return here instead of there, or why the "right" answer is to put this code before that code, or the strange reason you need this bracket here instead of there -- I mean why! why? really...why?
- patio11 14y agoThat's not the worst thing in the world, since most pedagogy that works is of the basic format "You should know X. What should you know? Class repeats X. Good, because you should know X. Timmy, if I say Y, what do you say? Timmy repeats X. Good job Timmy, because you should know X. Susan, if I say Y, what do you say? Susan repeats X. Good job Susan, because you should know X. You should also know that if Y', X'. What should you know? Class repeats if Y' then X'. Billy, if Y', what do you know? Billy says X. Can anyone point out Billy's mistake? June does. Good job June, because if Y', X'. Billy, try it again. Billy does. Good job, Billy. What if Y instead? Billy says X. Good job Billy. Billy got the right answer because Billy knows X, except when Y', then X'. Class, what have we learned? Class repeats X and if Y', X'." While it is true that they don't know how to code, the more specific status is that they are presently learning to code. That's not the worst thing in the world -- so am I, and I get paid for it fairly regularly.
- apsurd 14y agoEssentially you are saying something is better than nothing. I wholeheartedly agree. As a person whose purpose in life is more and more "Free information in order to Free Education", all I'm saying is I think we can do better; a lot better. Rote memorization certainly works. But I don't think anyone anywhere, has ever proved that it's an efficient or even particular good way to learn something. And yet modern civilization takes this for granted. p.s. I never went to college so this is all outside-in.
- nosignal 14y agoAt the risk of being pedantic, it's worth noting that some things benefit from memorisation (e.g. the alphabet) and some things benefit from "higher" learning (e.g. understanding the concepts of programming). I don't think patio11 is necessarily saying "something is better than nothing"; sometimes it is _better_ to teach someone 'if you see the shape O, you say "oh"'.
- apsurd 14y agotouché =) I understand that very clearly when you put it that way. I remember my dad beating the alphabet into my head. It was the only way that he could eventually teach me how to read. Thanks for that.
- chii 14y agoi agree too - the foundation stuff should be memorized so well that you know it like you would know the back of your hand. This way, the instant recall of information can then help the higher level learning that goes on. Think maths - if you can't add/subtract/multiply/divide fast, you will have a hard time doing algebra and calculus.
- SkyMarshal 14y agoYou bring up an interesting point about whether outcome-based education is effective in learning programming. On the one hand, as apsurd points out, programming is probably not something that can be done without understanding what you're doing. It's one thing to program HTML, CSS, simple Javascript where you're getting instant visual feedback [1], another to write C, Python, Java, etc. where the feedback is not so instant or visual and requires you to keep a constantly updating mental model of what's going on. On the other hand, learning something new involves doing it enough that your neural pathways rewire to become more proficient at it. As you pass the stages of constantly thinking about what you're doing to how and why, leaps or breakthroughs in understanding become more likely and frequent - jumping from plateau to plateau so to speak. Question is, what's the best way, and can it be abstracted to web-based tutorials? I don't know what current state of the art Cogsci research says about this, though it's on the todo list [2]. 1. http://news.ycombinator.com/item?id=3948737 http://news.ycombinator.com/item?id=3948737 2. http://www.reddit.com/r/cogsci/search?q=education&restrict_sr=on http://www.reddit.com/r/cogsci/search?q=education&restri...
- slaundy 14y agoThanks for this nuanced and thoughtful feedback. Our tool is a new way to present information, and the course creator community is figuring out how best to take advantage of the format. You wouldn't write documentation in the same way that you present to a crowd of 2,000 people, and you won't write a Codecademy lesson the same way you write a textbook. It will take some time to use the platform to its full advantage. I'm excited to see what innovative courses the community comes up with, and I would love to hear your suggestions about the product or curriculum. Feel free to reach out directly at sasha at codecademy dot com.
- rikramer 14y agoHey Sasha, As mentioned elsewhere on this thread, I'm aggressively working through the courses and have found it immensely helpful. A couple of suggestions: 1) It would be great to highlight on the site some success stories as these develop. I'm learning a lot but my concern is how translatable my learnings will ultimately be to developing real products. It would be great to see the outputs created by people that have worked their way through the courses. 2) How about a demo day for 'grads' who produce companies / products (a la incubator programs)? Seems like this would be a great opportunity for exposure and publicity (Just keep me in mind please so that I can get in on this once I turn my learning into a tangible product :))
- slaundy 14y agoThese are excellent ideas! We certainly want users to be able to use what they have learned into real products. Send me an email—would love to hear about what you're building. sasha at codecademy.com
- rikramer 14y agoWell I'm not building anything yet except my skills and confidence. I'll be sure to reach out once I do get to the stages of building products. Cheers.
- wturner 14y agoI consider myself an "average" person teaching himself to code and the first thing I did was make a commitment to aggressively imbue the activity into my lifestyle for the 'I need to learn to think like a programmer" reasons you mentioned. I don't believe you can truly "learn" this stuff any other way. It needs to become habitual and the easiest way is to absorb it into your day to day existence regardless of how irritating or slow it may seem for the first...three years
- aerie9 14y agoThanks for contributing your friends' experience learning programming. I am a programmer-in-learning too, and when I first signed up for CodeYear, I really enjoyed going through the first few sections and was amazed I was going that fast. Then I stopped for a few weeks because things got busy, and when I returned I found that nothing had stuck. So I had to go skim through the beginning tutorials again and got a little bit farther. Now it's been a couple of weeks, and I remember nothing. So, I conclude, it's not really working as well as I thought it was. I am coming at this with knowledge of VBA, so I am guessing the helpful thing would be to find the comparable code in Java, then attempt to fill in the missing blanks and begin building up to the more difficult concepts from there. But I have no clue how to do that.