Standing remotely on the shoulder of giants
When I was learning how to drive, I was horrible at it. I was already half way through my 30 day driving class and I was still struggling to even steer the car properly. I talked to my cousin and he suggested I watch how my dad drives and try to mimick that. The next time I was in the car with my dad, I paid attention to every little thing that he was doing from what decibel level the engine was revving at before my dad decided to shift gears to how early into a turn did he start braking. My main focus was steering but I wanted to see how the act of steering was connected to other things that he had to do to drive our 1984 Toyota Corolla. The next time I went to class, I was already demonstrating much improved controls and pretty soon I was driving like it was no big deal. While I picked up my own way of driving as I went, mimicking my dad when I was struggling early on was a great way to get me over the hump.
I have found that this way of learning by mimicking is great when you don't have enough experience in the language or the domain and you are constantly struggling to make smallest of improvements. This is where pair programming with someone who is more experienced in the area shines as it allows you to observe how they work while navigating and then try out the tricks yourself when you are driving. The initial realization that pair programming can be a great tool for learning was what got Steve Nunez and I to start Unearth Ruby with some help from Matt Jording. However, it recently struck me that I could leverage the power of the internet and learn from rubyists across the nation remotely without having to move away from my desk.
My experience pair programming with Evan Light remotely was what introduced me to this method of learning. Even though I am very much a beginner in Ruby and programming in general, the remote pairing sessions with Evan not only gave me the fodder I needed to expand my knowledge but also the confidence that I needed to work on solving some interesting problems in Ruby despite my limited understanding. It was a great way for me to rub elbows with an experienced rubyist to supplement the solid foundation that my RMU experience had helped me build. When Pat Maddox invited others to pair with him, I thought why not ask other rubyists and see if they would be interested in doing some remote pair programming with me.
I approached David Brady and he immediately liked the idea of being geographically agnostic and hanging out with rubyists remotely while hacking on code. Both Matt Yoho and Avdi Grimm were busy with upcoming talks but were also very receptive of the idea and have asked me to check back with them once their time frees up. Here I was, a relatively new face in the Ruby community with very little to show in terms of skills and contributions to the community, and yet the folks were not only willing to help me out but also excited about it. David Brady was so excited that he told me that it was now up to us to figure out what solutions existed out there to make the process easier for rest of the community. With Avdi's recommendation and our experience with it, TeamViewer so far has been a great solution that is free for non-commercial use.
Considering how I am always beaming with enthusiasm whenever I am working on anything related to Ruby (Ariel Valentin can vouch for me on this one), the support from the people was a great energizer. However, it was not until my conversation with Evan after hacking on Ruby Quiz 14 that I realized what I had stumbled upon was not limited to just me or the ruby community. Remote pair programming was not just agnostic to geographic location but also to the language you are trying to learn or the experience levels of the pairs. Granted that there is some basic understanding necessary to minimize the initial hurdles, the only requirements were a good internet connection, screen sharing software like TeamViewer to collaborate on problems and Skype for talking to one another. With those three things at their disposal, anyone with the willingness to reach out to their respective communities and a few hours to spare could take advantage of this. What this enabled people was to get some of the benefits of being on a journeyman tour (similar to the one Corey Haines started a few years back and the one that Dave Hoover is currently on) without leaving the comfort of their home.
As someone who has to make quite the trip to the nearest usergroup and seeing how successful the remote pair programming group led by Anita Kuno for RMU was, I strongly believe that this can be a powerful way for us as a community to learn from each other despite of the limitations of our geographic location. Living in a remote area without any usergroups can no longer prevent people from interacting with other programmers and working together on interesting problems. Just as Github has made it easy for us to share our code with the rest of the world and learn from each other, remote pair programming can help us take it one step further by enabling us to create good code working together completely oblivious to the physical boundaries. With the power of the internet and the wealth of problems we have at our disposal, I urge you to go forth and pair remotely and share your experiences with everyone.blog comments powered by Disqus