frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Linkers: A 20 Part Series

https://www.airs.com/blog/archives/38
1•mattrighetti•56s ago•0 comments

2025 United States federal government shutdown

https://en.wikipedia.org/wiki/2025_United_States_federal_government_shutdown
1•wslh•2m ago•0 comments

KitteHub: Python projects in the cloud in a few clicks

https://github.com/autokitteh/kittehub
1•itayd•4m ago•0 comments

OneBusAway: Open-source transit app for real-time information

https://github.com/OneBusAway
1•thunderbong•5m ago•0 comments

Guideline Has Joined Gusto

https://help.guideline.com/en/articles/12694322-guideline-has-joined-gusto-faqs-about-our-recent-...
2•surprisetalk•7m ago•0 comments

Physical activity as a modifiable risk factor in preclinical Alzheimer's disease

https://www.nature.com/articles/s41591-025-03955-6
1•bookofjoe•8m ago•0 comments

No space, no time, no particles: a vision of quantum reality

https://www.newscientist.com/article/2500081-no-space-no-time-no-particles-a-radical-vision-of-qu...
2•fnord77•9m ago•0 comments

DJI's Drones, Both Branded and Disguised, Are Even Closer to a US Ban

https://petapixel.com/2025/11/03/djis-drones-both-branded-and-disguised-are-even-closer-to-a-us-ban/
3•bookofjoe•14m ago•2 comments

What's Next in Customer Identity and Access Management

https://www.kuppingercole.com/blog/tolbert/whats-next-in-customer-identity-and-access-management
1•mooreds•15m ago•0 comments

Norway's Public Buses Can Be Shut Down Remotely from China

https://www.carscoops.com/2025/11/norways-public-buses-can-be-shut-down-remotely-from-china/
2•josephcsible•17m ago•0 comments

Ask HN: What Is the State of Mobile Development in 2025?

1•sarimkx•18m ago•0 comments

PocketBook – DIY pocket-sized Project Gutenberg books

https://github.com/sieste/pocketbook
1•sieste•24m ago•0 comments

LLM Security Guide – 100 tools and real-world attacks from 370 experts

https://github.com/requie/LLMSecurityGuide
1•tarique192•24m ago•1 comments

Why Does the Universe Exist? (1991) [pdf]

https://philosophy.fas.harvard.edu/sites/g/files/omnuum4436/files/phildept/files/parfit_-_why_doe...
2•measurablefunc•25m ago•0 comments

Scaling up Prime Video monitoring service reduced costs 90% (archive) (2023)

https://web.archive.org/web/20240325042615/https://www.primevideotech.com/video-streaming/scaling...
1•Ellipsis753•25m ago•1 comments

Do I want Coders to Code?

https://yeikoff.xyz/blog/11-02-2025-do-i-want-coders-to-code/
1•iglesiastj•28m ago•0 comments

Trump Officials Torpedoed Nvidia's Push to Export AI Chips to China

https://www.wsj.com/world/china/trump-nvidia-china-chip-exports-51e00415
1•doener•31m ago•0 comments

HedgeDoc – self-hosted real-time collaborative Markdown notes

https://hedgedoc.org
3•indigodaddy•32m ago•0 comments

Show HN: LayoffKit – Free visa-aware planner for laid-off workers(AI+automation)

https://layoffkit.com
2•smalldezk•33m ago•0 comments

AI Is the Bubble to Burst Them All

https://www.wired.com/story/ai-bubble-will-burst/
1•type0•33m ago•0 comments

Awesome Cold Showers

https://github.com/hwayne/awesome-cold-showers
3•lr0•33m ago•1 comments

Unpacking the ROI of Intimidation

https://supremefounder.com/due-diligence-nightmare.html
1•fmfamaral•35m ago•0 comments

Is 67 just brain rot?

https://www.youtube.com/watch?v=laZpTO7IFtA
2•owenthejumper•38m ago•0 comments

A Fight over Credit Scores Turns into All-Out War

https://www.msn.com/en-us/money/personalfinance/a-fight-over-credit-scores-turns-into-all-out-war...
2•jnord•39m ago•0 comments

Glass Knife

https://en.wikipedia.org/wiki/Glass_knife
3•debo_•39m ago•0 comments

Write once, deploy everywhere Python apps

https://beeware.org/
1•NeutralForest•42m ago•0 comments

The Curious Case of the Disappearing Captcha

https://www.wired.com/story/bizarre-disappearing-captcha/
2•jnord•43m ago•1 comments

Would Zohran Mamdani's Rent Freeze Keep Rent-Stabilized Apartments Empty?

https://www.newyorker.com/news/the-lede/would-zohran-mamdanis-rent-freeze-keep-rent-stabilized-ap...
3•PaulHoule•43m ago•2 comments

