Why are developers "fans" of technology?

Why are developers so passionate about *their* technology? Is there a "best" software framework, language or IDE? Why is it so important to us?

March 18, 2018

The other day I was at a Python meetup here in Austin and was talking with another developer about API development. He asked me, "Are you a fan of Django?". I was a little apprehensive in answering this question. If he had asked, "Do you enjoy using Django" or "Do you think Django is a reliable tool to build API endpoints" I would have instantly responded with a "yes". His use of the word "fan" gave me pause.

A "fan" to me is someone who follows a sports team. Someone who regardless of the team's performance would stand by them. I am a fan of Georgia Tech football despite their consistent mediocrity. I am a fan of the Carolina Panthers. I'm a fan of a few bands or entertainers or comedians.

So obviously this developer wasn't insinuating that I had some irrational attachment to Django. He just wanted to know if I liked and used it. So sure I responded "yes".

The thing is there are a lot of developers I met who are 100% fans of a technology. I know people who have with complete faith that React is a better JavaScript framework than Angular. And I know people who believe that Vue is superior to React. Then people who still think Angular will always produce a better product than both of them. Sometimes they are able to give a reason or two but the argument seems almost entirely emotional. Go google "best javascript framework" and it won't take you long to find some pretty irrational responses. Similar searches for "python vs Ruby" or "Java vs C#" or "C or C++" will yield some similarly fanatical responses.

I compare this to my time in manufacturing and this...just isn't a phenomenon. Mechanics are not "fans" of an allen wrench or a phillips-head screw driver. They are tools. They have different functions and have different use cases. A headset wrench takes off the headset of a bicycle, a spoke wrench is to balance and take the wheel hubs apart. An engineer will use an FMEA for risk analysis and a House of Quality for design. An operator will use a broom to sweep and a blade to cut yarn - there is little preferences for tool sets.

One could argue that this is a slightly disingenuous comparison as a broom is for sweeping and a blade is for cutting which are two completely different functions whereas Java and C# fill similar roles. I would argue that they are different enough that their use cases could be properly analyzed and also fill different roles.

Back in software world this is a seemingly common occurrence. Tabs vs spaces or IDEs are other categories often described as "Holy Wars". I started thinking about why it is so prevalent in this industry and not others...and honestly couldn't come up with a good reason.

My initial thought was that developers spend a lot of time learning a technology and form some attachment to it. I've also been reading Sebastion Junger's book Tribe and thought that perhaps it was just the bond a community forms, something that is deeply within human nature.

Then I thought back to engineering where professionals spend their entire career learning a set of technologies, often in smaller & tighter groups than software frameworks and seem to have nowhere near the passion developers have for arguing about this.

Would be interested to hear your thoughts!