

Those who teach - Pasanpr
http://ninjasandrobots.com/those-who-teach

======
simonsarris
(pre-emptive horn-toot warning/apology, its a career story, as my entire
software career so far has followed from stuff learned and done on SO. If you
read this I hope it makes you consider contributing to something like
StackOverflow. The rewards can be much more concrete than "just" knowledge and
a website score.)

I did the StackExchange (StackOverflow) and start-a-blog approaches that this
article suggests and it worked out beyond anything I could have expected. I
think that good teaching is the best way by far to becoming an expert at
something.

Right before I was graduating college in 2010 I got an email from my former
employer who had offered me a job (I had accepted) talking about what he had
in mind for my upcoming work. The email read, "Do you know anything about the
new Canvas element?"

I didn't.

There wasn't a lot out there for canvas in 2010, just some pretty proof of
concepts and bad tutorials. I felt like I had two choices: Try to build
something with canvas to learn how to use it, which always felt like a good
way to use very little of something, or try to learn by teaching, which in
college seemed like the only way to understand something in depth.

Sidenote: I believe that if you can't explain it, you don't understand it.
This is just as true for political/philosophical positions as it is for
mathematical rules. This is also what separates reasoning from mere opinion on
many topics (ie, one's opinion on abortion. Regardless of what it is, if you
can't explain your position to me, you don't have reasoning, you have a vague
notion gotten from parents or peers that happens to pass as an opinion).

So I took to StackOverflow like a fiend. Whenever there was a question asked
too often, I'd write a blog post tutorial about it. After a year I had
answered more than 10% of all canvas questions ever asked. (It did end up
being a bit of an addiction. If I put StackOverflow on my resume, it will have
to be under the header "Poor Time Management".)

StackOverflow is gratifying. _Really gratifying._ Forget the points, too,
especially if you're in a niche topic. The people I was helping gave me the
only encouragement I need[1].

I didn't realize it at the time, but after a while I just became a resident
expert on canvas. Even really obscure questions like this[2] presented my mind
with easy solutions after answering so many other questions. I didn't believe
myself an expert until one day, I had forgotten how to do something, so I
Googled the answer and clicked on the StackOverflow link.

The answer-er was myself. I didn't even remember writing the particular
answer, but there it was, and past me literally (re)explained to future me
some canvas trivia.

In two years I went from knowing zero about canvas to being one of very few
visible human resources for canvas on the web. I got a book deal[3] and
several job offers out of it. That means that contributing to SO and helping
people ought to favor even the most mercenary among us.

I still receive a steady stream of emails from people asking canvas questions.
I try to help where I can, but feel overextended these days. Even while being
overwhelmed, I still get the feeling that teaching is the most important thing
I could be doing.

I had considered taking some time off my job to do nothing but make JS
tutorials, and try to make some "Bob Ross"-style learn to program with JS
videos, update the MDN, and hold office hours in StackOverflow chat.

My "dream job" would be doing something like that full-time, maybe for a year,
but I can't really afford to quit work for more-or-less charitable web stuff
just yet. Someday though, probably in a couple years, I'll have the money to
"buy" the time.

[1] <http://i.imgur.com/POZmt.png>

[2] [http://stackoverflow.com/questions/10060242/html5-canvas-
glo...](http://stackoverflow.com/questions/10060242/html5-canvas-
globalcompositeoperation-for-overlaying-gradients-not-adding-up-to)

[3] The book contains _lots_ of interesting canvas tips and quirks I've found
in the past years (and a canvas performance chapter!)
<http://www.amazon.com/dp/0672336278/>

~~~
tikhonj
Yeah, StackOverflow is an incredible way to learn things. It's basically how I
went from knowing nothing about functional programming to being obsessed with
Haskell and category theory. In a pretty short time, at that.

I now want to try teaching people more directly, but it's somewhat difficult.
My university is unfortunately really biased against functional programming
(much less the interesting theory stuff). There are some cool meetups around,
and I'll probably give some talks there in the near future--after summer--but
it would have been cool to TA a class to. One day.

This is also why I think that having a good culture of education, both on the
learning side but also on the teaching side--is so important for a company.
That's one of the main things I'm looking for now when I consider where I
would like to work.

~~~
simonsarris
I think it would be a really cool idea if you asked different CS professors if
you could make a guest presentation one class to talk about functional
programming languages. Some of them would probably be thrilled with the idea.

~~~
saraid216
DO actually prep and come up with enough material to fill the time slot,
though. One of my professors asked me to sub in for him when he was busy but
the material was fairly basic (intro to SQL) and I was an idiot and didn't
even bother finding out what they had just read.

