DEV Community

Discussion on: Don’t be arrogantly ignorant: don’t flame

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️ • Edited

When you derisively denounce a programming language as wrong or harmful, you are framing its users as stupid and incapable.

This is just wrong. There are hundreds of reasons for using a bad programming language like PHP: Working on legacy software, being more familiar with the language, simply not knowing any better, having a need for certain language features, etc.

Making a statement about a language is not the same as making the same statement about its users, and acting like it is risks completely derailing the conversation.

Such statements show a screaming lack of empathy

Again, this is just wrong. Nobody should have empathy with a programming language. Thus starts the aforementioned derailing.

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.

I have little to add to this, other than saying that I 100% agree. How you end up in programming is nothing more than an interesting story to share with fellow developers, not a sign of how good or bad you are at what you do.

Expecting the latter to know about dependent types because [...]

And this is where the entire argument starts rolling downhill again. First of all, it is entirely dependent on context whether someone needs to or should be expected to know about these things. If you don't need it for the job, regardless of whether you've spent 20 years in academia or have stacked bricks until two years ago, then there's absolutely no reason to expect that you should know a thing.

But of course there's another side to this too: Thanks to the internet, everyone has access to this information. Universities aren't magical; all they really offer is make the decision of what information you need to learn and offer an environment for people to learn.

Being self-taught is not an excuse and it shouldn't discourage people from just looking these things up and learning them. On the contrary, our effort should be focused on demystifying these more "academic" concepts.

The problem isn't that we keep people out for not knowing certain things. It's that we keep them from learning these things when they absolutely could.

PHP changed orders of magnitude more lives than Haskell.

Not only is this a very short-sighted oversimplification, even if you narrow it down to just the financial impact these languages have had on developers, it's not like PHP has achieved this success through its many design flaws, but in spite of them. This makes it all the more important to criticise the language for everything wrong with it, in a way that that doesn't really apply to a language like Haskell.


Off-handedly rejecting PHP, Java, WordPress, Javascript, and other oft-criticized languages and frameworks is a sign of a closed mind; of willing ignorance.

Again, this is plain wrong.

Your assumption here is that people who reject these technologies without further thought have never, in the past, put in the actual effort of looking at these technologies and evaluating them. But many people have. Most people who say PHP is shit will most likely have worked with it and, through this experience, concluded that they simply do not see any value in the language.

So really, what you're doing here is dismissing people's professional experience as "Off-handed" simply because it does not align with your personal attachment to your first language.

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.

The only valid reason to publicly criticise a decision is when it was a bad decision. Whether it was made due to malice, incompetence or project constraints, a bad decision has no excuse that shields it from criticism.

Rejecting a programming language outright makes you a poorer technologist.

And yet here you are, defending the language you started out with, attacking those who have moved on to other technologies they like more for daring to suggest that the thing you feel emotionally attached to may be so flawed that some people just don't want to go near it if they can at all avoid it.

You are staying ignorant out of arrogance.

There is this thing called the Dunning-Kruger effect. The fact that you attribute disagreement with your position to incompetence, ignorance and arrogance gives me a good hint where you roughly are in your learning process.

Instead of criticizing, engage and share

This is what most people are doing already. This is how most conversations about poor choices of technology look like. If your experience is different, then maybe, just maybe it's your surroundings that are being toxic.

Had they told me I was an idiot, that PHP sucked

Sounds to me like you're fighting Windmills here, but again, maybe you're just stuck in some really toxic communities where something like that actually happens. In my world, I can assure you, it doesn't.

Collapse
 
stojakovic99 profile image
Nikola Stojaković

This. You like PHP? Okay, great, keep doing it. But don't pretend like all languages are same because they clearly aren't. You can't compare a language which was designed in a small period of time as a small group of utilities with a language designed by people with PhDs in a long period of time and which is used for completely different purposes.

Collapse
 
wesen profile image
Manuel Odendahl

Of course you can compare them, that's fruitful. PHP has also tremendously evolved since the early days. If anything, I benefit a lot from my knowledge of haskell and functional programming / category theory concepts when writing PHP. The article is not about any technology, but the fact that putting down a language in order to make yourself seem smarter is harmful.

I love both PHP and Haskell. What I don't like is Haskell programmer thinking PHP programmers are idiots, or, conversely, PHP programmers thinking Haskell programmers are ivory-tower headscratchers that don't know how to ship stuff. Plenty of very smart people have invested a lot of time and effort into both ecosystems.

Thread Thread
 
stojakovic99 profile image
Nikola Stojaković

