In 2015 I read a great blog post on contempt culture. I had already noticed the described behaviour by that point, but I didn't have a word for it. Interestingly, the author of the post mentions starting programming in 2001. I started around that time, too. Probably 2002. It took 13 years before I stumbled upon an article pointing out bad behaviour I had both experienced and perpetuated. That article made a strong impression on me. In an effort of self-reflection, I'm looking back at how I've changed since reading it.
Being on the receiving side of contempt
First, I would like to mention two examples: one more general, and one more personal.
The general one is about the recurring meme of "Ruby on Rails doesn't scale". I've been using Ruby since 2011 and I have seen so many iterations of this debate over the years that it's become boring to me. So much energy is spent arguing about the supposed demise of a technology. I keep myself out of this as much as possible.
Once a friend said they don't understand why I'm still working with Ruby. I answered something vague about work opportunities and a sense of belonging to a community. We then moved on from the topic. Oof, friendship saved.
The personal example is about being labeled. Around 2016 I got interested in the Elm programming language. I gave a presentation about it at work and later even built a project in Elm. Co-workers who didn't like the language were engaging me on the topic for a while. It became clear that we wouldn't use Elm for future work. There are many factors that can lead to the success or failure of a project. Can the team work well with the technology? Does the team communicate well? Does the team learn and continuously adapt its processes? For me it was much more important to be able to work together as a team, than to push for a technology that I personally liked. The programming language is just one tool.
Even after we moved on, the discussions continued. At a party, someone from another company was making a joke about Elm. The person next them nodded in my direction and said "shush, he's really into Elm". I didn't say anything, but I took a few things from the experience:
- I resented being labeled as "the Elm person". Perhaps I came out as overly-enthusiastic about the language. I decided that from that point on, if I liked something, I would keep my thoughts to myself.
- I don't like my identity being tied to a category. I don't see myself as a Ruby developer, or an Elm developer. I even avoid the general label of developer.
- People have a preferred technology and love making fun of other technologies, especially when they have little experience with them.
The thing that twisted the knife was a conversation at an Elm conference later on. I was telling another attendee about my experience using Elm at work. They told me that I had not advocated for it enough. Why do we go to extremes? Why is it either the best language that we should spread everywhere, or the worst thing that we should mock out of existence?
Examining my own behaviour
The personal experience I described above was neither the first, nor the last. I've been jaded and disillusioned, to the point where I don't even call out contempt. However I try to convey a nuanced position when asked directly about a topic. Here are a few examples.
I once had to add a feature to a program written in PHP. I didn't know PHP, only the reputation of PHP. I chose to ignore that. I approached the project with an open mind. I studied the program and added tests to understand its behaviour better. I refactored some code once it had test coverage. Finally, I added the new feature and deployed. I never complained and even made a mental note of the language constructs in PHP that I wish Ruby had.
At the end of a job interview, I was once asked what I thought of CSS. I said it's tricky to get right despite having used it for a long time, and that I have a lot of respect for people who write it well. The interviewer proceeded to say how bad it was and how they avoided it at all cost. I guess they were looking to bond over bad-mouthing something. I was a little puzzled, but also proud that I had not engaged in that.
During the hype period of cryptocurrency (and later web3), colleagues tried to get me to work on projects in that domain, whether for side projects or new business ideas. I always declined politely. While I personally object to working on such projects, I don't impose my point of view to anyone. Someone pressed the issue once. I told them that the domain doesn't interest me and I prefer to focus on things that I find more exciting. That's the truth, and I think it also counteracts contempt culture. Keep to the things that interest you and stop talking about the things that don't.
Another example are the countless lunchtime conversations about programming languages at work over the years. I usually stay silent during those, because I'm tired by the repeated arguments. This is one point on which I could improve. I could steer the conversation towards the interesting things that the language everyone hates enables. I could ask how we can get those benefits in the technology that this group prefers.
When it comes to actively fighting contempt, I'm proudest of my handling of difficult codebases. On many projects I keep reminding my colleagues to look past the current limitations of the code, not to blame previous developers, and focus on how we can make progress as a team.