I know my SQL reasonably well, but I had no idea what to actually say when
confronted with an entire 50 minutes of dead time.

------
johnohara
To teach is to learn. -- Japanese Proverb

To teach is to learn twice. -- Joseph Joubert

I taught CS to high school students for ten years. I found the most welcome
questions were always the ones I had not considered. Especially if it meant
admitting you did not know. There is something in that admission that builds
student confidence. Preparing an explanation and going over it with the class
awards a tacit accolade to them all that tends to inspire more questions.

~~~
zarify
Agreed. I'm coming up to a decade of teaching CS in high school as well. The
best times are when I don't know the answer to something I've been asked (and
considering my classes go down the rabbit hole with topics pretty frequently
this happens a fair bit :) since not only do I have to go learn about it I
also have to learn how best to explain it and ascertain understanding of it in
my students. The best moments are finding a really great way of relaying a
difficult concept and having my kids have that "ahah" moment.[1]

I also started studying Karate about 5 years ago, and being given lower grade
classes to teach helped my understanding of my own technique immensely (sadly
it did nothing to alleviate the fact I was a creaky old man of 31 when I
started ;P).

[1] One of the problems of teaching a set level of students though is you tend
to stagnate at that level without your own side projects, which get less
attention because of the time factor. That's about the only regret I have with
teaching as a profession.

------
obviouslygreen
I'm definitely not going to disagree with this, but there's also a _lot_ to be
said for age and experience when it comes to understanding things. Being
exposed to it once starts you off, but even if you don't think about or work
at it consciously, the second time -- particularly years later -- unless
you've been living under a rock, you're likely to see a massive improvement in
your understanding right off the bat.

This is particularly true when you're still working your way through school.
That time is more dense with learning _about_ learning than any other time
you're likely to spend; it's not something you might be concentrating on
intentionally, but building up your abilities and knowledge result in the way
and speed at which you learn changing and improving.

Like I said, I'm not denigrating teaching or its positive effects in this vein
at all. But there's also something else (at least one something) at work here
that might be playing a larger role than realized.

~~~
Xurinos
> there's also a lot to be said for age and experience

I would propose that deliberate practice
([http://www.freakonomics.com/2011/05/04/deliberate-
practice-h...](http://www.freakonomics.com/2011/05/04/deliberate-practice-how-
education-fails-to-produce-expertise/)) is more key than age (I could be
goofing off for 40 years) and experience (I could be poorly repeating the same
inefficient niche for a long time).

~~~
nitrogen
Deliberate practice is likely more effective than age, but I suspect that, as
the parent comment suggested, simply letting a concept rattle around
unattended in your brain for a number of years can improve your understanding
of it the next time you encounter it.

------
edtechdev
Yeah there is research on this, too - it's usually called "learning by
teaching," although there are other names, too, like the "protege effect":
<http://ideas.time.com/2011/11/30/the-protege-effect/>

But generally, the idea is to help _students_ learn, instead of just yourself.
So, instead of lecturing, give _them_ opportunities to explain the material to
others, do study groups, etc. Even explaining material to yourself helps you
understand it better (this is called the self-explanation effect, by Michelene
Chi and others). So, you can embed prompts after questions that ask students
to reflect and explain what they learned, or have students blog or keep a
journal about their work (or contribute to stackoverflow, yahoo answers, or
similar support forums).

Anyway, read How People Learn, a free book:
<http://www.nap.edu/catalog.php?record_id=9853>

------
qpleple
I've been TAing Computer Science 101 (Design of algorithms) four times now,
and I cannot agree more with this post.

Having to teach something forces you to go one step deeper in your level of
understanding. When it's only for yourself, you stop when you get the idea.
And this is good enough. But when you know you will have to present it in
front 200+ students, then you make sure you really understand it. You can't
help it, your mind is trying to find edge cases, to put it in a another
context, ...

Same as Nate, I first enrolled as a TA because it was paying my tuition fees.
But I got a whole new enlightening understanding of the algorithms we study in
101: Divide and Conquer, graph algorithms (DFS/BFS/Dijkstra/Bellman-
Ford/Kruskal/Prim/...), greedy algorithms, NP-hard reductions, etc. I now
genuinely enjoy thinking about algorithms, or proving one algorithm is
correct, or deriving the time complexity analysis. Now I TA really because I
enjoy it, money is just a side benefit.

------
plg
Excellent. I 100% agree. The best way to learn about a topic, is to promise a
group of people to teach them about it sometime soon in the future, and then
go off and prepare. Just remember nobody expects a teacher (of any sort) to
have 100% of the answers 100% of the time. Great learning exchanges happen
when there is a question that can't be answered by the teacher, and the class
+ teacher together try to find the answer.

