The Dangers of Tribalism

As a relative spring chicken in the world of web development, it is a daunting prospect to enter the industry at this time. All the usual quandries about what to learn, which tutorials to follow, what languages are best for what and most importantly how to be as good a programmer as possible, as quickly as possible.

It’s a common adage within programming that if all one has is a hammer then every problem looks like a nail. Whilst I will not dispute that there are some languages which have far more uses than others, it is nonetheless difficult to view the problem entirely objectively. Whether browsing reddit, Quora or the matrix of Stack Overflow, one would think that choosing a programming language in which to specialise is somewhat akin to a religious decision.

As a newcomer, the tribal lines are clearly set. If one enters the Javascript area, you are told that there is simply no need to learn any other language. You can use vanilla JS, node for server side applications, any one of the excellent frameworks, you can build native apps, mobile apps, and there is simply no need to learn anything else. So Javascript it is then.

But then low and behold you continue to do research. You find articles such as this, you watch videos such as this and suddenly you aren’t so sure. I am not for a second suggesting that any language is perfect, nor that there are languages which are undoubtedly easier for beginners. My problem as a newbie comes from a much deeper place.

Amongst developers there is a dogmatic tribalism which has seemingly penetrated each and every language. As I have spoken to more and more developers, I have found that the vast majority will judge you based on the languages you know, and if you are not on the same wavelength, will try to convert you with a zeal normally reserved for the realms of cults. As I have said, no language is perfect, but the stubborness of many programmers to admit the flaws that each language inherrently has, or to suggest that another language might fix a problem in a simpler way, makes the entire experience an exercise in futility.

There is no surer way to prompt an argument amongst a group of developers than to suggest the programming language that one uses for a startup. The pontification was brilliantly encapsulated in a Medium article regarding this very issue.

“Java is the greatest language ever and powers the Internet,” “Ruby on Rails is the fastest way to get to MVP,” “Python is more sophisticated,” “I only program in Scala, bask in the glory of my multi-paradigmed awesomeness,”

A huge amount of pressure is needlessly applied to new programmers in addition to trying to master a difficult skill, namely that they will be judged by others for the languages they choose, or do not choose, and selecting a language to specify in is a decision that brings far more pressure than it should.

The fact is that good programmers are good programmers irrespective of language. The core principles are universal, and the ardent fanboyism and tribalism does not help progress. So many hours are wasted creating workarounds and even new frameworks for languages to solve a problem that would be easy to solve with another. Isn’t it time we all got along?

Written by Andrew Scott on 13 May 2015