TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

What We've Learned About Teaching Code

44 点作者 zds大约 13 年前

13 条评论

apsurd大约 13 年前
Since I know the codecademy team is always listening, I'll share my feedback through supporting my two friends through codecademy:<p>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".<p>The second part is a bit tricky... are they really learning to program?<p>IMO the problem with all pragmatic approach is the lack of <i>the need to understand</i>. I know you didn't intend it, but codecademy suffers from the same tired "tutorial" approach. Users follow instructions to win the prize.<p>I will say codecademy is better than the tutorial approach, but it's still a tutorial.<p>The fundamental problem is my two friends <i>need</i> 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.<p>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.<p>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, <i>line-by-line</i> into the switch statement... and so on.<p>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.<p>They don't know how to code.<p>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 <i>never once</i> 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?
评论 #3951269 未加载
评论 #3957921 未加载
评论 #3951340 未加载
评论 #3951370 未加载
chriszf大约 13 年前
When you're teaching something completely new to someone, at first you won't even have a common vocabulary. This is true no matter what you're teaching, and you have to dedicate some time to establishing the language (English, not computer).<p>One thing that makes coding a little harder is that many of the analogies we make for non-coders aren't especially clean: A hash is like an set of cubby holes, each can be named and filled, and the set can be infinitely expanded. Packet routing is like trying to find your way from New York to California, only stopping at major cities to ask for a general direction. Memory is like a big sheet of paper, and x = 5 is like writing 5 somewhere on the paper, and x somewhere else, and then drawing an arrow between them.<p>I'm not saying these are the best analogies (or even any good), but I have yet to hear ones that aren't riddled with holes. The average non-coder doesn't have the context to back-fill these holes. As an instructor, you need to realize this and take the time to lay more of a foundation than you think.
评论 #3951277 未加载
评论 #3951091 未加载
teach大约 13 年前
I've had a couple dozen students working through many of the CodeCademy programs this semester as an experiment. And most of the Javascript lessons currently on the site are just barely above mediocre.
评论 #3951326 未加载
评论 #3951053 未加载
aridiculous大约 13 年前
In college, I listened to some advice about choosing less experienced instructors because they have more recently been through the same material that they are teaching. Plus, they'd be more motivated and less jaded. Turns out that the experience factor is not that important.<p>At this point, after having many mediocre teachers and very few good ones, I've come to the conclusion that only a small percentage of "teachers" are actually worth learning from.<p>The only good teachers I've had were meticulous about their knowledge AND really loved teaching. Not one or the other.<p>It basically requires a full-time teacher. Anyone besides that is actually worse for me than no teacher because they are apt to ruin my interest in the subject. Maybe I'm spoiled, but most classes aren't much better than a textbook and a chat with a good friend.<p>Who does that leave as worthwhile teachers? Rare people like Feynman, a couple of instructors on Lynda.com, one or two from my undergraduate classes, and a couple from the new array of online classes. Again, you can be a grad student and be a great teacher, but you have to know your domain inside and out, and love teaching it. That means fielding questions with ease and, probably, being able to teach without notes if needed.<p>One of the reasons I like open online courses is that you get to experiment until you find an experienced professor who had enough initiative to start an online course in the first place. I really do mourn the downfall of the in-person class setting, but at least in my experience, a vast majority of them aren't what they're cracked up to be. Maybe at top 10 schools the situation changes?
mussussu大约 13 年前
I am a student at codeacademy, I am 41 years old and I have had always the urge to learn programming, I have tried many online tutorials in different programming languages and @ first it is exciting but later on it gets fustrating and finally I get lost, codecademy has given me hope again that i dont have a disability in programming, yes I get stuck and I have to do the exercises 3 or 4 times until I grasp.the concept, but I can feel my progress and I am allways excited to take the lessons every day
Pynkrabbit大约 13 年前
I really enjoy codecademy (I am currently at 930 points and 47 badges). I find its a great way to learn and practice new concepts with a much smaller barrier to entry and instant feedback. It is by no means perfect. There are a few issues that come to mind: 1. Because of the way the code validations are written there tends to be only one or two ways to pass a lesson. This can lead to frustration when a student writes a piece of code that performs the task correctly but because it doesn't validate correctly he/she doesn't pass. 2. I found (for me) that the pace is actually to slow. I have cruised through all the lessons and have participated in beta testing some of the more advanced javascript modules (i.e. introduction to JSON). It would be nice if there was more advanced content to move on to but this should be corrected as time goes by and more content is created. 3. General spell check and editing could be better 4. Currently there is no content that talks about the full stack of technologies in a web application. This leaves the student studying small siloed pieces such javascript/html/css on their own without a view of the bigger picture. How does a web server fit in? How do I communicate with a database? Why is there no talk of MVC or REST? Basic coding skills are great but without a comprehensive picture of an application they are pretty useless.<p>Even with these issues codecademy has been a fantastic resource for me. I have learned a ton and have gone on to start teaching myself more advanced topics and have been learning different libraries such as backbone.js, node.js and d3.js. Without codecademy I would not have been able to get through the documentation on these libraries. One of the most valuable things that codecademy has taught me is to not be intimidated by technology. From the outside the programming world can seem like a pretty intimidating place. Codecademy makes that first step a little easier...
Moneyherd大约 13 年前
“There are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns – there are things we do not know we don't know. ” The Johari Window - quote from Donald Rumsfeld<p>This is the point of user acceptance tests - it doesn't matter if the code does 100% what it was designed to do. If the users can't make it work, it's no good.<p>Nice analysis from Codecademy.
评论 #3951177 未加载
评论 #3951094 未加载
rikramer大约 13 年前
I'm going strong on codecademy. It's great to have a structured approach to learning. There are so many resources out there that it's difficult to even begin to learn coding. I don't expect that this will ultimately teach me to build products with code but it at least will introduce me to common/core languages and provide a base to continue my studies through other means.<p>Right now I'm working through the classes nightly. 15 badges down...no clue how many to go.
Laner大约 13 年前
Interesing to read this and all the replies. And it got me thinking. Part of what has been a great learning experience for me is the "detective work" that I had to do to understand why. That involved a lot of googling, but it paid of and made me more hungry for knowledge. And when I try to code things on my own it has helped me to survive the debugging. So perhaps part of the problem also is the student. When did we start expecting that one webpage would gives all the answers?
RockofStrength大约 13 年前
"There is an interesting paradox in teaching: the better you know a subject, the harder it is to talk to beginners. Experience means you have forgotten what tripped you up when you were a beginner."<p>This reminded me of how I always have to clearly explain to my beginner piano students that the higher the note on the staff, the further right on the piano it goes. It's very non-intuitive that up/down on the staff = right/left on the piano.
adambrod大约 13 年前
I agree 100%. Codecademy is great way to learn the syntax and some of the best practices. I agree their is a gap in understanding <i>what</i> your doing.<p>I went through Stanford's Programming Methodologies on iTunes U (free!), and they go over a lot more of the why, as well as decomposition and other stuff.<p>What if Codecademy had short video/audio lectures after each section that would show more of a recap of how/why it works?
pitchups大约 13 年前
This phenomenon - of the difficulty of being able to teach something once it is obvious to you - has the rather unfortunate name - "the curse of knowledge", and it is well documented based on research in other fields too. There is a good discussion about it here : <a href="http://37signals.com/svn/posts/213-the-curse-of-knowledge" rel="nofollow">http://37signals.com/svn/posts/213-the-curse-of-knowledge</a>
评论 #3951268 未加载
dreamdu5t大约 13 年前
Isn't this common sense? If you've ever tried to teach anyone anything, you've run into this.
评论 #3951041 未加载
评论 #3951093 未加载
评论 #3951009 未加载