Note that the following post has nothing to do with fishing, fish, tackles, lures, "catching the big one" or any other euphemisms. It is brought on by the fact that it's been too long since the last post and that it's too hot to turn on my gaming desktop. Why is it so hot? I choose to blame NASA arbitrarily for this heat. It's Hubble space telescope's fault. (Also, this laptop I'm using has a very non-standard keyboard so if you see a lot of out-of-place slashes you may join me in cursing HP for putting slashes in places slashes just should not be.)
Today I wanted to write about teaching and learning. While these things don't have anything specifically to do with software development I'm going to write about them anyway because I find them interesting. And it's not like the off-topic police are going to come shoot me with tasers or lasers or radars if I post something slightly tangential to my site's primary topic. Like a lot of things I've written about recently, this one is driven by behaviour I have observed on Stack Overflow.
I believe very strongly and fundamentally in helping people who help themselves. This is at the very core of how I approach learning and teaching. To bastardize an old proverb, I don't believe in giving a man a fish, I believe in teaching him to fish, provided that he is capable of learning how to fish. In other words, I need to be able to guarantee that he'll be able to help himself once I've helped him. If he's going to forget how to fish before the end of the week, there's no point in teaching him to fish because that's just a waste of time and effort.
So it's important to me that when I'm helping someone I am reasonably sure that what I'm teaching will actually be learned. Teaching isn't just a matter of speaking facts or addressing problems publicly. It's an interactive affair that requires as much effort from the students that the teacher is spending. People have different methods of learning and teaching and ideally every teacher and every student knows which methods they all prefer so that they can maximize knowledge transfer; however, in the real world most people think that a teacher can use the same method to teach every student, and that a student can use the same method to learn from every teacher. This is definitely a problem, but it's not what I seek to address today.
In my academic life, in my career and on Stack Overflow I have met and continue to meet people whose learning and teaching styles differ from mine enough that I cannot help them or be helped by them, at least not without a third party to help interpret what's being said. It's unfortunate that there are lots of intelligent people out there who have trouble teaching or learning because they haven't put a lot of effort toward understanding different learning and teaching methods outside their comfort zones. As someone who learns primarily by doing (a method used by only 5% of the population), I've always had to compromise and learn things using methods that don't come naturally to me. (As an aside, this is probably a major contributer to why I find learning and teaching so interesting.) Maybe things are different nowadays or elsewhere, but in my academic and professional careers it seems like not enough is done to help understand different methods. But I digress.
My main point today comes from another group of people that are hard to distinguish from the intelligent-but-out-of-comfort-zone learners: lazy people. Or maybe moron is a better term. Regardless of what you call them, they're the people who realize that if they pretend to not understand your teaching style, you'll eventually just do their work for them or point them to someone who'll do it for them. They're called help vampires and they are the bane of my existence.
I cannot help people like this, because they either refuse to or are incapable of learning. No matter what methods of teaching one tries, no matter what strategies one uses to break the problem down into easy-to-understand components, help vampires do not learn. At this point one is forced to either just give them the answer without teaching them anything (in which case they'll come back again for more later, annoying everyone), or ignore them (in which case they'll probably spread rumours about how unhelpful you are).
When a user appears on Stack Overflow asking a very poor question, everyone has a choice. Should they answer the question, even though it might be asked by a help vampire? Should they ask for more information as proof that the asker is capable of understanding why the question is poor? Should they ignore it? Write to a moderator telling them to delete it? Go out for a coffee milkshake? Every user has his own way of approaching this choice.
Personally, when helping someone, I need confirmation that he is not a help vampire. Confirmation can be as simple as looking up past questions the user has asked to see if they had similar problems. If every single one of a user's questions are poor, then that's pretty clear to me that the user isn't willing to learn. If the user has never asked any questions before, I'll ask them to elaborate. If he doesn't understand why I need more information then it shows he doesn't understand his own problem, meaning he hasn't put any effort into solving it himself.
Now, I want to make something clear, when I say "poor question", I don't simply mean it isn't in well written English. I'm not so superficial that I can't try to understand the deeper problem the user is trying to describe in a language he hasn't mastered yet. Simply not speaking English natively isn't enough to make a question poor. I've seen poor questions written with beautiful, clear, unambiguous grammar, just as I've seen amazing questions written by students who are obviously just learning English.
When I encounter a help vampire, I instinctively regard everything he writes as spam. That's what it is, after all. It's a user posting information that serve no purpose other than confuse volunteers out of time that would be better spent answering questions from users who are capable of learning. Content produced by help vampires is a net drain on the system, and they should be removed from the community for the good of everyone.
And of course, as usual, when I act on what I believe in I'm met with resistance from people who think it's more important to be "fair" to everyone than it is to make sure users aren't soaking up volunteers' time and effort only to have them come back with the exact same question next week. On Stack Overflow, at least, users are not entitled to answers to their questions.
If a user doesn't put any effort into understanding his own problem then no one should expect a community of volunteers to help him. There is a large number of users who think the opposite, and I invite them to explain why they think so. At least for now I have this post I can use to explain myself whenever it comes up. I'm tired of having to justify myself for trying to improve a community.