There is one thing that either we, the helping people, or those that search for help with their code don’t get, and that’s what kind of answers are to be expected.
Every too often I see people joining certain channels, in particular #ruby and #ruby-lang, asking questions about why their code doesn’t work or how to implement feature XY. And of course they show others their existing code, which usually isn’t too great, looking like a direct port from another language or simply like the one of a newbie (not that being a newbie is bad in any way, we all started as one).
Usually what follows isn’t a straight forward answer like “write this to get your feature” or “change that on line X to get it working” but a general discussion about the whole piece of code, how one shouldn’t write it like that at all and that, if it was done right, the problem wouldn’t have occured at all.
The purpose of this definitely is not to offend, discriminate or degrade anyone, but to teach the people how to code properly, how they can save time, nerves and money, and what it takes to become a good programmer. Programming isn’t about just hacking together a few lines that, by chance, end up doing what you expected them to do, but to create a well designed application, that can be maintained and extended at need.
Nevertheless we can see two completly different kinds of reaction. The first one is the person being thankful for all the great tips by the “pros”, even though he might be confused because of all the information at first. The other one though gets angry and tells everyone how he “wanted to fix a problem, not rewrite the whole damn thing from scratch”, generally feeling offended by all the well-meant advices.
So, the question is, who is right? Are we supposed/allowed to comment on the overall quality of the publicly posted code, or do we only exist to provide copy&paste solutions to people desinterested in quality of design? In my opinion, most if not all of those that spend their time helping others, want to make a change, want to educate, as opposed to just providing solutions that work in the given context, not fixing the bigger, the real problems.
I think that if the majority of help seeking people wanted us to stay shut about the code in a whole and just expected us to provide help with what exactly they asked, we would end up with not many people helping anymore.
So, what can you do in case you need help with a problem but do not want any help with your design and patterns? Well, the easiest option clearly is not to join those channels and try to figure it out by yourself. But I think another, not too bad, option is to actually seek help in those channels, but by explicitly saying that you only want (need is a bad word, because you probably do need) help with a certain problem and that you either have no time for or no interest in other advices. While this might put off some people you eventually will end up with one or another helping you with your particular problem, not wasting his, her or your time with information other than the ones you need.
In my opinion it definitely is wrong to ignore those advices made by professionals, but it is even more wrong to get angry about them. They’re well-meant, usually correct and you should respect them if you want to program in a proper manner. Yet, if you do not care about any of that, at least be so fair and tell us in advance so we can save our time.
Update, as of 2009/10/07 ¶
Okay, I’ve read all the comments about my article (both the ones posted on my blog and the ones on reddit) and it looks like I made one major mistake when writing this article: I was only thinking of the two main Ruby channels on FreeNode. While my article, in my opinion, totally holds true for those two channels it might as well be true that certain other channels are literally polluted by people who actively try to bash and piss off newbies. Alternatively, other channels seem to have a high amount of people with no deeper knowledge, who, nevertheless, try to force their opinion upon others, maybe not even backing it up.
So, what are people with problems supposed to do then? Avoid IRC alltogether? Hope to be lucky to have picked a language with a decent community? Only try to get help on IRC if you are able to tell apart bollocks from qualified help? I don’t know, but maybe you got the ultimate solution? And if so, maybe you don’t mind sharing it with us? Comments appreciated!