Top
Best
New

Posted by spf13 1 day ago

Why engineers can't be rational about programming languages(spf13.com)
149 points | 173 commentspage 4
jjmarr 1 day ago|
C++ feels like a counterexample. There's zero or arguably negative hype behind the language and everyone I know hates it.

However, we continue to write new code in C++ due to libraries and because people know it. These are all factors that the OP considers to be negligible.

kagakuninja 23 hours ago||
Young Padawan, C++ was once a cool language, and I had to battle at multiple companies before I was finally able to make the career switch from C.

The conventional wisdom was "Where will we get C++ programmers?", "We don't have experience with C++", "C++ is too bleeding edge", and so on. The same excuses people give today to not use Rust, or your favorite hyped language.

If we follow the logic of OP, we will almost never develop new languages, because there are already multiple established languages good enough for any task at hand.

morshu9001 17 hours ago||
I've been in situations where we use C++ for no good reason, and it's just cause the others hate the "noob" ones like Python or JS.
tpoacher 11 hours ago||
Bulverism
lproven 10 hours ago|
https://en.wikipedia.org/wiki/Bulverism

Hardly, no.

The entire point of the article is pointing out an entirely different cognitive fallacy.

insane_dreamer 18 hours ago||
> “Everyone’s talking about Rust.” There it was: a 50 million dollar decision made on hype, about to be green lit.

I've seen this with React. You might have a great website working with some solid MVC framework + good'ol jQuery or equivalent, but no, the whole thing has to be rewritten from scratch to be an SPA in React, to "keep up".

msteffen 23 hours ago||
I love the author's argument, but this conclusion feels obvious to me—rationalizing emotional decisions is like the oldest human activity there is. Try asking somebody why they're whatever-religion or whatever-political-party that their parents, friends, or partner is/are. I further claim that much of the purpose of managers is to do this for individual contributors: give people a story that scaffolds a decision you hope they'll make: staying at the company and going along with whatever decision has just been announced.

I also don't think it's necessarily bad that people do this. The input to any decision a person makes includes their entire life experience up to that point[1]. How could an executive encode all that in some kind of pat logical explanation, and how could the also-human engineers at the company possibly digest such an explanation, and what could make it more compelling to them than their own life experiences? People need to get through life, though, so they need to make decisions. They can't fully rationalize every single one, but they want to feel at least OK about the decisions they're making, so they tell themselves and each other these incomplete little stories and get on with it. That managers scaffold this process with their own stories is a little manipulative, but how else could people cooperate enough to have companies? The whole process just seems intrinsically human to me.

The most important part of being an executive is understanding all of this and choosing to hire people who will ultimately make good strategic decisions for you. Don't hire a well-known Perl contributor as your CTO unless you like the idea of rewriting your product in Perl. If your company is dying because this has happened, my condolences but at least you're not alone.

Edit: I hadn't read this far when I wrote the comment but the author also literally says, "The moment you hire a Rust developer to evaluate languages, you’ve already chosen Rust." I guess I just disagree that it could work differently. Each of us possesses bounded knowledge and bounded rationality, and "which language is best", is probably too complicated for an individual to figure out, especially when you don't even know what the roadmap will be in a year—you'd have to build the company several times in several languages and compare the results (and the best engineers I've met do write code multiple times, but rarely more than twice IME). Each of us can only really know how we would solve the company's problems. Executives' job is to try and guess, and make decisions that are ideally optimal but at least internally consistent.

[^1] My favorite example of this, actually: even in the highly-rational field of scientific research, scientists have to decide whether a given body of evidence is dispositive of a particular theory, and the standards they apply likewise depend on who they are and what their life experience is. So, as Max Planck put it, science advances one funeral at a time.

