Thursday, September 8, 2011

Learning to Teach

I spent a few hours yesterday teaching David Haber (@dhaber) an introduction to PHP and internet technologies.  We covered both fundamental topics (such as, how the internet stack is organized) and practical topics (such as, how to set and retrieve a cookie on a client browser).  I wouldn’t be surprised if I learned more in the process of teaching than he did in learning from me.  Let me explain:

There is nothing quite like teaching to make you realize the gaps in your knowledge.  The holes where you are a bit weak on the material are quickly tested, and it’s very obvious when your understanding is incomplete.  Albert had the same experience while teaching his most recent Skillshare class, and I couldn’t agree more.

My wife is currently a medical resident and in her field their is a simple expression that captures the phenomenon I’m describing.  When learning a new procedure, residents are encouraged to “See one, do one, teach one.” Your process of learning a new topic is not complete until you can teach it to someone else.

I had a similar experience recently with Codecademy.  If you’re not familiar, Codecademy is the best way to learn to code.  Bijan recently tweeted about passing it to his kids to learn, which is a great use case, but it’s not just for kids. It was also very useful for David and me in teaching PHP.  All the Codecademy lessons are in Javascript, but we redid them all in PHP to help him quickly pickup the differences in syntax.  It was great.

I bring up Codecademy because I recently wrote a jQuery lesson in their lesson editor.  I thought I knew jQuery well… I used it a bunch in the process of integrating the code for the Spark Capital jobs page (we owe a big thank you to Gary Chou (@GCSF) on that one). But the gaps in my jQuery knowledge kept rushing up at me as I was writing lessons.

I read a bunch of jQuery code from sites I respected that did not obfuscate their code (“see one”).  I implemented the Spark Jobs site with jQuery and also used it on a private side project (“do one”).  And my learning absolutely wasn’t complete until I wrote a few lessons in Codecademy (“teach one”).  Some of the gaps I needed to fill in as I was building my lessons were topics like: What happens if you try to add a jQuery script to a page that already runs jQuery? How can you dynamicly detect when jQuery is already active on a page? What *exactly* is the $ symbol (an object? a function?) and what are all the various types of input it can accept and what does it technically return? Etc… It was great, and I feel much stronger in my knowledge on the other side of this experience.

The other insight I had about learning (and teaching) in this process is that there is no single more motivating factor in learning then accomplishing a specific goal.  I had picked up and put down jQuery tutorials a number of times over the years.  It wasn’t until I had very specific goals (add a jobs page to the Spark website… or: teach David about manually setting cookies) that I became motivated to really push the boundaries of my knowledge.  In short, learning for the sake of learning is difficult for me, but learning to accomplish a specific goal is both easier and more rewarding.

Notes

  1. cylontoaster reblogged this from thegongshow
  2. website-designing-company-delhi reblogged this from thegongshow
  3. plan-cul-amiens reblogged this from thegongshow
  4. truth-about-abs-download reblogged this from thegongshow
  5. joshscarabin reblogged this from thegongshow
  6. thegongshow posted this