Obsidian Entertainment's AI support forwards emails to Obsidian support

https://twitter.com/kepano/status/1985467083170464149
2•kepano•43m ago•0 comments

The Problem with This Humanoid Robot

https://www.youtube.com/watch?v=j31dmodZ-5c
1•belter•45m ago•1 comments
Open in hackernews

Why engineers can't be rational about programming languages

https://spf13.com/p/the-hidden-conversation/
64•spf13•5h ago

Comments

bobx17•5h ago
We see the "we need to rewrite in X" conversation play out all the time here on HN. Love this take on it.
didibus•4h ago
> A programming language is the single most expensive choice a company makes, yet we treat it like a technical debate

I'd have to disagree, it really isn't, and I even think that's kind of the point the article makes.

Rewritting existing services from scratch in another language can often be a bad decision, because it assumes the choice of programming language is an important one. And any rewrite is costly, doesn't matter the reason why.

But starting a new project in a new language I don't think has much impact generally. And if it motivates the team, because they're excited about it, it can even help.

Deciding later to rewrite this once it's been built because it's not in the same language as what is common at the company, that's likely the mistake that will happen.

IAmBroom•3h ago
By corollary with Warren Buffett's belief that the most important financial decision you will ever make is to choose your marital partner... The most expensive choice a company makes is who will lead.

NOT because a good leader will save $$$$$$; because a bad leader can single-handedly sink a ship.

ranger_danger•4h 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•2h 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•2h 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.)

Freedom2•4h 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.
Jtsummers•3h 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.

IAmBroom•3h ago
Reason #9 will shock you!
esafak•3h ago
I did not. I read the comments and still found little reason to check the article.
wvenable•3h 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•3h ago
Why would management care about tools?
hunterpayne•2h 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.
hunterpayne•2h 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...

kerblang•32m 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.

Balinares•2h 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.

btilly•4h ago
I absolutely love this take. Then again it matches what I've been saying for decades, so I would.

Generalizing briefly, the same phenomena of identity underlies a lot of our religious wars. Be it language, braces, indentation, or a variety of other programming choices. What's fundamentally going on is that programming expertise is fragile. (I think I first saw that idea in Code Complete?) A new language / style / technology / whatever very often will leave us less competent. Ideally we would respond with, "I guess I need to get back on that learning curve." But often it is easy to instead blame the external factor. "I'm a good programmer. I tried it. The result didn't work well. It must be bad."

Among the many attempts to try to fix the problem, I can recommend https://blog.codinghorror.com/the-ten-commandments-of-egoles.... To the extent that you manage to apply its advice, you really will do better.

Of course your improvement won't directly help those around you...

tailrecursion•2h ago
> A new language / style / technology / whatever very often will leave us less competent.

This may be a big factor in rejecting unfamiliar languages. Over time the brain trains itself to grok a specific syntax, and understanding becomes partly automatic: we look at a Java program and our brain injects meaning into our consciousness. If we then look at APL or Lisp, however, that training on Java doesn't apply and the automatic injection doesn't function. We're left having to read the symbols directly, and it's unsettling not having the auto-assist. It makes us feel we "can't" understand the language, when it would likely take a couple weeks of immersion to change that impression.

LorenPechtel•4h ago
It's very rare for a rewrite to make sense unless the underlying stuff has so fundamentally changed you don't really have a choice. (For example, DOS to Windows. You have to scrap your UI completely.)
dmoy•4h ago
Indeed, and the perhaps canonical article on "don't rewrite" from 2000: https://www.joelonsoftware.com/2000/04/06/things-you-should-...
tracker1•3h ago
VB.Net winforms app from 2005?
wvenable•3h ago
I'm working on such a re-write / learning process right now because underlying stuff has fundamentally changed and it was (slightly) long past time to make the move. Of course, we're still going things incrementally and slowly and making effort to keep older tech running.

For some tech choices there was just one clear path from where we are to where we need to go. But for others, the overriding decision was more often than not that some team member had familiarity with the technology. Certainly not the only criteria but enough to tip the scales if it came to that.

Balinares•2h ago
I once was involved in a complete rewrite in a new language that ended up saving the company -- so those do happen, empirically.

That was an unusual scenario, however; the previous iteration of the product had major issues, buggy and costly to maintain, and the language change was in part for the purpose of repointing the hiring pipeline toward a different kind of profile. Such special circumstances aside, I'm with you on recommending against rewrites. Much as I'm often tempted.

tracker1•3h ago
More often than not, preference should be given to the language most of the team know the best. The only exception is when everyone on the team feels a different language is a better fit for the need or there are underlying reasons for a language shift.

Personally, my bias is towards the languages I'm most comfortable with. I recognize this and will make other suggestions and if I'm not responsible for the code, I'm more than flexible.

All the fad chasing and top down declarations that we're all going to use Cucumber, GraphQL, Microservices or anything else is often a bad move.

First learn the problem you are trying to solve and empathize on behalf of the user... Then empathize on behalf of support... on behalf of the maintenance developers... on behalf of yourself in a decade. Is there a boxed solution? Buy it.. Is something custom really needed, what can you outsource as part of it? integrate it. Do the simplest, easiest thing you can to get the job done.

hunterpayne•2h ago
> More often than not, preference should be given to the language most of the team know the best.

I'm sorry but I disagree. Languages are tools, pick the best tool for the job. The idea that languages are all good at everything is not true. And when I see takes like this, I tend to think that that person just doesn't understand how to assess a language's strengths and weaknesses.

Want to write ML, probably best to use a language with functions as first class types (ie a FP language). You might say, most people doing ML use Python. This came to be because the language was picked based upon what people knew. But the big companies doing ML (successfully) don't use Python anymore and haven't for over a decade. ML researchers kept FP alive for several decades when nobody else cared because FP is the best tool for ML (or for writing a compiler). Where the FP folks get into trouble is trying to push FP where it doesn't make sense. I see this pattern repeating over and over again. Languages are pitched as silver bullets when they are just screwdrivers and hammers.

Right tool for the job, ignoring this leads to "religious wars" because that's how we describe disputes which are matters of taste.

Also, you are massively overvaluing expertise in a given language. A more talented engineer who doesn't know your favorite language after a couple of months will be better than you in your favorite language too despite your greater experience with that language.

fabian2k•2h ago
I think for many cases it is fair to make the assumption that you're staying roughly within the same kind of application. So if your team previously did web applications you won't suddenly do embedded stuff or high-frequency trading. And within such an area, there aren't enough differences between languages to overcome the drawback of learning a new one.
tracker1•2h ago
I think you missed something...

> ... or there are underlying reasons for a language shift.

As to "best language" that is just as dogmatic as anything else... just look at the C/C++ vs. Rust divide in the Linux community.

I think you are overestimating the value of a best fit language for any given task, especially those where there are a half dozen popular languages that more people know well that can do the job good enough. Don't build for a sky scraper when all you need is a birdhouse.

Also, MOST engineers aren't particularly talented. If you're fortunate enough to be working for an organization where everyone is a rockstar, that's great... for those doing bog standard CRUD apps for business, you don't get rockstar money, and you aren't finding rockstar talent. You get what you get and make the pest of it.

In nearly three decades, I've once, only once worked a project where I didn't have to explain a relatively simple concept to someone, where everyone on the project delivers their pieces in time and all were talented. It was wonderful. Then new management gets stacked on top, all the job roles are reclassified to mid level developers and everyone rolls out of that group.

A lot of the actual experience is literally explaining public/private key usage to other developers who manage to (re)use the same keys from dev to all the production deployments. Or a pissing match with the "security expert" who doesn't understand that your app's use case is different than the in the box security script that is failing, because your /login route is a different app from / and the bogus query params don't matter.

thomasmg•2h ago
> the language most of the team know the best

I fully agree. The challenge is, some will want to use the latest languages and technologies because they want to learn it (personal development, meaning: the next job). Sometimes the "new thing" can be limited to (non-critical) testing and utilities. But having many languages and technologies just increases the friction, complicates things, and prevents refactoring. Even mixing just scripts with regular languages is a problem; calling one language from another is similar. The same with unnecessary remote APIs. Less technologies is often better, even if the technologies are not the best (eg. using PostgreSQL for features like fulltext search, event processing, etc.)

This is a bit related to external dependencies vs build yourself (AKA reinvent the wheel). Quite often the external library, long term, causes more issues than building it yourself (assuming you _can_ build a competent implementation).

kazinator•3h ago
People identify with tools!

One day, many millennia ago, Caveman Ug carved himself a really nice club, and it became his favorite. He carried it everywhere and used it for everything.

egorelik•3h ago
The only conclusion I can draw from this is that some engineers are not great at arguing the merits and challenges of a programming language. GC vs non-GC should be one of the first and most straightforward decisions made when picking a language. It's hard to tell in this situation given that there are no concrete examples of what the arguments were, but if one is seriously considering Go for a domain, then they don't actually need the complexity a non-GC language brings.

If anything, maybe this says there is room for a Rust-like GC'd language.

kstrauser•3h ago
But... which side is being more rational?

I was hired at a shop who had a large, complex Visual FoxPro application they'd developed in house. They brought me in to write a web interface for it, which I did in Python because there was, thankfully, no Visual FoxPro for Web Apps.

