No one gives a shit what programming language you use
georgestocker.com
georgestocker.com
> Pick the language and stack based on your team’s needs and comfort, based on your business’s need and risk tolerance, and based on how easy it will be to produce software for your target users in that language or framework. That’s your criteria. Not what I think, not what UBM thinks, and certainly not the language or framework de jour on Hacker News.
How do I determine the above if I’m not allowed to dictate which language I think is best? Especially if I’m given several options for languages that are similar?
"It's 2021, why aren't you programming in Clojure? It's time."
If... you were in a software team, and said...
"I think Clojure is the best choice for this project because the talent we have is comfortable with Lisp programming and functional paradigms, we'll be able to deploy with the full featured JVM which is frequently updated and has a ton of libraries, and X and Y, and Z"
I think the author would be totally fine with your statement because as he notes in the article, you're taking into account the particular needs you have for your current project and the resources you have available in order to produce something for the end user.
The author is saying (in my words) "blanket statements like 'why aren't you using Clojure?' are bad because they create classes within the software community and don't take into account the real world considerations you need to look at when you're building something, you're just creating hierarchy for no reason"
Which seems more reasonable. Basically... don't consider yourself great cause you're using Clojure and someone else is using PHP. Instead... consider yourself great for creating value for end users and don't be haughty about your programming language, or stack. Use the tools that are proper for the job instead of making the intern feel like shit cause you're so great at Lisp and they just got out of college with some basic OO skills.
I think your comment about "there's no room for language advocates" takes things to a level the author never intended. You can say "I think we should use language X for project Y because of A B and C", that's totally fine. Saying "Wow, you're not using Clojure in 2021? What are you an amateur?" is just kind of a dick statement.
It's toxicity of a culture of elitism and a fetishizing of language purity.
People get pilled on languages and tools. It's totally unhealthy. They guide decisions based on faith and optimism and never check back in with reality
PS I drank the Ruby Kool-Aid as well. I agree it was very tasty. I even at one point was a Ruby Engineer, as if that means anything :)
JS for example is loved by Junior devs. However due to JS’s flexibility they may later decide they like Typescript because typing can eliminate edge cases that JS is flexible with. The knowledge gain isn’t whether Typescript is a better language or not but that the developer learned why more experienced developers prefer using Typescript. Something that may have been pounded into their brain but was just noise until they were forced to deal with it.
Languages and tools exist as socially created institutions. They have all the same entrapments and faults as any other institution.
Orthodoxy, zealotry, blind loyalty, mobbing, cultist behavior, these can happen in any human institution; a subreddit, financial institution, political party, exercise system, startup, religion, and yes, even computer software.
It doesn't have to, but the point is it can and we shouldn't ignore the tripwires. Computers don't magically make the humans that use them immune from such possibilities
None of those problems are caused by elitism for a language. Advocating and language elitism are symptoms of larger ideas. Attacking elitism in language choice is silly and a waste of time as it's naturally inclined to happen. People do give a shit and for a myriad of reasons.
It's all about trying to avoid haphazardly creating cults.
People don't really set out to create cults, they arise out of a set of reasonable intentions that can manifest as toxic institutions.
People want things to be utilized, relied upon, popular, talked about, exciting, enjoyed, make people feel special, etc. All good, as long as we're being careful. I just described Jim Jones, heavens gate and astrophysics or an entertaining movie.
Being careful about culture is important.
We want to have robust, healthy, long lasting, respectable institutions in computing.
To be simplistic, snobbery isn't a good fit
Thanks
> The elitist fucktards that create these social classes do so because it makes them feel important.
This is from the article, do we honestly believe that these things are created by the people saying them intentionally? As we just discussed this isn't a phenomenon, it organically happens inside of human organization.
I'm curious what level of social posturing and manners is required to avoid it. Is the solution to have "social-justice warriors"-like people patrolling Twitter and work platforms and correcting them?
Especially in the notion of public platforms on the internet, a lot of things are often taken out of context. Not every comment about "X language should be used" is a malicious elitism.
Curative steps I think take much longer. Science has had to deal with this stuff constantly.
In say medicine, there's always quackery spontaneously arising somewhere. It can take the form of well funded startups like theranos, mainstream established companies like purdue or what we usually think of, the supposed miracle cure person with the bad website and YouTube channel.
Luckily medicine is continually creating a pretty solid culture that stamps that stuff out pretty quickly. Not as quick as we want, sure, but it's track record on the whole is getting better. Certainly not free from criticism but the people in medicine are clearly aware of the tendancies.
Variation and a lack of agency over results appears to play a key role in susceptibility to these patterns.
In computing we have for the most part not even acknowledged it's possible.
One of the key promises of these patterns is more agency and less variation. It's what everyone is reaching for and this make it fertile ground for toxic institutions with fundamentally undeliverable promises.
People chase the ideals hoping for the promises. Everyone gets screwed
While you use words like toxicity, elitism, and fetishizing, a positive take could be given. Say instead there is a nourishing culture of experts, core contributors who mentor those interested and write articles expounding the language's culture. And that language purity is a meta reasoning tool that enables engineers to focus on business problems rather than the quirks of a language lacking conceptual purity.
Note well: I'm not taking a position on whether your particular group is toxic or nourishing. I'm just saying that you can't spin one as the other.
>woodworkers take pride in the finished product, and seeing that finish product being used. They are not all hot on the tools they use
For a while another hobby of mine was photography, and oh man photography has so much tool talk online that I lost interest in any online discussions / forums. Comparing this lens to that and so on was so prevalent that it seemed entirely disconnected from the hobby of actually taking a photograph.
Decades ago I took some outstanding photographs with an early days digital camera that would be greatly outclassed by a random camera on a smartphone now, but does that matter?
I suspect it is because high level talk about tools is just easier than talking about the actual code / effort and hard work it is to make a thing.
I heard that quote when I was an aspiring musician (trombone). Once when I was complaining to an instructor that my horn just couldn’t produce the sound I wanted, he took it, played the passage beautifully, and said “sometimes it’s the fiddler, not the fiddle.” A humbling, eye-opening experience that has applied to all of my professional experiences.
Amateurs seek new apps, novel idea, or that best trick that will cure all procrastination. I've been there, and still be sometimes, but much less now since the system began to click and taking shapes after numerous (failed)attempt.
(Well, that made me semi-amateurs I think)
Professional have their own system(usually simple and routinely) and run their life with it. My mom and her trusty pencil & notebook run our household budget for fifty years!(and still going) I can't imagine doing that without some Excel...
Although I'm sure we're all amateur at some point in life...
So not only does the programming language choice dictate what kind of tools you have available but also what kind of tools are easy to make and how to compose these tools. Even taking open source tools into account, different libraries in different languages can behave quite differently so the programming language choice matters a lot. It affects how you think about the problem and what solutions you end up with
This has been my experience too!
Wherever tools are used there are tools made of shit. Thus we need to discuss the tools.
(https://en.wikipedia.org/wiki/Space_Station_13)
Honestly, I think devs love to overanalyse tools as a form of procrastination. A poor carpenter blames his tools, after all.
>Wherever tools are used there are tools made of shit.
I find it's super easy to shit on tools. That doesn't mean another tool is better / will have a better outcome. Most of the tool talk is very focused on a few problems that I am not so sure actually point to the outcome of using it.
Let me rephrase it: "It's 2021 people. Why aren't you driving Lamborghini? It's time".
Still doesn't sound like "elitism"?
Only few people can afford Lamborghini. Trying out Clojure - books are cheap, tutorials are free, it's just a matter of actually doing it.
Amusingly clients can be the ones who care the most about a certain language being used. They see another business succeed using it and associate the success with the language choice. Cargo culting happens at all levels.
> The choice is about making YOUR work easier, enjoyable, better
And there is some sense to this, for example if you find work easier, enjoyable, and better using FORTRAN to build websites it doesn't make it the best solution for your client or business.
Yep especially the part about "how easy it will be to produce software for your target users". Case in point. My company uses PHP/Laravel framework for our SAAS and we didn't just choose it because it was cool but because Laravel comes with a great ecosystem, packages and community and most of my team was good in PHP for a while. I actually tried to go rogue by trying to force Golang on my team (long story) but almost dodged the bullet when my CTO told me to go pound sand just because I wanted to switch to Golang (I am the CEO). I am so glad I have people to tell me that I am wrong when I am.
We have not only created a great product but the time to market is 20 times of what could have been if we had switched to Golang just because it was cool (and don't get me wrong, I love Go as an amateur programmer and even wrote an internal tool in it to help our team). But for our core SAAS product, focus should be on time to market, customer needs and our team's strength and I am so glad we stuck to what works for us, PHP and Laravel in this case. I hardly have a customer asking about the Programming language we use (may be 2-3 have asked in last 7 years and those were technical folks from customer's team)
I participate on some forums where folks are just learning and literally folks will show up "yeah but if you start your project with X what happens later if it takes off and you have to <scale, change schema, whatever>".
In reality if some new guy takes off and makes Facebook 2 he'll have so much money that that problem will be probably pretty darned nice to have.
IIRC hearing Facebook was using ColdFusion at one point, somehow that didn't stop them...
Most all these long drawn out what-if discussions almost always dance around the real topic everyone's discussing: who is taking the risk and whose neck is on the line should things go south. If businesses were more willing to take reasonably accessible risks back from their employees doing the work, we'd have a lot less of these discussions. Instead they just go on and on. Who has to do what or will get fired and have to deal with explaining to future employers why they were fired. Instead, we end up passing as much risk as possible to customers and innovation suffers.
They are still running and handling people’s money.
> and based on how easy it will be to produce software for your target users in that language or framework.
Sometimes this might be Clojure. Often times it might be a language that can do things in parallel, either async i/o or perhaps concurrent computation. In these cases choice of language matters. Also if your company/team(s) are a certain size and growing, staticly typed languages have been chosen by other companies going through that transition even when already successfully using a ducktyped dynamic language. Know your tools, learn your craft, take posts, including this comment, with a grain of salt.
So yeah, feel free to disagree with Uncle Bob, but in no way is he "under-substantiated.
Am I allowed the opinion that it was bad for the industry, and some of the ideas it integrated are harmful and still holding us back as an industry?
It's convenient that we have no crystal ball into a parallel universe where agile never became popular.
I don't know, I think we did: what is called "agile" today is all of the exact same stuff that the agile manifesto was explicitly the opposite of. Agile became popular among developers, managers didn't really understand what it was, consultants rebranded it to be exactly what it was supposed to be a replacement for, managers were happy, and developers went back to being frustrated.
Part of how you feel about agile likely has to do with the industry you are in. If you're doing embedded systems for cars or medical devices, agile is absolutely trash. But for the very large world of consumer facing software, or even business software that isn't dealing with life-or-death situations, the agile world is so much better than the waterfall world.
Instead it was a bunch of vague maxims, that became a cult collection of heuristics (nominally rooted in Java, as much as it claimed to be polyglot).
The counter-argument to this is "No True Agiles-man", so the brand never needs to take responsibility for the reality, and this defense is as much a part of the culture as anything. It's like agile is a religion, and the manifesto is the religious texts - selectively ignored or interpreted as needed. No, I don't feel this is much better than waterfall, especially as even that could have evolved into more user engagement, without the mantras ("waterfall is bad" itself being a mantra) - why can't waterfall be a "tool in the belt", or a reasoned stage in the process? Why can't agile principles be taken individually rather than adamant on the whole? Why can't sometimes people be more important that process, and sometimes process more important than people? Why can't we have a plan (moreso upfront), and still respond to change?
I wish we could bring ourselves to value writing code that is accessible instead of conjuring up gibberish that reads like a pretentious scientific journal. Uncle Bob has literally been saying that we should write code that anyone can understand easily. Hardly a radical elitist concept.
Should we listen to UBM just because he is UBM?
The question here in general is:
Should we listen to people that know nothing about our situation?
The question is not: Why we are not using Closure?
The question should be: When is Closure a good tool for use to use?
And the answer to that is not because its 2021.
A better question always will be: What is the right tool for solving this problem, building something or reparing something that is broken.
Yes you should look into other languages. Yes you should not use one tool for all problems. Also you should not use a new tool every time a new problem comes.
You need to balance this out.
In the beginning you will not know if this is the right tool but you should try and you should be ready to destroy what you build. So that you have learned from it to build something better.
But does it mean the material otherwise doesn't matter? Obviously not, it still matters a lot.
Then again, asking others to use a language generally without context, that's annoying.
<1% of software is life and death (or even mission critical like a space probe). Most of the time people are writing gadgets. Some of the time people are writing complex business critical code. But almost never will someone be writing code where the decision between Rust or C++ would cost a company millions, let alone put someone's life at risk.
Don't get me wrong, I agree it's important to pick the right language for the job. But the amount of astroturfing that happens with regards to language preferences is simply ridiculous. It's like the emacs vs vi arguments of old that people used to mock UNIX grey beards over.
In case of programming the material is rather people who designed and wrote the software. Good programmers will do decent job disregarding of the language used (assuming language is suitable for domain) and shitty ones will produce clusterfuck regardless.
Nobody cares as long as your choice of language doesn't make the program into its own special thing that needs to be handled differently than all other programs. When it does, I will not only care about your choice of language, but also about your choice of toolkit (e.g. Gtk3 being out of place outside of Linux/Gnome).
On the server it's less of an issue, because it's mostly the developer that needs to deal with the consequences of their choices, not the end user.
I guess I just don't understand the strong reaction to this. You wanna be a programming language elitist? I don't give a shit, go right ahead and be an elitist.
He makes it appear as though the entire software development industry, and especially how developers carry themselves within it, is not to his liking. I think he is calling for more humility, but I'm not sure, because this appears to be more of an attack on a vaguely-defined group of people rather than a call to action or a proposal for how software developers could present themselves more to his liking.
Leo McGivena, 1947
I will disagree with the title in that it is important to consider your means of production, and a language is not just a language, it is the opportunity cost of that language versus another in terms of efficient and accurate delivery of what the people want, support provided by others, the expertise in the market, 3rd party tooling and integration, and so on.
So you should give a shit what language you use, to give the people what they want the best way possible.
For some, astroturfing about their favourite language is almost a religious experience. But the fact remains that even some of the "ugly" languages have valuable tools written in them and we're never going to rewrite the entire Linux / Windows / macOS / whatever stack in everyone's favourite language. And nor should we. It's a fools errand.
That nobody can make changes to, or upgrade to take advantage of newer technology, or optimize for execution time or memory usage.
No. Not even close. Nothing is stopping anybody from contributing. More often people chose not to contribute because they don't want to contribute and then they use language as a retrospective excuse. But the fact that the tool exists in the first place dispels the myth that it couldn't exist due to some limitation of the language.
As an open source contributor myself I've written code in a variety of languages, including some I don't personally like, and I do so happily when I know there's a bug that needed fixing or a feature I wanted included in a tool I like to use. That's how I know that people who care about a project will still contribute regardless of the language.
Furthermore, arguing that language x doesn't "take advantage of newer technology" is ridiculous when it's bloody obvious to any developer worth their salt just how regularly popular languages are updated, runtimes optimised, etc. And arguing about tools not being optimised for execution time or memory usage misses the point that most tools aren't mission critical software running on embedded devices and most open source developers don't have hours of free time to hand roll assembly just to show off super cool benchmarks. In fact most tools can barely muster more than a couple of regular contributors, many of who work day jobs and have families to care to at the weekend. So instead of complaining that language x isn't optimised for performance, instead be fucking grateful that someone took time to write the tool and open source it in the first place.
As an open source author myself I see time and time again just how entitled some users are and it's often ridiculous comments like the ones you've posted. Don't get me wrong, I don't mind if you don't want to contribute. But please don't insult my intelligence by saying my language choice is the inhibiting factor to the projects success when it's clearly already enough of a success for you to have stumbled upon it in the first place.
The problem is finding the right nail. Everyone touting a language talks about how it will fix all the problems, rather than specifying what nail it’s best at working on.
That’s the problem right there.
What I got was a story about first idolizing a stranger only to be disappointed by them, to the point where the worship turns to disgust. Why do I care? He's just a guy who shares his thoughts publicly. He doesn't need to be better than anyone else.
Don't worship people and you won't be disappointed when they don't fit perfectly into your ideals.
The sushi craftsperson and the wood worker are creating something that does not have to be read and understood by some poor schlep a year or even two weeks from now. Software is in maintenance mode almost immediately. It is not functional art nor should one ascribe it to be.
I despise the word craftsman in relation to software for a few reasons. First off, the word invokes visions of a crusty old dude carving wood. Secondly, it's "craftsperson" which doesn't have a good ring to it and does not express the notion properly. Perhaps it does sound elitelist, gender aside.
The author should have thought a bit more before firing off this rant but I kind of agree.
I'm tired of people autistically obsessing over languages too. It would be nice if we could always select a domain specific language that naturally begets readability but we cannot.
Why did you write that in Java? Because the company made me.
I made the mistake of sharing just a bit more technical info than I usually share with some folks online once.
I was bombarded with "OMG why did you build it like X" and so on. It was all unrelated to the mistake / story I told.
Now I appreciated their responses as some had ideas how it 'should be' and I find that of value (albeit limited as they know so little about the context...) but I was sort of amused that so many would seem to assume that I was somehow in charge / could just rearchitect an application that a ton of other people work on... just because or something.
I wanted to know where all those folks work that they can just do that ;)
> Pick the language and stack based on your team’s needs and comfort, based on your business’s need and risk tolerance, and based on how easy it will be to produce software for your target users in that language or framework.
Developers clearly do care what language they use so this is a factor to take into consideration. Plain and simple - Java 1.0 might tick all of these boxes but you'll struggle to find many interested and passionate developers.
> I believe we can build better software, faster. I believe adopting Test Driven Development can change how we build software. I believe it allows us to build better software, faster. I believe it allows our software projects to reflect the needs our businesses and stakeholders have: To get the features stakeholders want, and demonstrate how the system works as quickly as possible.
This is from George's homepage which reads exactly like the 'BS' he's targeting. Which I think nullifys his argument - he's just gone on to give a shit about programming techniques instead.
I hire subcontractors from time to time and after skipping clearly incompetents "passionate about the language" come next.
But they sure do give a shit about whether it's gonna fall down when too many big rigs drive across it, or whether a wind at just the right speed is gonna turn it into Galloping Gertie, or any of the other things that professional engineering practice is designed to make sure has been checked for by multiple people along the way from "hey we should put a bridge here" to "here I am doing my boring daily commute and it crosses this bridge".
Does your programming language make it harder to fuck up? Is it one that other people can pick up when you've left the project and shit needs changing? Is it one that leaves everyone involved in writing this code more pleasant to deal with than [Shitty Language Goes Here] because they're spending a lot less of the day swearing at the code?
That shit, they give a shit about.
Today, I do write some code for work, but most of the code that I write, I write for entertainment—and for myself. Advent of Code makes December the best month of the year for me.
So, I agree with the sentiment of the article in general, but programming can also be valuable in itself.
But I don't understand why the author is so upset about people talking about programming languages. If we stop discussing the pros and cons of the tools that we use, we will continue to use today in perpetuity. We suck the oxygen out of the new tool space because anyone who tries to create something will be told "No one gives a shit".
An aside, we're all adults here OP. If you're going to swear, go ahead and say "shit". No need for this coy asterisk.
It's en vogue nowadays to diss uncle Bob (and other "boomers") and display a disproportionate amount of outrage, is all.
The self-labeling does exist though, they just use a different label: Artisan.
Anyway, I agree with the author's overall concept that the language isn't necessarily important and shouldn't be worn as a badge, but I think he goes off track a bit in the details.
Sometimes they overlap, but folks like UCB, DRY, SOLID, TTD, whatever the oft repeated mantra / person, miss the forest for the tree. Define your goals in terms of how you'll solve an actual problem:
"Implementing this new abstraction to follow DRY reduces the time it'll take for a new feature to be added since it encapsulates X, Y in a higher level interface and reduces boilerplate code". Great, go for it. I refactored half the project to remove 3 lines of easy to find but copy and pasted code? Not so great.
It is the difference between a junior and a more experience programmer. How does this >thing< you're excited about reduce code entropy, increase confidence in correctness, make it faster to iterate on the code in the future by other developers? That's mostly what I care about. The >thing< can be a language, library, framework, design pattern, etc. that you read about. Of course in specific cases you'll have performance, strict correctness, security, etc. that you're also solving for that's factored in.
I've seen a lot of programmers simply assume flexibility and scalability are de facto requirements. Are they? For some systems they are, for others they're not. Embedded systems don't typically concern themselves with scalability and oftentimes don't even worry about flexibility. Simplicity and testability are their major criterion. You need to know your actual non-functional requirements and not make assumptions. This oftentimes requires of years of experience, especially if working in a corporate setting.
Then there's the question of brownfield and greenfield deployment. Companies prefer to evolve software, they're generally not in favor of throwing everything out and starting over. Are you more interested in solving people's needs or using the most popular languages and frameworks du jour?
Greenfield development is risky. Programmers love getting a shot "to do things right." The problem is too many of those programmers are too inexperienced to understand how things became the way they are. They just assume everyone before them was a "bad" programmer and they, of course, are the "good" programmers. All these people are going to do is re-create today's problems, and possibly add in brand-new problems, using the latest languages and frameworks. All at an exorbitant cost.
Software is all about people, processes & tools and tools are rarely, if ever, the problem. Unless you understand people and processes I'm confident you can fail with any software stack you choose. Of course the converse is true too - if you understand the people, their needs and expectations, and the processes then you're way ahead of the game and are likely to succeed regardless of the software stack you choose or are forced to use. That's why I don't care about what programming language you use.
BTW - I like Clojure, I've used it a lot on little side projects. I've never once seen it used for commercial work. Too few people know it for most businesses to risk investing in it. Yes it's a chicken-and-egg problem but remember what I said earlier about people and processes?
- programming is described as a craft, a kind of skill
- actual crafts involve humility, rather than performative skill-showing
- real craft cares about the result/product, than good tooling and use of tools
- no one cares too much about the tools themselves
- hence no one should care about prog-lang which is just a tool
There are a few leaps in this logic I wonder if I missed something:
1) the basis of the argument is the description of software as a craft; but rather than discover what is meant by this, the author instead injects their own definition of "craft" - then instead of stating "programming is not a craft", they instead title the post something different based on an inference one or two steps removed from the original premise.
2) the tangent about "performative" distracts, I think, from what the beef is.
3) a prog-lang isn't a craft, really, nor is it like woodworking, or pottery, or factory lines, or house building, or being a ninja, or whatever other things devs like to describe themselves as. There may be aspects similar to those things, but in all those metaphors you have to pay attention to the point the metaphor is making rather than riff of the comparison on you own; ultimately devs compare programming to X to make some point, not because programming is actually like X in general
4) a prog-lang is a tool in an abstract sense; in a less abstract sense it is a language, hence the name. It makes as much sense to compare Java to the convention of calling a certain type of tool a "gouge", as it does to compare Java to the physical gouge itself.
5) woodworkers do bicker about tooling. and especially about finishes.
Put another way, something that works well now, is often better than something that is designed for work at scale, that will take 2-3 months to get there.
This is why I use languages that I do, and tend to try to avoid the fad du jour. My time is valuable, and I'll spend it on languages that have a reasonable chance of working well for the tasks at hand, without the core language changing every single digit N months.
Woodworkers are hot on the materials that go into their finished product and, for better or for worse, our language choice brings along a runtime and library that becomes the foundation of our digital artifacts.
Our toolchain matters and mastering more than one is non-trivial. Material world metaphors don’t map well to the digital world. I’m not a fan of Uncle Bob Martin and the tweet about Clojure in 2021 made me giggle but a mediocre proposal doesn’t take away from the importance of the underlying problem; our language ecosystem mastery defines the problem spaces we inhabit.
I had a similar phase where I was trying to convince people to switch to Linux, I still believe Linux is better for many tasks but I don't care anymore if my brother or some friends is running Windows, it is Red Hat ,Canonical and other's job to promote Linux for Desktops.
PS: you can substitute Bob with any other name
He doesn't, but he pretends to. That's why some people don't like him.
- How much do you currently understand and trust it?
- How curious are you about learning to use it better?
- How well can you converse with a teammate about how to use it?
Some problems are yet, better expressed with one language than another.
As a CTO I always use the same language for prototyping, but in production we don't.
To the former type, any modern language is roughly as good as any other, by definition, unless you've got an unusual use-case that requires something really specific. Thus any attempt at language advocacy sounds like tribalism or elitism. The people in this camp love to make analogies to woodworking tools, since innovation there stopped a while ago (presumably).
The latter type is perpetually depressed.
But this author’s writing does not sound like he’s currently on one of those teams of people who produce sloppy, unmaintainable code because they can’t be bothered to stop and think of the larger structure of what they’re trying to build.
Because when you’re in that sort of situation, bring on the craftsmanship talk, please!
In my experience programmers with exposure to multiple PLs/paradigms/platforms tend to perform better than programmers who worked only with one, unless they go very deep and know that single PL/platform really well, like inside out (this is more often the case with C/C++ programmers).
It's quite the compliment to one's self to know what is beautiful not only to yourself but also what will be for others.
JavaScript is clearly superior.
Okay, well that's just false. Wood workers tools are incredibly expensive and if you ask a wood worker about them they'll proudly show you what they are and glow about their quality and machining. I only know that because I've recently been looking into furniture making. Anyway, same sort of pride that programmers have around laptops, keyboards, languages, build systems, package managers, workflows, patterns cough tools of their trade.
The only difference, if you accept that a language is a tool, is that there is a massive barrier to entry for learning multiple languages at first, which usually requires that you implicitly or explicitly understand language fundamentals to make grasping concepts easier. I've worked with a lot of non-polyglot folks and this is usually the challenge. They'll very well understand one language but can only understand the world in it's paradigms. The world takes all types though.
> In fact, I’d wager that the niceness of the language is probably the least important part of choosing a language. Just ask everyone who bet the farm on coffeescript.
Ok, no. I've been on a few polyglot teams by now and I can tell you that I've experienced a theme of a main language and then several needs-based-implementations. That main language is usually a language that feels "nice" to code in by a majority of the programmers at the time. "Developer ergonomics" is definitely a thing I would classify as "niceness".
I've never understood the rage over people who make snarky comments about languages. So what? When I wrote in PHP in the early to mid 2000's people had all sorts of snarky things to say, it didn't deter me in learning new languages or applying myself more to PHP. The point that I think the author misses is that languages are different and so are various frameworks. They're all better at one thing or another, and just like programmers, fall in and out of relevancy all the time. Let people have their snark, it'll be invalid in a few years when we're refactoring the code base to run in WASM anyway.
If I was raising a kid I'd probably tell little Timmy not to pick on the PHP dev because they might grow up to be your boss, but I probably wouldn't write a Sunday rage post about it.
I love using Perl for simple automations I have; especially when those automations involve text manipulation.
I focus on C# and .NET professionally; although I've done production work in C, Python, TypeScript, JavaScript, and Perl.
But, the language and stack I pick for a given task is entirely dependent upon the reasons I list in the post. I'll happily dump C# or .NET if the situation calls for it.
Only ever seen a few minutes of one or two presentations... so no personal opinion.