Ben Bangert pointed me at this blog post by Rob Pike . Amen, brother! I love to see developers stand up for themselves, especially one who clearly have a lot of experience. It humanizes them in a way code or docs never can, and it reminds us of the often-forgotten fact that people make software.
But as much as Mr. Pike would love it if everyone just shut the hell up, it's clear that's never going to happen. On the contrary, the suggestion by a creator of popular software that not all complaints (or complainants) are created equal is like a dog whistle to a certain class of folks whom are frustrated by a serial inability to make sense of their own software. Pointing out however gently that it just might be their fault is tantamount to declaring war on an imaginary proletariat. In the meantime, in an impressive display of cognitive dissonance, the same sorts of folks tend to overrate their own competency at software development, and consider their experience with some piece of software representative of the experience of some much wider group of people. If you're unfamiliar with the phenomena (is anyone?), reading any of the responses to the original blog post on Reddit should give you the flavor of it.
Rather than lament much more about that, given that this trait appears ingrained in human nature, and is never going to change, I say bring it on.
The very easiest way to get my undivided attention is to complain bitterly and about something I've created and released on my own time for free. The more public the venue, the more colorful the invective, the less informed or more absurd the complaint, the quicker and more complete my response will be. Is this trait of mine rational and good? No, it shows that I'm petty, prideful and vain. I usually hate myself for responding, or at least for dropping other more important things to respond quickly. Can I somehow judo my human frailties into a positive? I sure can. I am well-practiced at a type of development I call "spite-driven development." Rather than choose some more constructive venue or tone, you've chosen to complain cluelessly, bitterly in public; I've chosen to use that to my advantage.
For example, the Pyramid design defense document is almost pure spite-driven development. Things are only added to it, under duress, spitefully; it's largely a direct reaction to misinformed complaints. And yet, at the end of the day, it serves as a particularly useful type of documentation that you don't see very often; one which explains the why rather than the how. Many features in Pyramid and its add-ons, Supervisor, Deform, Colander, and other systems were also developed this way as well. And guess what. These the increased attention to detail resulting from spite have always markedly improved things. The software at the end of the day is better and stronger for the addition of each spite-driven artifact.
So does complaining cluelessly and mean-spiritedly end up helping software? It sure does! I'm unlikely to be alone here; there are probably other similarly prideful and vain developers, so it's likely not even limited to helping my own software. So, random guy on the Internet, fire away! Beat me, whip me. Compare me to Hitler. Go for it, it only ends up helping me. Please do understand the ground rules, though. If you force me into spite-driven-development mode, I'll still think you're a class-A dumbfuck unless somehow you end up being at least a little right. The fact that the outcome actually will help other people will not matter; you still did it at my expense instead of your own. You probably should have just emailed me instead. So it's a one-time deal, a "nuclear option". I'll do a great deal of spite-driven development at your behest once. I then flip the bozo bit on you for all time, and you can go fuck yourself thereafter as far as I'm concerned; it's a terminal condition. If that sounds like a reasonable tradeoff for considering your feature request, please, by all means, have at it!