m0llusk 1 day ago||
It is the language, available tools and libraries, and the community. As a programming snob the fact that most of my coding is now done in Javascript is a threat to my identity managed with a handful of clearly reasoned explanations. This choice works with tools and libraries that support my needs and there are always more experienced programmers that can be called on when help is required.
morshu9001 17 hours ago|
I also avoided JS for no good reason until one day
rkomorn 17 hours ago||
Until one day you stopped avoiding it, or you found a good reason?
morshu9001 16 hours ago||
I stopped avoiding it.
Freedom2 1 day ago||
I don't agree with the title - I've seen many engineers be rational and pragmatic about programming languages. I'm not entirely sure why the author decided to lead with such a charged headline.
Balinares 1 day ago||
I've seen a lot more engineers self-describe as rational and pragmatic than I've seen act like it. This here website is quite a marvelous zoological gallery in that respect. (Love you folks, you are messy complicated humans the lot of you and I wish I could cogently convey how good it is to embrace that instead of pretending elsewise.)

We do pick tools in good part based on how we feel about them (especially engineers who believe themselves beings of pure rationality, tbh), and I think that's in fact okay; how we feel doesn't come from nowhere, it's informed by decades of experience often acquired the hard way. But it's still a squishy metric that can only be trusted to a point, and being aware of how this sort of decision making occurs, in yourself and in others, is highly valuable IMO.

aj_hackman 4 hours ago||
90% of the time I've witnessed someone assert themselves to have some positive trait, they've espoused the complete opposite... especially when it came to morality or rationality. If someone tells you they're a logical person, they're probably highly limited in their thinking. If someone tells you they're a good person, run.
hunterpayne 1 day ago|||
Because his first experience with this debate was forcing PHP on engineers who knew that would be a bad choice. No matter what you are doing, PHP isn't the right choice for it if more than 1 person will ever use or depend upon the software.

PS I've seen PHP destroy billions in value in my career. It and Brainfuck are the only 2 languages you should never use to make software for other people. Every other language has a core use it is good at. JS in the browser, Python for scripting, Java when you need good observability and 3rd party libraries, etc...

necovek 22 hours ago|||
I've used PHP early in my career (around the time PHP 5 came about), and I was never a fan, but to claim that you can't built successful products with it is simply crazy: look at Facebook, Wordpress just to name the two!

And similarly, "Python for scripting" (Instagram?)... It's the effectiveness you achieve with it that is perfect for many new projects, based on language itself (dynamism, introspectiveness, readability...) and rich standard library and ecosystem.

I'd say you are not looking objectively at language choices despite the evidence being there in plain sight to counter the claims you are making.

kerblang 1 day ago|||
> Because his first experience with this debate was forcing PHP on engineers who knew that would be a bad choice

Ummm... No, I think it was about forcing Perl on engineers who had been using PHP.

wvenable 1 day ago|||
Probably should be "management" can't be rational about programming languages because that's what it's about. The article isn't talking about a group of engineers coming together to decide on a platform, instead it's about a choice being thrust upon from from up high. That management is also an engineer but that's not really the key point.
1718627440 1 day ago||
Why would management care about tools?
necovek 22 hours ago|||
In the first example, they didn't and recruited a CTO who made a tool choice that arguably killed the business (maybe it still ends the same with PHP, minus the experience of building a nicely architected system in Perl: what-ifs all around).

Management does need to care to ensure they hire people who will make the right choices (which is a careful balancing act of investment vs returns) if they don't trust themselves to do it.

wvenable 17 hours ago||
CTO is management.
hunterpayne 1 day ago|||
Exactly, when they do its a sign of bad management. The only case I can think of when this isn't true would be the difficulty in finding people willing to use/work in that language. But in all but the most obscure languages, this is probably given too much weight by management.
Jtsummers 1 day ago||
> I'm not entirely sure why the author decided to lead with such a charged headline.

It got people to click the link to their think piece.

