Is Not Religion, Stupid! How Defending A Programming Language Like Religion Hurts You
PHP sucks! Use Go!
Java sucks! Use C#!
It's exhausting. And, when you ask all these people why you end with a bunch of poorly justified reasons, most of them based on frugal -or inexistent- experiences with the "bad" language.
Or with use cases for which the programming language is not intended, many times very unusual use cases almost no one cares of.
It is not religion
Programming -engineering in general- is not religion, and we all are lucky as hell for it. I mean, engineering is a fact-based discipline; we all should make decisions based on validities rather than emotions, feelings, or whatever comes out of our guts.
That's why you should not defend the programming language of your choice like if it was your god -the real one, you know- or your kid, your wife, or your dog.
It is the project, stupid!
There's no single swiss-army-knife good-for-all programming language. All of them have pros and cons and the actual important thing to consider is what features of the language are needed to develop my project?
- Do I need a lot of performance so I am forced to sacrifice some productivity?
- Will my domain model be so complex that giving up an object-oriented programming language is just unacceptable?
- Will multithreading be needed so betting to a language that doesn't support it very well it's nonsense?
- Will the project need a lot of developers so I cannot afford to choose a language without a decent offer of professionals?
Aren't these the kind of questions we should be asking instead of loving-hating languages like if they were emotional items?
Avoiding the cognitive dissonances
We all, as human beings, suffer from a mental process known as cognitive dissonances.
What the hell is cognitive dissonance?
For our brain, detecting something against our previous beliefs -like the possibility that a different programming language than our usual one could be better in a given situation- is uncomfortable, so it finds ways to discard the idea and remain relaxed.
These ways are not always rational: we can defend outdated facts as if they were still valid, ignore arguments that don't confirm our beliefs, attacks others' credibility regardless of the actual reasons, etc. These techniques are called fallacies.
Doesn't that kind of fallacy sound familiar when someone defends one programming language over another to death?
Be a real engineer
Please, be a real engineer. Don't let your brain control you when you need to make this kind of decision.
Don't fight for a programming language. It's only a tool for a purpose, and this purpose is the project you are going to work on.
Don't be stupid. This is not religion!