I contented that they needed to start a rewrite in something else ASAP. VFP wasn't going to get more supported as time went on. On the other hand, it was a large, working app, and the pushback was "yeah, someday, but for now we're using it to drive the company".

The discussions were always calm, measured, and conducted by adults. We didn't shout or scream at each other, or anything like that. Both sides had reasonable and compelling arguments to support their viewpoint. But from my POV, staying with the VFP app, with the looming deprecation warnings on the calendar, was insanity. Their point was that rewriting the entire, working app from scratch was also insanity.

It's not like a team wanted to rewrite it in PHP, which we can all at least agree would be madness.

wiseowise•3h ago
> A programming language is the single most expensive choice a company makes

By far no. Now I don't know if I even should read beyond that.

cozzyd•3h ago
It CAN be.

If a company chose brainfuck as a main programming language, it's doubtful they'd come back from that choice.

twic•2h ago
I think the assertion might even have been true for non-pathological cases 20 to 40 years ago. A company that chose Visual Basic or Perl would have had a much harder road than one which chose C# or Python. But i think the languages which have survived to the present day are all pretty close in productivity. Except C.
laxd•2h ago
I've worked for a company with a large code base in Visual Basic .net. Product been in development since the 90's, with rich customer that only cares about their software doing its job. It's a surprisingly productive language combined with Visual Studio. Even though, as a language enthusiast, I barfed a bit now and then. Dev team would like to switch to C# but it would have been a multi-year effort taking away from lucrative feature requests.
Arcuru•23m ago
This person appears to have been "Languages Product Lead at Google", so they are very used to arguing about how important language choice is.
IshKebab•19m ago
Maybe not the most expensive but it is certainly potentially one of the most costly. Look at Facebook with PHP and Dropbox with Python. It's the sort of thing you can overcome despite the odds (as both those companies did), but can also tip an on-the-edge company into failure.

Same thing with the fundamental architecture of programs, and especially the data model & database solution.

Still I don't entirely agree with the article. He makes it sound like there isn't any difference between programming languages and any preference is purely about developer identity. But that identity doesn't come from nowhere. Rust is popular because a load of C++ developers finally found something technically better. Not because they all woke up one morning and decided to be "a Rust developer".

Where the story falls apart is that Perl is arguably even worse than PHP. One deluded Perl programmer does not prove a principle.

On Rust vs Go, he's absolutely right that Go is has a slightly better "build & deploy" story (though not by a much). But reading between the lines I think he's misrepresenting that - it sounds like a) that was just one point for choosing Rust, and b) that was a point when comparing to typical alternatives, e.g. C++ or Java. It's not untrue that Rust is easy to build & deploy simply because Go is slightly easier.

Jtsummers•3h ago
> 1. The power to transcend paradigms.

- Donella Meadows, Leverage Points: Places to Intervene in a System https://donellameadows.org/archives/leverage-points-places-t...

