Is it best, in a controlled environment with both low signal and noise, to take your time and explain things in detail in a "civil" manner? Sure. That works great in (small) classrooms for example. In a public kernel dev mailing lists though? No, a fuck off should suffice. If the recipient of the fuck off wants more, they can seek it in a more appropriate place.
IRC is somewhere in the middle; usually civility or ignoring the person works best. This is particularly true since most IRC channels are fairly explicitly there for people who want to give or receive advice. I've only told someone who was seeking help from me on IRC to fuck off once, and that is when he demanded I talk with him on skype instead of IRC, and pressed the issue.
Edit: I suppose I shouldn't expect a civil response if I explain in a civil manner why I don't think civility is always necessary. Hoisted by my own petard perhaps?
e.g., if I were to post some patch that used bubble sort, one could easily say "This is total crap. Don't come back until you fix your shit". If I were a noob, that wouldn't help me contribute better. If one were to rather say something like, "This is very inefficient," and then mention something about O notation or efficient sorting, and point out that this is a performance-critical section of the code, I might be more likely to actually take the time to learn enough to be able to fix it.
Consider also the effect on newer programmers. They start, they commit crap, you tell them to die in a fire. They get better, and years later decide that they're not going to bother fixing bugs in your project because "that guy's a jerk". Constructive criticism, or at the very least politeness, helps prevent poisoning the well of talent that is interested in working with you.