Shadowcat Systems Limited

sufficiently advanced technology

Telephone 01524 842155
Email: info(at)shadowcat.co.uk

Community gardening and hard decisions

Mon Jan 11 22:30:00 2010

Digg! submit to reddit Delicious RSS Feed Readers

I'm going to start this article with a series of statements of facts, not all of which you may necessarily believe.

I am, indeed, a card carrying member of the Order Of The Bastard.

I enjoy helping people become better, more productive, happier programmers.

I enjoy gardening such communities as a regular and as a moderator/op.

I don't enjoy offending people.

I hate having to ban people.

I suspect it's the last two certain people in the audience are going to find difficult to swallow - especially those who've encountered me "in the wild" online, as it were. One person was shocked that I'd written my last post because it seemed to come from a nicer point of view than my public persona.

Now I'm happy to admit that I do manage to offend a lot of people. But ... there's a point to this. First thing to realise is that the second on the list of facts is my primary motivator - if I meet you in an online environment it's highly likely that the reason you're there is to get help writing or debugging some perl code. And the reason I'm talking to you is to try and not only solve your problem but solve your problem in such a way that you end up with code you can be proud of.

The key thing people miss is that this does not necessarily require them to be my friend.

My object, here, is to understand the user and their problem, and to help the user learn how to solve their problem in a good way. Now, notwithstanding frame of reference mismatch problems, there are three things that are the primary obstacles that get in the way of this:

The user has misunderstood their problem.

The user has picked an unsuitable solution to their problem.

The user plain isn't listening to the advice.

All three of these rapidly lead to a situation where people are trying to help but find themselves repeating the same suggestions or requests for clarification over and over again without getting anywhere. Those of you who've helped out a lot on IRC probably remember conversations like:

newbie: I'm trying to parse out the td tags in this HTML and I can't get the regexp right
expert: Please don't parse HTML with regexps, it's horrible and not worth the effort required to make work - try HTML::TableExtract
newbie: my regexp is />td<(.*)>/ but it doesn't work
expert: Please don't parse HTML with regexps, you probably won't manage to get it working reliably and it'll be horrible to maintain - try HTML::TableExtract
newbie: But it almost works and that looks hard!
expert: Please don't parse HTML with regexps, it's fragile and difficult - try HTML::TableExtract instead, it's already debugged for you
newbie: Can anybody help me with my problem?

... and so on and so on for some minutes, often resulting in the newbie getting frustrated and going away. The alternative flow of conversation is something like:

newbie: I'm trying to parse out the td tags in this HTML and I can't get the regexp right
expert: Please don't parse HTML with regexps, it's horrible and not worth the effort required to make work - try HTML::TableExtract
newbie: my regexp is /<td>(.*)</ but it doesn't work
mst: newbie: PARSING HTML WITH REGEXPS IS FUCKING RETARDED AND HORRIBLE AND UNMAINTANABLE AND THEREFORE WE WILL NOT FUCKING HELP YOU WITH IT
mst: NOW LOOK AT THE FUCKING MODULE - http://search.cpan.org/perldoc?HTML::TableExtract
newbie: ...

(the above two fake conversations slightly revised due to comments on HN - cheers for the feedback, guys)

followed by one of two things: One time in ten, the newbie says something almost as polite as my comments and quits. The other nine, they try the module and suddenly discover that HEY IT WORKS, and go away happy. And about five of those make a point of saying thank you to me before they go away. i.e.:

Sometimes people just don't listen to polite.

Sometimes making somebody angry is an effective way to get their attention.

So, let's look at the numbers here: in the first case, we spent 5 or 10 minutes, maybe longer, trying to get the newbie to listen, and helped one person (or possibly none if they quit without ever trying the non-regexp solution). In the second case, it takes me about 30 seconds and I help at least 90% of the people - and for bonus points, free up the channel for another newbie to ask for help.

The other thing that's interesting to note is that support burnout rates in places where there's one or more resident Bastards seem to be much, much lower - the thing being most of these channels do have nice people, and they tend to do their best to help the ones that are frustrating rather than not listening. But nice people tend to get stressed and upset when they aren't listened to because dammit they're trying to help and why isn't this user paying attention and argh ... and after a while, if this happens too often, the nice person burns out entirely and just stops helping. However, if a Bastard steps in half way through and goes LISTEN TO THE NICE PERSON WHO IS TRYING TO HELP YOU, YOU UNGRATEFUL FUCK then we go back to one of two things happening - either the user starts listening, or the user throws a tantrum and quits. I really, honestly, don't care which at that point because if one of our nice people has spent ten minutes trying to explain it to them and not been listened to, then, well, what I really care about by that point is that the nice person is there to be nice to the next newbie. Because they're going to help five more today, and five more tomorrow, and five more the day after that.

Your patient, non-bastard supporters are the lifeblood of your community.

If nobody protects them, they will burn out and disappear.

Which is why I can claim to do community gardening as a regular as well as as an operator/moderator - berating the truly hopeless or irreperably hostile problem children until they shape up or leave is pretty much as good as a ban. In fact most of the time probably better, since re-education attempts do sometimes work whereas a ban tends to be fairly final. Personally, when I lay bans I almost always chase it up in private message and try to explain what they did wrong, and why that meant we needed to remove them, and try and convince them to chill out and try and have another go at asking whatever it was they were trying to ask, in a manner that'll actually get them a useful result. Admittedly, I only succeed one time in ten, maybe, but a number of those have turned out to be smart but opinionated bastards who've gone on to help a lot more people, so I'm not complaining.

