There Goes the (Programming) Neighborhood

how-to
Jul 30, 20094 mins

It’s healthy and good for a software development community to take care of itself. But when the community begins to imagine that its experiences are just like those of people outside the community… it’s time to worry.

As a side effect of me writing about anything that touches on software development, I touch a lot of online communities. I may hang out in a Python group on IRC, I post in a .NET developers’ Yahoo Group, I ask questions in a forum for professional QA testers, I lurk on PHP discussions, I follow 1,400 people on Twitter. One result is that I get a view of the “personalities” of each community, often a view from 30,000 feet. (Another result is that, with 60+ subscriptions in Yahoo groups alone, I do not actually have a life. But never mind that, now.)

Every development community has its own culture. Lots of elements are involved, starting with what I can only call a community’s ambiance. Some developer communities are dispassionate and factual, others are chatty. Some are in-your-face confrontative, others actively greet strangers. To my mild surprise, not all communities are conscious of their own culture or even think about the way they present themselves. That is, an open source project might be anxious to attract more participants but never consider how it might — please forgive me for using the term — market itself to those who might be interested, or worry about what it may be doing to chase people away. Learning a community ambiance is like wandering through a strange-to-you neighborhood, especially when you’re considering whether this is a place you might like to settle down.

Another element in this particular “neighborhood watch” is how often its residents venture elsewhere. That is, it can be a little too easy for a coding neighborhood to become a ghetto, or to build a moat, or to — oh, well, pick whatever analogy works for you. My point is that it’s one thing for a community to support its members and to create a “neighborhood” in which all the residents are comfortable with one another. But it’s another thing entirely for the development community to forget that their experience may not map to everybody else’s.

For example, I recently corresponded with a very smart guy who happens to be quite involved in the Microsoft .NET community. The guy can make Visual Studio do things that its own creators wouldn’t recognize. He is, as far as I can tell, a brilliant consultant who helps his clients make the most of their Windows-based applications. He knows everyone in the .NET universe… and I don’t think he knows anybody outside it. Because when I suggested that, in a discussion about debugging JavaScript, he broaden his topic beyond Internet Explorer with Visual Studio (like, maybe mention Firebug?), this very smart man felt it was wholly unnecessary. Because, he said, IE is so dominant and so few developers would actually use Firefox for JavaScript programming that it really wasn’t worth talking about. Say what? But honestly… in his .NET worldview, nobody uses Firefox or PHP or Java. Not because he’s dumb (did I mention this guy is smart?) but because his community is so self-supporting he never has a motivation to wander down the road where the view is somewhat different.

This is emphatically not exclusive to the .NET community. I’ve seen it among Ruby developers. I’ve watched open source developers reject anyone’s choice of a proprietary solution as inherently evil, without any willingness to grok why people might come to a different conclusion than they did. (These same people complain that market research analysts show open source tools little respect, but when asked to participate in a survey they assume that “it’s just someone trying to market to us.”) The “I hang out only with the people who share my interests” false exclusivity is not specific to programming, either. I’ve watched wannabee science fiction authors assume that SF dominates book publishing (when actually it’s only 4% of the book market); such assumptions leads to bad decisions (and very few book contracts).

The problem with listening to only the people you agree with is that you don’t learn what everyone else cares about. You don’t find out what matters to other people… like, say, what matters to your users. There’s a difference between eating your own dog food and eating your own bullshit.

When does a neighborhood become a ghetto? When you imagine that the rest of the world is like your ghetto. Or when you think the ghetto is the world.