

Don’t be arrogantly ignorant: don’t flame
source link: https://dev.to/wesen/dont-be-arrogantly-ignorant-dont-flame-814
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


Don’t be arrogantly ignorant: don’t flame
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.
Recommend
-
64
-
29
pg_flame A flamegraph generator for Postgres EXPLAIN ANALYZE output. Demo Try the demo
-
11
Coloring Flame Graphs: Code Hues 30 Jul 2017 I recently improved flame graph code coloring. If you're automating or implementing flame graphs, this is a small detail that may interest you. (For an intro to flame graphs, see...
-
9
Java Package Flame Graph 30 Jun 2017 CPU flame graphs visualize running code based on its flow or stack trace ancestry, showing which functions called which other functions and so on. But with Java, there's another way to vi...
-
10
USENIX/LISA 2013 Blazing Performance with Flame Graphs 23 Apr 2017 In 2013 I gave a plenary at USENIX LISA on flame graphs: my visualiza...
-
10
Yesterday I posted about flame graphs for file systems, showing how they can visualize where disk space is consumed. Many people have
-
7
"Let no one ignorant of geometry enter" Frequently Asked Questions about Plato
-
13
ConversationThis is heartbreaking, and terrifying. Almost as scary as some of the ignorant idiots commenting that they'll ignore his pleas.Quote Tweet
-
3
ConversationThe crop of 2022 Android devices will be very good from what it looks like: - Devices shipped with the GKI so that the same kernel is shared across devices (with a stable ABI for vendor drivers) ...
-
3
VCs with Ignorant Views on Race Have No Place in Venture Capital Over the last couple of day...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK