

Teaching Programming - rdegges
http://zaidox.com/teaching-programming.html

======
zachgalant
I've done a lot of teaching programming. Mainly to beginners while at Stanford
and now to beginners aged 5 to 85 using <http://codehs.com>

------
davidroberts
_Learning to program is really difficult. Teaching to program is even harder._

The only programming class I ever took was taught by an unmotivated teacher
who only taught programming because he needed the money. That was in high
school. I started out excited about the amazing power programming gave me to
bend the computer to my will and make it do cool things, but the teacher's
lack of enthusiasm covered the class like a dismal fog, and his intensely
boring lectures and make-work assignments totally dampened my enthusiasm. I
finally dropped the class.

I didn't go back to programming until years later when I was taking grad
school in an entirely different subject and I rediscovered programming on my
own. I taught myself C and ended up spending all night coding and debugging
and loving it, to the point where I neglected the actual subject I was
supposed to be learning.

While I've never taught programming to others, I spent several years teaching
technical classes to engineers in the semiconductor industry. I also taught
English as a second language for five years. From these experiences, I've
learned the following:

Learning to program is really fun. Because programming is really fun.

Teaching any subject is fun if you enjoy the subject matter, have a passion
for teaching, and if you teach people who want to learn and have aptitude in
the field.

So if teaching programming is hard (instead challenging, but fun) it could
mean you either don't enjoy programming, you don't have passion or aptitude
for teaching, or you need to find motivated students with an aptitude for
programming.

If the problem is that you don't enjoy programming, you need to find a
different subject to teach.

If you don't have passion or aptitude for teaching, you need to get out of
teaching as soon as possible, because you are likely ruining your students'
first experiences with the subject matter.

And if your students appear unmotivated or lack aptitude, you should consider
deeply the possibility that this could be because you have one of the two
issues above, and repeat until the problem is resolved, or until you are
really, really, really sure the problem isn't you.

If you are absolutely sure the problem isn't you, then you need to consider
finding a teaching situation where students _are_ motivated, and you need to
discover methods to gently encourage those who genuinely lack programming
aptitude to focus their learning in areas where they do have aptitude.

But before doing that, maybe it would be good to take one more round of
considering if maybe the problem isn't you.