If you're a Python Programmer, and you've made that your identity, you've trapped yourself into the mindset that you are a Python Programmer. Same with any other identity you ascribe to yourself (or allow others to ascribe to you). Separating yourself from your tools allows you to evaluate the tools independently of your identity and you will find yourself unaffected (or at least less affected) by reaching a conclusion that the thing you know well may not be appropriate to the job. You may not be appropriate for the job, and that's fine too. Getting past paradigms (or identities with how I'm extending it) gives you much greater freedom to explore and participate in the world.

jack_tripper•3h ago
>Getting past paradigms gives you much greater freedom to explore and participate in the world.

It's not me who has problems getting past paradigms, or anyone else I know for that matter, it's the recruiters and HR people who screen resumes by only ticking boxes on buzzword.

humanfromearth9•3h ago
They are the cancer of our profession.
ludicity•3h ago
Someone told me to read Meadows over a year ago, and I can no longer remember who, and to make it worse it slipped off my radar. I'm filled with regret now because they appear to be a concise and insightful thinker, or at least an effective proliferative of good ideas.
Jtsummers•3h ago
No reason to regret, still time to read her works. That essay is also a chapter in her book Thinking in Systems: A Primer (publish posthumously), and more essays are on that site.
bri3d•3h ago
I think the author almost contradicts themselves; they reach the salient-but-obvious conclusion that rewriting a product is almost always a bad idea and that rewriting a product only to change programming language is _always_ a bad idea, that tribalism is a poor decisionmaking framework, and that leadership by arbitrary decree is stupid. Great! These are age-old lessons that people somehow seem to forget, so seeing them reiterated is fine.

Then they turn around and claim that choosing a programming language is the most important thing you can do, and that you'll need to Like and Subscribe to learn more about it...

I've been through tens of rewrite projects, successful and unsuccessful, and seen projects and products at almost every scale, and I cannot agree that programming language choice is a primary driver in a product's success or failure. Even extending this thesis from language to framework and ecosystem, where there's perhaps a _tiny_ bit of signal, still doesn't really lead to a meaningful conversation. The main driver of a project's success is almost always driven by: the composition of employees working on the project, and the competence of the people architecting the project. Don't get me wrong - to an extent, some languages (especially more niche ones) drive hiring and what kind of employee you get, but this effect is dwarfed by who works on the project and how well it's managed.

ludicity•3h ago
This is a good take. In the consulting context, I've quickly realized that most problems at a business can be broken down into "this will destroy the project on its own" and "this is an annoyance to a good engineer". Language choice is basically always in the latter category, whereas poor management or one egotist is frequently in the former.

Like, my team doesn't know anything about Java, but we COULD ship in Java if forced to. We can't ship if the feedback loop is a 30-minute CI pipeline because there is no way to have a local dev environment.

Ocerge•24m ago
My team ships with a multi-hour CI pipeline that works 50% of the time and effectively zero local development. It's awful in almost every way developer experience-wise, but rock bottom is deeper than you think!
bluGill•13m ago
I remember being there and the large amount of work many people did to make things better. Dig in for a few years and you can too.
tyleo•3h ago
> The main driver of a project's success is almost always driven by: the composition of employees working on the project, and the competence of the people architecting the project.

This is my experience too. I’d go a bit further and say the leads are the primary driver of success. Because ultimately, if the composition of the people on a project is incorrect, it’s the lead’s responsibility to realize and change it.

seneca•2h ago
This is really the heart of it:

> Don't get me wrong - to an extent, some languages (especially more niche ones) drive hiring and what kind of employee you get

In my experience, the community around a given language is going to significantly influence the sort of typical applicant you get for a job working in that language. Those profile vary a surprising amount, especially for, as you say, niche languages, but also for "beginner" languages.

I have seen businesses significantly harmed because they hired what I would term language specific technicians instead of engineers. That's a failure of leader, certainly, but that failure is a lot more likely for certain languages.

bri3d•2h ago
> they hired what I would term language specific technicians instead of engineers.

I have seen this too, and I really like the way you phrased it - I think I'll use that in the future!

I do think it's an easier trap to fall into with some languages, but I still don't think the language really drives it.

I worked on a large-scale Rust project that could probably have been a Go project a while ago and while Language Technicians were a big hiring hazard, after we got one or two we both learned how to manage them and stopped hiring that type of employee (since they weren't what our project needed) and things evened out and were successful in Rust.

seneca•2h ago
> I do think it's an easier trap to fall into with some languages, but I still don't think the language really drives it.

Yeah, in the end poor hiring practices drive it. The language you choose just makes the probability of that failure possibility higher or lower.

> I worked on a large-scale Rust project that could probably have been a Go project a while ago and while Language Technicians were a big hiring hazard, after we got one or two we both learned how to manage them and stopped hiring that type of employee (since they weren't what our project needed) and things evened out and were successful in Rust.

That tracks with my experience, for sure. Once you learn to spot it, you can mitigate it.

jerf•2h ago
"I cannot agree that programming language choice is a primary driver in a product's success or failure"

I've seen it. There are definitely incorrect language choices for certain projects.

It would be fair to say that these cases are themselves often exceptions. Many projects can be equally well accomplished by teams skilled in any language. But there is definitely a set of problems for which you can make incorrect language decisions.

I'm going to exaggerate to make the point in an attempt to avoid too much argument about whether or the language would be suitable, but: You do not sit down to write an industry-leading, high-performance database whose top-level implementation language is Python. If your project spec involves running code provided at runtime by users, Go is a fairly poor choice. You can make things a lot harder for yourself trying to be too insistent about what language you'll do your mobile development in, rather than just accepting that there's a very dominant choice in those spaces.

I've also seen projects I couldn't prove to you beyond a shadow of a doubt failed due to language selection, but I am fairly certain the project I saw that chose Scala failed primarily for the choice of Scala where it was a bad fit, both technically and for the skillsets of the engineers involved.

I've also seen projects nearly fail because they chose databases incorrectly, which I would submit is a fairly similar thing. Mostly because of choosing a NoSQL database "because fast" when they should have used a relational DB. The projects in question didn't fail because they were able to switch in time, but it was a close thing.

Part of "the composition of the employees of a project" being responsible for its success is that good engineers pick at least a decent solution to a problem from day one. The aforementioned DB problem, for instance, should have been obvious from the very beginning that it was not the correct choice in their case. There are absolutely wrong choices, that can crash projects both quickly and slowly.

tyleo•2h ago
While I’ve seen bad technology chosen for projects, it seemed at root more a problem with the people choosing it than the technology itself.
jerf•1h ago
Absolutely agree. People made the bad decisions. But the bad choices existed. People who don't understand the bad choices are bad choices, or worse, think that there is no possible way there is a bad choice, are far more likely to end up being those people who made bad decisions then people who understand that the decisions mattered.

Don't go running around telling people that they can dig the Panama Canal with three toothpicks and a spare weekend, and if they fail, well by golly they just didn't have enough grit and gumption like us awesome folks who could have done it with only two. Tool choice matters. In fact I can hardly process how anyone can be an engineer and think that it doesn't, let alone how they can think it's some sort of engineering wisdom to claim that it doesn't matter what tools you use to do a project.

Of course, picking the tool is only the moment the project may fail. It is not the moment the project succeeds; there's still a lot of using it correctly that will be necessary and plenty of further opportunities to fail even with the correct tool. But at least success is within the range of possibilities. You can forstall that possibility entirely on day one with incorrect tool choices.

bri3d•59m ago
> Tool choice matters. In fact I can hardly process how anyone can be an engineer and think that it doesn't, let alone how they can think it's some sort of engineering wisdom to claim that it doesn't matter what tools you use to do a project

Just to be clear, I wasn't trying to claim this; tooling certainly matters, at the very least, for the happiness and welfare of an engineering team! But, the article tries to claim things like "choosing a programming language is the single most expensive economic decision your company will make" and outside of a few extreme edge cases, I just can't agree with that particular thesis. Even the examples of bad decision-making you pose in your sibling comments, like writing a database in Go or "almost failing" by using sketchy niche datastores, are actually examples of this exact thing: these projects made huge engineering mistakes only to achieve some level of success as a business. Would they have been more successful if they made better engineering decisions? Possibly, but again, language and framework just was not the most important decision or factor driving an outcome.

I'm not saying that means we shouldn't care about making good engineering choices; there are easy ways to do things and hard ways to do things, and certainly I'm going to advocate for and work with people and at companies that favor the easy ways to do things. But when it comes to overall outcomes, I'll stand by having seen far more projects sacrificed to analysis paralysis, rewrites, rewrite-related hand wringing, and language/tooling hubris than sabotaged by poor language and framework choices.

bdangubic•2h ago
great team can write amazon clone in fortran. bad team cannot write todo list clone in… well anything :)

it is (almost) always people and (almost) never language/framework/…

jerf•1h ago
The great team would not have written the Amazon clone in Fortran. There is no engineering justification for such a choice, and "we are swaggeringly awesome engineers who can conquer anything" is not even remotely an engineering justification.
bluGill•9m ago
If you are starting from scratch fortran is a bad choice. However if you have a fortran project that keeps getting more features you may become an amazon clone along the way
pyrale•2h ago
> I've seen it. There are definitely incorrect language choices for certain projects.

I guess we can all agree that writing your web application using a fortran framework to generate JS code is a bad idea.

But if you pick tfa's second example, picking Go vs. Rust for a new project, the language choice is secondary. Both languages were likely fine unless the project as a specific library requirement.

The main criteria to make the choice was likely whether the team had developers with some experience in that language, and whether using that language would make them feel dead inside in the morning when they check in ; and I'm pretty sure developers can be found that make either choice a great choice.

The point tfa's making, that picking a language defines culture, the hiring pipeline etc. is fitting neither the first example (team already there, and a rewrite is almost always a bad choice) nor the second example (team also already there, and the culture with them. Pipeline therefore irrelevant).

jerf•1h ago
In my first post, the example I really wanted to use was people picking Go for their top-end, competitive-with-anything-in-the-market database. I choose Python just because anyone who would argue that is a good choice is clearly not someone who is in a position to see reason. But I think Go is a serious mistake... it's just one that lets you get to market, unlike Python which never would. But it's still going to end up holding back the company that makes that decision in the end.
Animats•47m ago
> the example I really wanted to use was people picking Go for their top-end, competitive-with-anything-in-the-market database.

You mean they're writing their own database? Why? That's a huge job and available databases are pretty good. There are multiple open-source choices, all of which work.

If they think they're going to compete with Oracle, they need to read the history of Oracle.

jaggederest•41m ago
There are at least a dozen new databases in the market making decent money that were started this decade.

They're just not competing with Oracle.

bluGill•11m ago
A large part of success is picking a goal that is obtainable.
hshdhdhehd•2h ago
Language choices does make a decent difference to time spent, bugs, extensibility. Id guess a 20-100% tax for choosing the wrong language. However most of the time the best language is the one the team knows well. Caveat to that is if the threading model or performance doesnt suit. Or company platform engineering reasons (e.g. availability of platform libraries).
fabian2k•2h ago
It's not an issue as long as you use a mainstream language, but using a language or framework that will be perceived as a dead end can hurt your chances to hire and retain people. If you're a large or prestigious enough employer you can probably compensate that as long as you're willing to train people.

Programming language alone should almost never be a big enough issue to force a rewrite, but if you already have serious other issues that force huge changes you might as well look at it at the same time.

OkayPhysicist•2h ago
In my experience, a language switch rewrite can be a benefit only when switching from a dead ecosystem to a living one.

For example, migrating a web app from a language that predates Unicode to something that won't require a bunch of scaffolding around every user input sometimes is worth it. Moving from LABVIEW to a real programming language that integrated with remotely modern development tooling was worth it. Switching from C++ to Rust? Probably not.

tcfhgj•17m ago
> Switching from C++ to Rust? Probably not.

Counter example:

https://fishshell.com/blog/rustport/

bri3d•15m ago
FWIW, this was an intelligent rewrite, piece by piece. This is the only way I have ever seen "rewrite it in X" ever work. Fish also isn't a commercial product, so the calculus is a little different.
mamcx•59m ago
> I cannot agree that programming language choice is a primary driver in a product's success or failure....

This and similar are common ideas for the people that never see the real whole world of programming, and maybe have the fortune of be in the "startup" circles.

I see the opposite, and is very good predictor to know how bad a product or a team is, using the programming language AND the main DB engine, but that is because I live in the world of "enterprise" code where for example:

* I'm called to do a rewrite

* I see the screenshot of the main app

* I guess correctly was made with vb (first big alarm) (how I know: I never see in my circle anybody that do vb, php, c, c++ anything resembling a sane UI. BTW just the use of colors was enough to guess)

* I worry, but confirm, that use Access as the main db

* I discover that part of the data was ALSO in a excel file, that is used with the equivalent of "joins", and was not surprised to see things like this

Even without knowing more about the people that do it, that is far enough signals to guess much.

BTW, there are very good predictors, if Use: MySql, MonGo, Php, Js (almost whatever you wanna add here in terms of frameworks), VB, Perl, Android (aka: Java android and android itself without using iOS alongside), is likely terrible. Then Java or C# taking turns how much worse, but not as bad as the ones before. I sweat if somebody say it use C or C++. Probably enough to straight refuse to take the project.

Any use of not-obscure tech in this sector and is a good predictor to be more or less not-that-bad.

BTW: Also complex infra and related boilerplate is now probably a stronger predictor after some langs like python, go, typescript and more modern java/kotlin/c# has spread (and also more pg and much less nosql, but too much "cloud")

jjmarr•2h 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.

pron•2h ago
A reasonable rate at which to consider a new primary programming language for non-niche, non-throwaway production software is once every 15 years. Adventurous, risk-seeking teams can try for 10, but that's pushing it.

If you find yourself searching for a replacement language more frequently, you should stop, take a long look in the mirror and ask yourself:

1. Something has clearly gone wrong last time, since you're looking for a replacement so soon; are you confident of your language-picking ability?

2. Are you sure your goal is to do what's best for the software and its long-term maintenance, or is there some other consideration here?

lordnacho•2h ago
Huge problem with the conclusion, and it is something mentioned in the article. It is suggested to view the language choice as an economic decision. But guess what, that is already what the decision makers think they are doing.

There's another almost-got-it in the article. He is suggesting people tie their identity to their programming language of choice. This seems odd to me, because we tend to think of identity as think like religion or ethnic group, not sub-professional groupings like neurosurgeon or devops, and certainly not specific to tooling ("I'm a DeWalt carpenter!")

The missing connection is back to economics. If I've spent a bunch of time coding .NET, it's going to cost me something to code Java or python. This is the actual economic conversation being had. People will have to learn a new toolset, while having deadlines over their heads.

The solution is actually this: You hire people who are language-agnostic.

I used to spend a LOT of time in VBA, and then .NET. I was daunted by making the jump to C, then c++ and python. Only over time did I overcome the nerves and move on with Java, Kotlin, Elixir, js, and Rust. It was an eye-opening experience that you could do this. Just make the leap, and you find it wasn't that far.

If you don't have people who have done this a few times, you will get resistance, and the real resistance is they don't think it's worth it to put in the hours to learn the new tools. They come up with all sorts of justifications for why things are fine with the old tools.

You'll also become a language lumper if you do this. I don't really think there's a lot of language features. The main ones are GC vs manual memory, strong vs weak type, imperative vs declarative. Once I had a few points on these axes, a lot of things eased when it came to new languages.

tailrecursion•2h ago
> I was daunted by making the jump to C, then c++ and python. Only over time did I overcome the nerves and move on with Java, [...]

It sounds as if you did skip C++ and moved to Java instead. If so you serendipedously avoided the one language that's likely to cause problems. C++ doesn't work like the rest of the languages on your list, and it really is as full of land mines as people say - even though, with a good process, evidently it can be managed.

lordnacho•1h ago
Nah, I spent a short time with Java and a lot of time with c++.
fragmede•2h ago
> certainly not specific to tooling ("I'm a DeWalt carpenter!")

I'm not sure that's a correct analysis of their situation. Yes, if you hand a perfectly spherical DeWalt screwgun to a Nikita carpenter, they'll know how to use it, but in practice, everyone I know in the trades has picked a team and just committed to it (to the tune of many thousands of dollars in tools). Fortunately for them, the tools are basically the same, just a stupid bit of plastic (and there are 3d printable or buyable adapters) so it's easy enough to switch teams if they had to, it's just a pile of money, unlike sw tools and materials where I mean, yeah, eventually I got the hang of Ruby, as I did C++ and C and Python and Perl and now typescript and JavaScript oh god and also Swift. (Managed to avoid Obj-C tho!)

levodelellis•2h ago
Isn't this what Joel wrote 25 years ago? Don't rewrite your software?

I wrote a compiler/language, and I was expecting something different from the article after my experiences

Like many of the other commenters, I didn't like the article

tailrecursion•2h ago
Let the team choose the language they're most familiar with or most happy with. Then if they choose the wrong one, get a different team.
romaniv•2h ago
> Instead of asking “which language is best?” we need to ask “what is this language going to cost us?”

As long as engineering salaries depend on tribal identity markers (i.e. language and tooling preferences) rather than ability to save money, people will entirely rationally choose tools that look good on their resume rather than save their companies money.

tailrecursion•2h ago
The story at the beginning proves that choosing your VP is significantly more important than choosing a PL.
Animats•2h ago
I dunno. I take the position that language designers have blind spots around the weaknesses of their languages.

Python: Python is almost a hard-compiled language. Most of the dynamic stuff that's really hard to compile isn't all that useful. But Guido and his enablers love the dynamism, and the CPython implementation. So instead of PyPy taking over, we have CPython with hacks to call C.

Go: The "share by communicating" thing in Go works out about as well as it does in other languages, that is, it's useful but not central. Early on, there were tortured examples of implementing locks with queues. Nobody does that any more. People pretty much write Go like they do other languages, with shared state and locks. Queues are used when queues do something useful. The real strength of Go is that the libraries needed for webcrap are maintained and used by Google, so they're all well-tested and exercised. Also, goroutines/green threads eliminate the sync/async distinction. Garbage collection takes care of most ownership problems. Simple. (I recently wrote a web back end in Rust. Big mistake. Should have used Go.)

Rust: The "traits" system is an overreaction to Objects Are Bad. Rust probably would have been better off with single inheritance, which is well understood. (Multiple inheritance has too many dark corners.) People keep trying to do OOP with traits, which is like pounding a screw. Rust still doesn't have a good solution to the back reference problem, as I point out occasionally. The macro language sucks, but then almost all macro languages suck. "Async" is a nightmare but necessary to keep the Javascript crowd happy, since that's all they know. If you really need complex multiprocessor concurrency, Rust is currently the best game in town. Most people don't.

C++: They can't take anything out, and the cruft is too deep. "Modern C++" is not all that bad, but all of bad old C/C++ is still in there. So the safety situation remains awful. The cumulative complexity is now so high that even long-time language lawyers are giving up following it.

Javascript: Who thought that would rule the world? It's awful, but everywhere. Heroic efforts have made an inherently slow language go fast. It's kind of impressive, actually.

egorelik•43m ago
As far as I'm aware, Rust's trait system is more closely related to Haskell's type class system than to actual object-oriented programming. As a type class system, it is fine; it is a different mindset than classic OOP. Rust happens to also use this same system for something more closely resembling traditional objects, but this is much more restricted than either.
ForHackernews•1h ago
Rational choice for an engineer is not the same thing as rational choice for the company. I want to have an interesting working life, learning new things and keeping my CV current. It's not rational for me to shackle my career to doing maintenance fixes on a dying PHP app.
keybored•1h 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.

scuff3d•47m ago
In my experience "choose the right tool for the job" almost always translates into "pick the tool you like most and justify it later".
taeric•19m ago
This falls into the "people aren't rational/logical" trap. You really have to define what you would mean for it to be rational. And then you have to establish what the baseline ideas are from which you plan on establishing the logic/rationality. All the while, you need to really resist any "just so" stories that would explain anything.

Worse, this also falls into the trap of thinking you have to make a choice, and that an informed choice is better than chance. Reality is that you are often best trying to do both, and then having some sort of coin flip to disambiguate choices works far better than we'd like to admit. In large part for the simple reason that simply doing something is more than a lot of your competitors will be doing.