Very soon after we start learning to program, we start learning to deal with bugs. Folks who have programmed for a while might forget that effective bug handling, like effective programming, is a skill that doesn’t come entirely naturally.
Many of us instinctively avoid criticism, ignore it, minimize it, or even argue against our critics. But our programs will almost invariably include bugs, and to handle them, we have to go against the grain of our instincts. If we’re smart, we make it as easy as possible to report bugs to us, so we minimize their impact. We respect and listen carefully to what our clients tell us, to understand the problems they’re encountering with our product. After we fix the bugs, we often review our code and our practices to avoid similar problems in the future.
It helps a lot if we can keep our egos out of the bug-fixing process. I know that my work will sometimes have bugs, and that a bug report should not be taken as a personal attack. Rather, I try to make it an opportunity to improve my products and my future work.
Bugs exist at various levels. Bugs that cause crashes are often the easiest to deal with: it’s clear that something is going wrong, and it usually isn’t hard to figure out what to do about it. But less obvious bugs can be worse. One product our library uses, for example, implemented boolean searches incorrectly, omitting important results. This kind of bug can mislead lots of people who never notice the problem. (And it can also take longer to address. I had to send multiple emails and examples to the developers of this product before they admitted that their implementation was buggy.)
Bugs at the overall system level can be the worst. The reservation system with interminable holds, the customer support service that never returns our calls, the open source effort that repels key constituencies it should be attracting: all of these are buggy systems, and they can drive people away just as surely as a crashing program. As Michael Bolton puts it, “a bug is something that bugs somebody who matters.” System-level bugs can be challenging to fix, but they can be the most essential to repair.
I hope none of these principles seems new or controversial. But I’ve recently seen a few bug reports concerning the Ruby on Rails community that drew many responses that ignored them. The reports concerned buggy systems, not buggy code. In particular, they noted a professional developer conference that attracted very few women, and an accepted presentation at that conference that included blatantly unprofessional themes, themes that one could easily predict would put off many of the people who could benefit from the talk. (They would be particularly problematic if you were one of the few women there, but I found it distinctly off-putting as well.)
The comments on those two posts include plenty of examples of denial, minimization, rationalization, and attacking the reporters of the bugs. (Indeed, some read as if they were cribbed right from this checklist of cliched defenses of in-group privilege.)
Assuming that the respondents are active members of the Ruby community, the responses suggest that there are still serious social bugs in that community. I recently came back from another open source-focused conference (one that had a significantly higher proportion of women, though still far from 50%), where there were some good things said about using Ruby on Rails for library application development. I like open source projects with good technical bases, but if I’m going to rely on a technology, I want its developer community to be healthy. Healthy communities generally provide more reliable, long lasting development support, and can be much easier and more pleasant to work with.
It can be positively uncomfortable for many of us to confront social problems, particularly ones in our own communities that we might be partly responsible for. (And Ruby is not the only community that’s had this kind of problem.) Perhaps if we get used to thinking of these problems as bugs, welcoming and paying close attention to reports, and getting our egos out of the way, we’ll find it easier to fix them.
Gender inequities are bugs in our systems. Bugs happen. But they can be fixed. As my library considers involvement in various community source development projects, I want to find out more about what these communities are doing, going forward, to fix and prevent these sorts of bugs.