It has evolved but it's nowhere near the Haskell's level. That's a fact. I'm not saying it should be though - they are made for different purposes. Both serve their needs.

Thread Thread
 
wesen profile image
Manuel Odendahl

100%. In many ways, Haskell's strength is to be a playground of evolution, while PHP benefits from keeping its roots, as ugly as they might be.

A big strength of PHP is the existing ecosystem around it and its widespread adoption, partly because a lot of messy legacy systems are still around and run "fine" (fine as in, they work well enough that nobody has replaced them with something else).

I love experimenting and prototyping in Haskell, writing what I thought would be a simple API server with servant really did my head in.

There are many concepts I experiment with in Haskell that I can easily transpose to PHP.

Thread Thread
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️

I have a feeling you might enjoy Lua 😅

Thread Thread
 
wesen profile image
Manuel Odendahl

I had some good times with pico8! Made a couple of games with it. Quite a few of my buddies are into it, I haven't fully had the need for it so far, but it is quite enticing indeed. I was planning on building some with fennel-lang.org this summer on my sabbatical, but of course many other things were interesting too.

Thread Thread
 
wesen profile image
Manuel Odendahl

The problem with gamedev is that your code turns to garbage super quickly. And sadly coroutines are quite expensive on pico8, if i remember correctly:

github.com/wesen/carts/tree/master...

It felt very "javascript"-y, in the sense that the prototypal inheritance and the coroutines allow you to experiment with a lot of different programming styles/patterns without feeling friction.

I heard great things about the JIT but never looked closely into it.

Thread Thread
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️

Yep, it shares a lot of features with JavaScript, but between coroutines, TCE and the more powerful tables compared to JS objects make it better suited, in my opinion, for just playing around with some cool FP concepts.

The landscape of languages that compile to Lua is also quite interesting; there's at least two lisp dialects (urn and fennel), a coffee-script-like with two different dialects (moonscript and yuescript) and even an ML-like (amulet)

Thread Thread
 
wesen profile image
Manuel Odendahl

My current "language I want to make some money with so I can call myself a pro" is rust, which I finally picked up after being turned off of it for a while. It's really a solid improvement over C++ in the bare-metal / embedded space. After that, Lua is high on the list (or retirement, hopefully :). Any resources you particularly enjoy?

Collapse
 
wesen profile image
Manuel Odendahl • Edited

I think my point is that stating "PHP is hot garbage, nobody should use it" is definitely felt as keeping people out. I know it because people tell me things like "I have kept Javascript from my resume because I have heard so often that Javascript is a bad language. It took me 2 years working professionally to gain enough confidence to put it back." Noone should go through that.

There is plenty to criticize about PHP, and it's necessary and healthy, but you can do so without implying that people using PHP don't know better. It will also not help anybody make better choices in the future.

For example, saying "PHP makes it easy to use and misuse global variables, it is a flaw that has survived mostly to this day" I think is very valid. If you see someone using global variables, there are productive ways of pointing it out. Assuming they should have known, and are responsible for their lack of knowledge, I think lacks compassion.

PHP is far from hot garbage. If your past experience left you with that absolutist statement, then I think you are missing out. I very much have strong criticism about any of the technology I use. There is a huge difference between "PHP is hot garbage" and "I think PHP is hot garbage".

I should have made clear I think that PHP is just one of the many technologies I use. I have worked professionally in Common Lisp, C, C++, golang, PHP, Java, Python, javascript, Typescript, I'm not attached to any of those, although Common Lisp is fondest to my heart. If you read the article, I am not defending PHP as a technology, as much as pointing out that it is used by many to good use.

I'm glad you work in communities where this doesn't happen, but I see this behaviour very often, and I know how much it impacts people who are starting out or who are coming from more alternative paths.

Heck, it even kept me from using Rust for years because I got piled on, called irresponsible and outright criminal because I was working in C++.

Collapse
 
wesen profile image
Manuel Odendahl

Thinking a bit further, "I think PHP is hot garbage" is much less valuable an opinion to hold as "I think PHP is hot garbage because I ran into these issues XYZ, and PHP made it possible. It wouldn't have happened if we had used W, etc...". When I dislike something, I try to think very deeply about it, often read old bug reports and commits to see why someone built something a certain way. I often learn something about the context in which a decision was made.

It doesn't change the technical impact, or that certain things should be avoided, but it is a richer, deeper approach to technology.

Thread Thread
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️

As I already said though, assuming that other people, just because they don't want to give you the full essay on why they hate what they hate, haven't also done the exact same thing and put in a lot of thought seems like you have a rather low opinion of your fellow developers.