That brings me to another important point though - that banning somebody is basically an admission that you, as a community, are unable to re-educate this person. Note that that doesn't mean that it isn't theoretically possible. What it means is that you either can't find a way to get across, or don't have the resources to get the point across without unacceptable disruption to the community. There've been a couple of occasions where I've had to exclude somebody not because they're unwilling to listen and learn but because they're not learning at any significant rate and are an unsupportable drain on people's willingness to help - asking questions constantly, needing things explained to them over and over again, not always remembering the answers they've already been given until the same conversation has been repeated many times over the course of weeks or months. Often these are nice people. I like them, I want to help them, but in the end we're forced to make a decision to protect the health and effectiveness of the overall community by excluding them. But don't think for a moment that I enjoy doing that - it upsets me deeply, which is one of the reasons that in any operator/moderator team I'm senior in, I always lay such bans personally since I'm not comfortable delegating them.

A ban of anybody but the most egregious trolls is an admission of defeat.

Whether a ban is necessary is a function of the individual's effect on the community's ability to fulfil its purpose.

Now, this "do the math" approach also provides another interesting insight - regulars have to create, hold themselves to, and enforce standards of behaviour. Even more so operators/moderators have to do so. This can be pretty rough sometimes, especially if you're in a situation where the general standard of behaviour has deteriorated, but it's absolutely essential. It's also one of the few ways to recover a community that's started to go off the rails, because the big problem that happens as a community starts to slide is that people start thinking nobody cares and therefore they stop caring and let their own behaviour slide. This is known as Broken Window Syndrome, and unchecked it can kill a community very quickly. On a couple of occasions I have (with the stalwart assistance of a small number of wonderful people who I've variously begged, cajoled, promised and browbeaten into helping) pulled communities back from this sort of state by establishing that There Are Rules and that Taking The Piss Will Not Be Tolerated. It's an absolutely horrible job because even borderline behaviour has to be slapped down hard, basically a zero tolerance, scorched earth policy that's probably going to involve you eliminating a number of otherwise useful people because the rules have to be enforced on everybody. Once you get things back towards sensible you can slacken the leash again, and so long as you keep making sure the core of the community do things right then fuzziness around the edges isn't a problem - the culture can be diffuse so long as it's centred on acceptable behaviour rather than borderline unacceptable.

The actions of the core members determine the centre of gravity of the community's behavioural standards.

Permitting unacceptable behaviour to continue leads to that behaviour becoming acceptable, and then you have a problem.

Ironically, this also means that the moderators have to enforce the rules on each other and on the regulars - and sometimes even on themselves - with absolute accuracy. In any channel with a no pasting rule, I'll kick myself out if I accidentally paste in there. I've placed a 24h ban on a regular in a channel before now for a comment that was slightly towards the sexist side even though I knew the guy had misspoken rather than thinking that was a sensible thing to say - and funnily enough the next thing I received was a private message from him saying basically "doh. That was retarded, but thanks for enforcing the rules."

The final thing that I want to mention that tends to need the attention of a bastard is a moderately unusual but extremely pernicious form of problem - the person with an entitlement complex. These people can be otherwise reasonably sensible to deal with, and moderately able to learn, but will hit problems and believe that it is the responsibility of the community to solve their problem for them. Note that this is very different to believing that the community should do its best to help people trying to use the software it cares about - it is a fundamental unwillingness to see the difference between being taught enough to solve their problem and being given a canned solution every time they ask. Of course in some cases the best way to help a user is to give them the answer as well as pointers for further reading, but there's only so many fish you can give out before you really wish they'd pay attention to the fishing rod design you keep giving them, too.

Such people tend to be relatively polite, but passive aggressive, and to treat requests for clarification of their problem or suggestions to rethink as people refusing to be helpful rather than an attempt to achieve a deeper and more lasting form of help - and since any programming community tends to be structured around the creation of good, maintainable, elegant code rather than merely working code, they become more and more disruptive until they are either re-educated or forcibly excluded.

People must understand that the community helps them because it's a pleasure to do so, not because they have a right to all the free help they can eat.

Or, more simply: Assistance from and membership of any community is a privilege, not a right, and certainly not a service. You pay for those.

Interestingly, though, in some ways many of these rules of thumb do apply to paid service as well. A recent series of ... incidents ... on IRC resulted in us being forced to tell a user they were persona non grata on all Shadowcat systems (thus rendering any future attempt to access them a violation of UK law) and move to making formal abuse complaints to the people hosting that user when they continued to connect and cause grief.

The reason I mention this is that Chocolat Pistache, whose systems were the launching point for this activity, took one look at the proof that one of their users had not only been using their account abusively but had actively continued with activities that become illegal at the point where the revocation of permissions took place, and shut down the account in order to ensure that their other customers couldn't be affected by negative repurcussions of this user's activities.

I'd like to take a moment to thank these guys for putting the continued service of the majority of their customer base over one idiot. I've no idea what their hosting's like, but if it's anything like as professional and competent as their abuse handling then they're quite possibly pretty good.

More interestingly, the fact that this rapid response was a rational business decision on their part shows we have a more general point:

Any shared resource must be managed in a sustainable fashion, and short term losses (of people or of revenue) must be accepted in order to avoid a tragedy of the commons and ensure that that shared resource continues to be available and effective for those who are using it in a responsible manner.

And that, dear reader, is why I'm a Bastard. Even if I really don't enjoy the decisions it forces me to take a lot of the time. Because not only do I care about helping people to be better, more productive, happier programmers, I care about all the other people who care about that too. And helping them continue to do that without burning out - and knowing how many more people get helped as a result of doing this than get upset by me - that makes it all worthwhile.

Thank you, nice people, thank you, patient people. We need a lot more of you than we do of me, and I'm glad you all exist. You Know Who You Are.

-- mst, out