Zen and the Art of Assignment Operators
I was 19 when I first read Zen and the Art of Motorcycle Maintenance. For months afterward, I just had to tell everyone I knew about Quality-with-a-capital-Q and all the other big ideas I had just met. It must have been pretty tedious—looking back, I'm kind of surprised I made it to 20 without someone strangling me.
I've had other epiphanies since then, from Lisp and Orwell's essays to design patterns and Rawls' Theory of Justice. Each time I fell in love with some new discovery, what I wanted most was people to talk to about it. And each time, I lost sight of the fact that what was new for me was old hat for other people. Manipulating programs just like any other data structure? Some of the people I was enthusing at had been doing that for twenty years, and had thought through the counters to the counters to the points I was so innocently making.
Thinking about it now, though, I've come to believe that this gushing is actually necessary. Someone could have walked me through various critiques of Rawls' political philosophy to show me where, why, and how my thoughts on it were naive, but (a) that would have been the end of my enthusiasm and (b) as with concept maps, the real value comes from doing the thinking, not from what that thinking produces. As a friend once said, some people have to be libertarians for a while in order to have something to grow out of...
Some recent discussions on the Software Carpentry mailing list reminded me of all of this. Which programming language should someone use? Or which assignment operator should people use in R? The voice of experience says, "It doesn't matter, just pick one and run with it," but that wouldn't have satisfied me when I was first trying to think about programming at a higher level, because what I really wanted was to think through the issue with other people. How to indent code and name variables was just what I happened to be practicing that kind of thinking with.
But here's the problem. Every thriving community includes old timers as well as newbies, and most of those old timers will already have talked through these issues many times. They may therefore want to say, "It's in the FAQ," but isn't always the right thing to do because (a) what the newbie might hear is, "You're stupid and we don't want to socialize with you," and (b) it takes away their chance to learn how to think at a higher level.
So my question is, how do online communities manage this? Keeping everyone in one discussion induces weariness in more experienced participants, but segregating by proficiency is a pretty effective way to kill community spirit, and writing out the arguments and counter-arguments like moves in a chess game fails for the reasons discussed above. What other strategies have you used, how much effort have they required, and how well have they worked?
Now if you'll excuse me, I need to go and enthuse about peer instruction in an education mailing list...