There is a widespread tendency in technology to discuss specific programming languages (and their frameworks) with open contempt. Who hasn’t heard people scoff at how stupid PHP is, how backward Java programmers are, and how criminally short-sighted C++ users are?
Nothing infuriates me more than this open gatekeeping, this active bullying. Putting people down is not valid technical criticism: its only goal is propping oneself up as part of an elite in-group. It is blatantly exclusionary.
Discussing technology should be a dialogue driven by compassion and respect. Not putting in the effort to understand why people made a particular choice, what constraints drove them to it, and most importantly, what lessons you can learn from them. Borrowing the expression from a friend, you are being arrogantly ignorant.
Knee-jerk criticism considered harmful
Gatekeeping is the act of denying people access to resources that you have access to. When you derisively denounce a programming language as wrong or harmful, you are framing its users as stupid and incapable; you are implying they are not worthy of working in technology and should leave.
Such statements show a screaming lack of empathy: everybody starts as a beginner and tries to make the best of what they know — you certainly did, not that long ago. A person learning to program at a young age on their personal computer, with parents in engineering, and then attending a prestigious school is just as worthy of being a programmer as someone attending a boot camp at age 35 and then hustling WordPress themes. Expecting the latter to know about dependent types because the first had the opportunity to work at that level of abstraction is shortsighted at best; privileged, and entitled at worst.
PHP is one of my favorite languages, not just because I got into web programming in the wayward days of PHP2, but because of how empowering it is to beginners. When you write PHP, you always have a running website — the language feeds and sustains your motivation. Fighting pip, setting up a remote environment in WSL, and having to learn vim is why many people drop out or feel they don’t belong.
With the widespread adoption of WordPress, you can, in a very short amount of time, become a professional developer: building websites for local businesses, selling themes and plugins on its marketplace, or joining one of the many consultancies and freelance marketplaces. It is hard to stress how transformative this can be for marginalized communities and people in countries outside of western Europe and the US. PHP and freelancer.com allowed me to go from making sub-minimum wage to being able to make rent in an afternoon.
PHP changed orders of magnitude more lives than Haskell.
Gatekeeping as the actual technological sin
Off-handedly rejecting PHP, Java, WordPress, Javascript, and other oft-criticized languages and frameworks is a sign of a closed mind; of willing ignorance.
People write code trying to operate to the best of their capabilities. They make choices according to what they know, the industry's current state, the constraints of the problem they are trying to solve, the pressures of the market, and their personal lives. Viewed through these lenses and given how wildly successful these technologies are shows how capable and driven their users are.
The only valid reason to publicly criticize a decision is when it purposefully harms people or was made by someone who fully knew that there was a better choice but chose not to for personal gain. I often went for architecture choices that I thought were not perfect: out of time pressure; to help a colleague grow by having them make their own choices; so I could hire from a broader, more diverse community.
Rejecting a programming language outright makes you a poorer technologist. It closes you off to huge, vibrant, diverse communities. The lack of humility causes you to miss the creativity of engaged, practically-minded users. You might never experience the quality of their tools and how good their documentation and onboarding can be. A tool with 200,000 users and 500 contributors will quickly become better than something maintained by 3 people in academia. Beginners who get pull requests on their project in the first week promptly improve their software engineering game.
Being dismissive shows that you are missing the larger context of being a programmer: building products, turning concepts into reality, and working and interacting with others. A programmer is much more than a code monkey narrowly defined by their choice of technology.
By poo-poo-ing these popular languages and frameworks, not only are you keeping people from becoming better professionals; from having access to the knowledge and resources that you have—you are actively stunting your personal growth.
You are staying ignorant out of arrogance.
Instead of criticizing, engage and share
Of course, valid criticism is essential and healthy. While everything is a matter of choice and compromise, some options are better than others; some decisions are obvious mistakes (in hindsight). Learning new languages and approaches is an essential path to growth.
Criticism is valuable when everybody participates in good faith, with mutual respect. One should criticize concrete, technical points—critique shouldn’t be aimed at people and why they made a particular choice. Core contributors to languages such as C, Haskell, Typescript, and PHP have candid, deep, and respectful conversations. They know they each come from a different background, embrace each others’ choices, and know they can learn from them.
Instead of putting a language and its users down, consider how you and your interlocutors can enrich each other's lives. We all love programming, working in tech, and learning. If we understand that we each have our journey, skills, motivations, successes, and struggles, we can all make better choices in the future.
I will forever remember the day someone on IRC praised me for my janky PHP website and told me that I would enjoy “Structure and Interpretation of Computer Programs” by Abelson and Sussman, which transformed my career. Had they told me I was an idiot, that PHP sucked, and that I should be ashamed for having written such blatant SQL injections, I might never have gotten to where I am today.
Conclusion
The next time you feel the urge to criticize something or someone, take a breath and reflect on where that urge comes from: do you want to feel superior, or do you genuinely want to help someone?
We should all aspire to make technology more welcoming — the best way to do so is to approach every situation with humility, compassion, empathy, and a love of technology and its communities.
If you think you know better, then act like it.