On Monday night I was trying hard to understand the nuances of processes and shared memory so that I could finish it early and move on to other things. I had been working on it since Friday afternoon and though I had gotten parts of it working (thanks to my professor), there was still some parts that were failing utterly. I read the man page and googled around (which quite often brought me back to the man page) and just as I was about to throw my hands up and wait to ask my professor again, I decided to ask on IRC.
I hopped on the C channel at Freenode and within minutes I had not only found out why program was misbehaving, but I also got two separate suggestions on how to fix it. I may have bent the rules a little bit, but I trust my professor will understand that I actually did learn something and not just steal code of the Internet. I still don’t really know how to implement one of the suggested fixes, but I implemented the other. The fix I didn’t understand is probably the cleaner of the too and I plan on asking my professor more about it.
IRC is a good example of a way to learn Computer science (or at least programming) in a master-apprentice fashion. It’s different from learning from a tutorial or reading the man page. I hesitate to call it “teaching” because it’s more of a free form Q&A. Instead of having someone give you the information up front (a typical classroom setting) or going out and hunting it down yourself, you get to pick the brains of people who have already internalized the knowledge that you’re after. To get to it, you have to ask the right questions and that means knowing the problem well enough to figure out what questions are worth asking. And that requires some thought.
It’s not exactly master-apprentice because you aren’t learning under the tutelage of a single master. I think a more apt analogy would be spending some time at a monastery. You don’t have a very strong connection to the people there, but you share some things in common. You can go with a purpose or without one. But you will benefit more if you do have one. There are some basic rules, mostly concerning respect and etiquette. If you break them, you will be asked to leave and in extreme circumstances, removed. The experience you have is very much up to you and could leave with a profound sense of enlightenment and a strong desire to return and learn some more.
Ok, so I’m embellishing a bit and programmers aren’t really monks (except maybe if you’re Richard Stallman). IRC certainly isn’t solution to all questions and you could easily come away being more confused than when you started, but that could happen with a book or a normal class. IRC is another resource, but it’s a good one. No matter how good search technology may be or how well-written technical docs may be, sometimes it’s good to be able to be walked through problems by a human being. And yes, I do still have questions for my professor.