esafak 1 day ago|||
I did not. I read the comments and still found little reason to check the article.
IAmBroom 1 day ago|||
Reason #9 will shock you!
uvaursi 22 hours ago||
Software “engineer”[0] here. There are plenty of developers that are very rational about programming languages. I think the author lived in a weird bubble for most of their life jumping from company to company, project to project and saw some unhealthy development teams along the way. Developers make very rational decisions around PLs all the time, and the most rational choice, as also given by PG and Joel Spolsky many moons ago, is pick the language you’re most comfortable with and get over your shit. The second most rational choice is picking a language that fits the problem space like a glove. The third, most obvious rational choice of course, is Rust.

[0] you sweet summer child.

keybored 1 day ago||
Please spare us the typical

- Look at people using identity-focused reasoning with politics

- It’s research!

- That’s the same as those <programming language tropes>

- Because I have some anecdotes about that

But the person making the argument couldn’t be falling for the same thing? Nope.[1]

Maybe it would be nice to have more objective metrics. So what’s that?

> We need a framework that makes the invisible costs visible. One that lets us have the economic conversation instead of the identity conversation. One that works whether you’re choosing your first language or evaluating a migration.

> Our industry has never really had that framework… Until now.

I better Stay Tuned.

[1] Those irrational people: making arguments. Me, the rational one: also making arguments, but mine are correct.

ModernMech 22 hours ago||
The thing people get but don't really want to admit to themselves is that programming languages are cults to some degree.

We understand this when we talk about the irrationality of the language flame wars. Back in the Slashdot days we joked about it explicitly. So in that tradition: I don't want to start a holy war but...

You've got all the ingredients. First and foremost the BDFL. He's the cult leader, coming in with a new "way of thinking" which, if you follow his rules (the language) will lead to a better life (better code, better career, personal enlightenment, righteousness, purity, becoming closer to the machine (god)). Often times this is expressed in terms that even he cannot quantify -- the language is "efficient", "advanced", "secure", or "modern". But the point of the language is, if you only adhere to these dogmas (everything is an object/table/function, everything must be immutable), then your life will be filled with fast/efficient/secure code (again, can't really quantify it).

Some of them even sell you a "purist" cult -- "we don't sling dirty imperative code here, our code is pure functional, which is closer to the ideal (god/the word of the BDFL) and therefore good". Lispers figuratively go there saying things like Lisp is the language of God. HolyC (TempleOS) literally goes there with claims the project is a word from God. Now, there's mental illness mixed in with that (but would you believe me if I told you many language designers suffer from mental illness? At least every one I've known. If anything, there's a good deal of narcissism and delusions of grandeur in this community, which incidentally you'll also find in cult leaders).

Of course like any good cult, aesthetics are enforced. You can't just program in the language, you have to program the way everyone else programs. Take the Zen of Python, which preaches a sort of asceticism. Some cults are about "beautiful" code, that looks "clean" and is free of anything impure like certain syntax or even specific characters that are thought to be a nuisance. The key to all of this is it has nothing really to do with the essence of the language. Just having these elements floating around is enough for people to glom on and stick around. You don't even need to have an actual language to form on of these cults, look at Jai. There the BDFL has held back his language for about a decade, promising to release it but never actually doing so, which paradoxically keeps people holding out to receive the forbidden knowledge he is keeping from them.

We've got our holy books of course. The language spec holds all the keys to understanding the word of the BDFL, although the number of people who have actually read it compared to use the language rounds to 0. Not only because these specs and docs can be voluminous, but also sometimes they are written purposefully to be inscrutable. See "Nock" and "Hoon". Half of understanding those things is just getting your head wrapped around the jargon, which itself is meant to be exclusionary -- if only the authors can read it, it puts them in a special place of translating the holy texts so that mere mortals might understand their wisdom (it also means that if anyone disagrees with them, they can just insist the texts are being translated wrong). Other times there are style guides which tell you the one true way to read and write the language. Then there are the various blogs and tutorials which are the equivalent of sermons, spreading the good word to the masses.

