Watch one, write one, teach one is something I picked up while watching Ben Orenstein talk at a ruby conf.
This changed my life allowing me to turn normally fleeting knowledge to solidified know how.
The absolute best way to learn something is by watching someone else perform the technique, then performing the technique yourself, then teaching someone how to perform the technique.
Pairing has a number of benefits: Less time spent on refactoring typo's ;) Instant Code Review and someone present for you to bounce ideas off of.
Avdi Grimm is a big supporter of pairing. In his talk "Pairing is Caring" Avdi challenges you to pair with another developer for 2 hours a month. He even created a site to promote pairing among developers http://www.pairprogramwith.me.
"Put this badge on your blog or project home page. Link it to a way to contact you."
The following is a pairing technique I've heard thoughtbot uses; which I refer to as PingPong Pairing:
Person 1 writes the test, Person 2 writes the method
Person 2 writes the test, Person 1 writes the method
Repeat in a back-and-fourth fashion.
From personal experience this keeps pairing fresh and is more engaging; win.
Resource: Avdi Grimm - Pair Program With Me
Resource: ScreenHero - Pair programming app
Resource: Air Pair
"When you are super embarrassed about not knowing something, that's the moment you need to ask." ~ Ben Orenstein
I started admitting when I didn't know something about 2 years ago and it was one of the most significant changes I have made in my career.
When I started to admit I didn't know things, I found others were excited to teach me. When I learned peer-to-peer I was able to retain the knowledge better. This allowed me to understand more complex techniques easier.
If you would share this article on twitter I'd greatly appreciate it.