Overall, I still think that Ted Nelson had the best idea when he wrote this in Computer Lib/Dream Machines (Aperture, 1974):
The best way to start programming is to have a terminal running an interactive language, and a friend sitting nearby who already knows the language, and has something else to do but can be interrupted with questions. And you just try stuff. Till more and more you get the feel of it. And you find yourself writing programs that work.
– “Software Craftsmanship” (page 95) and available online in an article about how it applies to Ruby.
This quote was from 1974. Since then, some things have stayed changed and some things have stayed the same. In particular, we now have personal computers rather than interactive terminals. Of course, a command line prompt or IDE is an interactive session – just a more powerful one. I think the concept is just as critical as it was then.
I can think of a few ways this learning applies to me here in 2009:
- Summer interns – When I was a college intern, I shared a cubical with an employee. This made it easy to ask a short question when I got stuck. (among other benefits) The scenario was very similar to the quote – there was someone sitting nearby that I could ask without getting up that already knew the answers. I plowed along until I got stuck and then there was someone to put me back on the right path. I really appreciated this approach and have voluntarily shared my cubical with our summer interns once I was the employee.
- Pair training – Training new developers by pairing with them allows them to see the big picture before learning all the details. If the goal is to be able to develop without pairing, the new developer needs to become self sufficient. I like the idea of a more gradual path to there. Whether it be going back to my own desk for snippets or bringing my laptop to work on other stuff, it provides the atmosphere where the new developer can start applying knowledge, but having someone “on call” to ask. Personally, I think it was more effective when I brought my laptop because it lowered the “cost” of asking.
- JavaRanch – “a friendly place for Java greenhorns” – an online forum doesn’t have quite the same turnaround as someone sitting nearby, it is certainly better than nothing. Very easy questions do tend to get answers within a few hours. It’s the same idea of having someone available to ask when learning a new language. The internet is great for that when there isn’t something in the office.
Not all my examples just cover learning a new language, but they do show how having someone more experienced around helps with learning other things.