Last May I sent a shot across the bow, telling my research group I would be
teaching a boot camp on C programming. I spent the next 2 months refreshing my
knowledge, and putting together a webpage/wiki sort of thing and generating
sample code, etc. By the end I had a great resource not only for others but
for myself, and along the way I ended up recoding a bunch of stuff in C and
now it runs ~ 80 times faster (than Matlab/Python).

------
NegativeK
Yet another benefit of teaching:

Some students intuitively grasp one explanation, while others will require
another. I had the opportunity to have the time and students with patience,
and I became very good at recognizing when a student actually gets something
and when they're trying to hide that they don't (which is something that a lot
of intelligent students have mastered.) This enabled me to switch how I was
explaining a concept at need, which required me to come up with new
explanations on the spot.

When teaching arrays to students that couldn't name a programming language two
weeks earlier, you become quick at developing a toolkit of different ways to
think about concepts.

------
rizwan
"The best way to learn something is to teach it to someone else."

I learned that in college, and it's held true for many of the things I've
tried to learn.

I think that's why it's so useful to talk through a difficult problem with
another developer. You often arrive at an answer as you're discussing it.

------
abecedarius
"You think you know when you learn, are more sure when you can write, even
more when you can teach, but certain when you can program." -- Perlis

------
nathanbarry
Teaching is not just great for learning a skill, it is also the best marketing
method I know. By teaching you build a following that sees you as an expert
and is happy to pay for a small portion of your advice.

Here's a post I just wrote on the subject: <http://nathanbarry.com/marco-
polo/>

------
ncasenmare
There's another important reason to teach.

A lot of people fall into the trap of building solutions for non-existent
problems. (I certainly have) By going out of your way to help & teach others,
you notice what problems people keep having, and what solutions currently
exist.

Crassly put, teaching is the nice way to do market research.

------
replicatorblog
It's a really good lesson I've heard delivered in a different way by doctors.
They say in medical school the way you learn a procedure is to "Watch one, Do
one, Teach one". Even though they have limited expertise themselves, the act
of teaching forces them to approach the problem in a different way.

------
zwieback
I can relate to this very much as I've learned and relearned a lot of the
basics by tutoring other kids and now my own.

However, there are things that are more teachable than others. Math, science
and basic school curriculums are teachable but a lot of management and
marketing is not. Over the years I've seen so much damage done to my company
through consultants that teach things that should never have seen the light of
day. Perhaps some of them are poor teachers but I think the bigger problem is
the assumptions that what worked in one situation will work in most others.

------
simonster
There was an article in Science last year[1] that backs this anecdote up with
statistics. Graduate students who teach in addition to performing research are
better at designing experiments than students who perform research alone,
despite the vast amount of time that teaching consumes.

[1] <http://www.sciencemag.org/content/333/6045/1037.full>

------
bendog24
Having moved to teaching after 10 years of software development, I can
definitely relate to this post. I love how researching how to explain
something has really made me understand concepts on a much deeper level. I
appreciate things I never appreciated when doing pure development, and it's
driven my hunger to learn more as opposed to learning enough to get a task
done.

------
niuzeta
After the second year at my university I took a summer job to teach the first
year kids C and functional languages. My understanding of imperative and
sequential paradigm(and the functional) had never been so succinct before.

------
jonhmchan
I used to be a teaching fellow at NYU for iOS programming - what OP says about
teaching to learn is absolutely true.

I don't think I'd be nearly as skilled or knowledgable about Objective-C,
Cocoa, APIs, or mobile development generally if I didn't have to guide my
students. The added benefit of my situation in particular was that each
student worked in teams to get something pushed to the App Store - helping me
figure out how to manage multiple "dev teams" at once.

If you want to get really skilled at something, teach it.

------
Samuel_Michon
“If you want to learn something, read about it.

If you want to understand something, write about it.

If you want to master something, teach it.”

–Yogi Bhajan

------
chasing
I love teaching and I jump at chances to teach for exactly these reasons. It's
always enormously edifying (although often also exhausting).

~~~
nate
It really was exhausting. I'd be up so late doing my own work and preparing
for class, I'd get up 15 minutes before class would start, and drive. I'd park
my car in the Professor's parking lot to avoid looking for parking so I could
get to the class on time. Only once was my car towed. :)

------
epsylon
I can't believe no one here talked about Feynman. He is the quintessential
example of the great teacher.

<http://www.pitt.edu/~druzdzel/feynman.html>

