Your infrastructure ain’t a special snowflake… and neither are you

This blog post originally appeared on my other blog,
but I decided to move it here to keep all my IT blog posts in one place.
I’m sorry to break it to you, guys, but you’re failing miserably on the DRY front.
I’m on a mental health break from Twitter. What led me to it was another reiteration of the same old story: men organizing tech events for other men, ignoring or hurting everybody (or almost everybody) who is, well, not a man. Wroc_love.rb didn’t want to have a Code of Conduct this year. After a semi-official twitter statement in opposition of a CoC from one of the conference organizers, months of trying to convince the organizing team followed. After yet another round of questions, which resulted in Wooga’s logo disappearing from the conference website (people are still waiting for any official statement from either Wooga or wroc_love.rb), and three days before the event, some people on twitter cried success: wroc_love.rb now has a Code of Conduct. That it happened after all the tickets were already sold out, after the organizers/employees of sponsors had their rounds of being horrible to concerned minorities on social media, after the CFP was long closed and the (drum roll) 100%-male lineup ready; that it obviously was an action directed at saving face – that is irrelevant. Because Every Small Step Counts™ – even the ones over the trap door – the White Boys’ Club is happy.
I went on a break not to witness all of this unfolding in real life (also to lower my level of snark, which, as you can see, still has a long way to go). I’ve already ranted enough and had my share of shit thrown at me. I do talk about issues like these with a couple of closer friends, and one of them articulated today what a lot of us feel more often than we’re probably willing to admit: we’ve already been through this. This constant repetition is extremely exhausting.
It’s always the same old story, isn’t it? Same counter-arguments. Same erasing. Same disbelief. Same unwillingness to learn. Eventually, same backlash and insults. Same We’re All Adults mantra. Same If You Won’t Educate Me, How Will I Learn. If we treated our coding problems the way we treat our community problems, we’d still be in the pre-compiler era.
So many of us who are reluctant to change our attitudes – or even to acknowledge problems – repeat the same cliché, regardless of the amount of data speaking to the contrary: “Women just aren’t interested in programming”; “Codes of Conduct will make us walk on eggshells”; “Meritocracy works”; “We’re all adults”. At the same time, we adopt new ideas in technology with virtually no hint of criticism. Being an early adopter is a really Big Deal. We started treating our infrastructure as code because we saw it worked for others, it made sense. We jumped on the container wagon enthusiastically, because we believed there was proof that was what we needed. When we sit at a conference and hear the speaker say, “Your infrastructure isn’t a special snowflake”, we enthusiastically nod and tweet an OH. We use gems and tools and read books and blog posts to help us keep our code stick to the more and the less obvious design principles. KISS. DRY. Separation of concerns. We’re so proud of that.
“Bentley Snowflake5” by Wilson Bentley. Licensed under Public Domain via Wikimedia Commons
But when it comes to problems in our community, we don’t learn from other people’s mistakes. We ignore all the data. We refuse to actively educate ourselves. All of a sudden, each case is new and special and so-one-of-a-kind and I’ve-never-seen-it-before. There are no blog posts, there are no books, there’s nothing on StackOverflow. Trust me. I didn’t even have to check. I just know. Sure, there are some crazy people babbling something about inclusiveness and safety in the background, but they obviously don’t know what they’re talking about. My case, my event, my audience is a special snowflake.
Time for some brutal honesty, mate. What do you think makes your community event so special? What makes you believe that the people attending your event were created from a different kind of rib? The rib of Adam von Meritocracy, maybe? Western programming communities are quite homogeneous. There is only a limited amount of diversity in behaviors, approaches and opinions in a group that anyone with bad eyesight will easily confuse with the Grand Army of the Republic. Can you personally vouch for everyone coming to your event? Or is that your ego speaking? You’re not a special snowflake, and neither are your friends. You’re a flawed human being. Just like me.
The ways we organize our code, the community-wide standards that we implement? On a certain level, they’re all a matter of informed opinions. We agreed being DRY is better than not, because it makes the code clearer, easier to maintain, sometimes even makes it recyclable. We extract code with potential for reuse into gems so that we can use it across various projects and so that others don’t have to reinvent the wheel. We are aware that other people had, are having and might have the same problems as we do, so we’re nice to people and we share on an open source license. And when these people come back with issues or pull requests or comments, unless we’re some sort of a Linus impersonator, we will be civil and welcoming about them. There’s loads of evidence that DRY works and we don’t pretend it doesn’t exist when someone waves it right in front of our faces. We can all agree that that would be silly.
But with community-related problems, so many of us change what is a mostly data-based discussion into a petty vim/emacs-style fight. Vim/emacs fights are embarrassing. They’re the equivalent of a sandbox toddler fight. Worse, they’re like poison for unicorns. When you’re witnessing a community-related problem for the first time and you behave as if it’s never ever happened before, you choose to ignore all the historical data proving it’s not only not the first time this has happened, but that there are also existing solutions, or at least suggestions on how to solve the problem. When you make yourself believe your case is special, you’re lying to yourself. Often, you’re hurting others. You’re also, obviously, acting against the DRY principle.
DRY is such a cool thing. It seems so basic, but makes our programming lives so much easier. And learning that our work isn’t all that special and unique is essential to optimizing tools and approaches that we implement. Because we can learn from each other. Thrive on experiences and avoid known mistakes. Believing we – or our work – are as special as a random drop of frozen water is what stops us from growing. I’m not saying our work isn’t valuable or important. Most of it is sure as hell worth the praise it gets, some of it should get loads more praise. But if we don’t let our egos stop us from growing as programmers, administrators, engineers or testers, we shouldn’t allow our egos or some sort of confirmation bias to stop our community from solving problems and becoming more balanced and healthy.
There are reasons why Codes of Conduct work. There is proof they work. Same thing with a blind selection process or how diversity in your speaker lineup improves your event’s quality. You just have to show some initiative to find that proof. It’s really out there, openly accessible. Just like with that weird coding problem you encountered last week – show some initiative, and everything is going to be fine. The community is here to help you, but only if you’re willing to listen.
PS. Thanks to Tom, Chris and Daniel for your comments. Thanks to Michael for coining the all-time classic infrastructure/snowflake dichotomy.