Sure, there's always some knobheads who just hear that a thing is bad and repeat it because it's what they heard, but I don't think it's the majority of criticism, at least not in any online space worth staying in.

Thread Thread
 
wesen profile image
Manuel Odendahl

Thanks for the conversation, and you have a good point there. People can definitely make broad inflammatory statements out of frustration, certainly I did with this article. But I think it's easy to forget how hostile technology can be, especially for people who don't fit the usual mold.

I have been mentoring quite a few people as well as hanging out in a lot of communities, and daily I will see someone explicitly putting not just a language down, but its users, often personally and viciously. I also hear the impact it has on people who come from very different backgrounds, and don't have the confidence to ignore hot takes.

For example, I am autistic, and I take things very literally. Hearing someone calling modern Javascript a scourge and that it destroyed the web pretty much means "You are evil and destroyed the web", and it takes a lot of effort to interpret things differently. It took me 10 years to actually ask for a decent hourly rate, because someone online told me that real programmers know the full stack from the CPU all the way to the graphical interface, which led me down years of studying ASIC design all the way up to type theory, until I realized that real programmers certainly don't know the full stack, and still make a living.

If you don't like a technology, and genuinely want to help people move away from it and get better, I think it's vital to check yourself and see how you can be productive. For example, I genuinely want to hear what you like about Lua, what you dislike about PHP, and vice versa. Now, when I'm talking to my buddies in private, flame away, since they know where I'm coming from.

There is also value in practicing how to communicate these kinds of criticism at the workplace. That's for example why I wrote my article about RFCs.


I definitely have a very high opinion of my fellow developers, and the only thing I find despicable is bullying and putting the work of others down.

I'm definitely trying to find my voice with these articles, my "just be kind" takes on the problem got a very different traction than the more forcible ones. Talking with you helps me refine what I take, and indeed, be more empathetic myself.


The point I wanted to make with "public" criticism is that there are people listening that might take your words differently than just "someone doesn't like XYZ because of their experiences".

The latest experience that ultimately making me write this article was being at a conference, and hanging out with people who out of grad school got a haskell job, calling java programmers "brainless drones that can only program because of their IDE."


What I might expand upon with regard to rejecting technologies say, on their pure technical merits, misses a lot of what programming and technical strategy is in practice. There is always a larger context, and for example WordPress, as much as a despise it when I bang my head against its database schema, is a reasonable choice for say, a small business that wants to self host. As is JAva if you come into a big, completely delusional codebase entirely written in Java.

That might of course not be the kind of work you want to do, and noone forces you, but it's definitely not worth such harsh words.

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️

There is a huge difference between "PHP is hot garbage" and "I think PHP is hot garbage".

Indeed. And I would agree with both statements. There's plenty of things that make me personally dislike PHP as a language, but there's also a good list of reasons why I think PHP is objectively a bad language. Things like the inconsistency of built-in function names only make it harder to use without adding anything, while features like OOP add something that others enjoy but I don't personally care about.

pointing out that it is used by many to good use.

Just like how transformer oil is used by many to deep-fry food. That doesn't automatically mean it's a good or a bad thing, it just means that lots of people do it. A more important question is: Could these same people be achieving even more if they were to use another tool instead?

Heck, it even kept me from using Rust for years because I got piled on, called irresponsible and outright criminal because I was working in C++.

Unsurprisingly. As someone who hasn't tried Rust, the two cliches I predominantly associate with the language are transgender cat girls nyaaa~ and elitism (from my experience, these two seem mostly disjoint though).

As far as community involvement goes, most of my experience is with the Lua community, which is rather small, so that may be an important factor. Most of the interactions I've seen are generally more leaning towards "PHP is shit, here's why, here's some alternatives and if disagree I'm curious to hear your opinion" (replace PHP with any other hated technology).

In other words, people have the same strong opinions as anywhere else, but with a healthier attitude towards different perspectives.

Thread Thread
 
matthieu_rolland profile image
Matthieu Rolland • Edited

PHP is good at what it does: web oriented OOP.

PHP 8 is a joy to use and the ecosystem is insane: there are few web frameworks as good as Symfony out there... Django or Rails don't match Symfony.
Some php devs prefer laravel but I personally don't like when there's too much magic.

My point is that in the industry, very few teams use php without Symfony or Laravel's tools. They also mostly use things like static code analysis tools to catch edgy errors.

Some will argue that if those tools are needed then the language is bad... Maybe, but I don't know any language that would make me more productive than PHP and Symfony for doing SOLID server-side programming, not even nodejs.

Slack dev team wrote a great article about why they they came back to PHP for their server side stuff.

slack.engineering/taking-php-serio...