Speaking of the masses, that brings us to the community! That's us, we are the cultists! The community will defend the BDFL to the death, and attack anyone who questions the dogma. You see this all the time in language communities, where any criticism of the language is met with vitriol and ad hominem attacks. Usually the BDFL treats people this way, and his community sees it a sign of strength, so they emulate it. Although The community is often more zealous than the BDFL themselves, going out of their way to convert others to the faith. We see that from time to time on HN, when people show up here from some lang community and they get way too into it, to the point their lang is flagged here every time it's posted (not even gonna name them because they'll be here to say something). They will also police the community, ensuring that everyone adheres to the dogma and punishing those who stray from the path. This is often done through social pressure, other times it's through explicit excommunication (banhammer).

Which leads to sects! I mean forks! When a language community gets big enough, you start to see splinter groups forming. Tensions rise in the community around aesthetics, features, or very often how the community is being (mis)managed, how the BDFL is leading or ignoring users. Eventually you get a Martin Luther type who strikes out and forks the cult intending to create their own cult. We saw this with projects like Elm stagnating as the BDFL continued to bless certain packages but refused this access to the rest of the community, so forks starting to appear. Or look at the recent controversy with Nim and the Nimony fork.

And let me tell you, as someone who was a dev for a PL and saw how these things started off, you really attract... interesting folks when it comes to a brand new language. For the thing I was involved with, it was just one person after another who had some out-there idea thy wanted to glom onto the language. Stuff like "vorpal math"... whatever that is. So, yeah that's the kind of people you start out with in the early days if you're lucky, because no one else is paying attention to the niche PL scene except the vorpal math guys, who are primed to receive any kind of special knowledge from a cult leader. You collect a couple of these followers, they become true believers, and then you grow from there. It's not too hard, but it's very unstable, so most communities don't get too big as the BDFL loses interest himself, or he can't keep the hype going. Once in a while you get guys like Yarvin who really run a grift over a looooong period of time -- with Urbit they were literally selling virtual land plots to their community. So just like actual cults, there's also a grift to run when it comes to languages (languages are not profitable at scale, but they can be profitable if you know how to grift).

Now I'm not saying all languages are cults. But I think the fastest way to build a language from nothing into something somewhat active is to lean into the cult-like aspects to entice people in. Because otherwise the language has to stand on its merits, and small languages can't. So they have to stand on a promise of heaven that may or may not materialize (it probably won't), which is the basis of the cult. Because to keep the movement going, the cult leader either has to deliver nirvana, or keep promising it's just around the corner. Maybe it will be, but it's very easy to waste a decade of one's time hanging on to some lang dev waiting for him to drop the next update which will fix everything, but it never comes.

ranger_danger 1 day ago|
I've got a different theory than this AI slop:

Engineers often aren't rational because engineers can still be stupid. Dogmatism/black-and-white thinking is often a sign of low emotional intelligence (and can also be a defense mechanism called "splitting").

The Dunning-Kruger effect also applies to "smart" people. You don't stop when you are estimating your ability correctly. As you learn more, you gain more awareness of your ignorance and continue being conservative with your self estimates.

hunterpayne 1 day ago|
Dunning-Kruger applies to people who don't know a specific domain. If you spend all day writing code, you probably understand at least one language fairly well. Maybe you are not an expert in how compilers work but at least you understand programming to some degree. So this topic is probably one of the least appropriate ones to apply DK. If you want to make this argument, perhaps best to base it on identity, not DK.
dragonwriter 1 day ago||
> Dunning-Kruger applies to people who don't know a specific domain.

I mean, its largely a statistical artifact around which a pop science myth has accumulated, but on its own terms it applies smoothly and continuously across the entire range of ability in a domain, not in any special way just one one side of binary knowledge dividing line (the finding was basically that people across the whole range of ability to tend to rate their own relative ability closer to the 70th percentile than it actually is, but have monotonically increasing with actual relative ability.)

More comments...