Live data from Hacker News

Why engineers can't be rational about programming languages

spf13.com

81–90 of 206 posts

Re: Why engineers can't be rational about programming languages

#81

> 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.

This person appears to have been "Languages Product Lead at Google", so they are very used to arguing about how important language choice is.

Re: Why engineers can't be rational about programming languages

#82
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.

Re: Why engineers can't be rational about programming languages

#83

> 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.

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.

Re: Why engineers can't be rational about programming languages

#84
post #20

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 t…

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. Switc…

> Switching from C++ to Rust? Probably not.

Counter example:

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

Re: Why engineers can't be rational about programming languages

#85
post #84

Earlier quoted context omitted.

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. Switc…

> Switching from C++ to Rust? Probably not. Counter example: https://fishshell.com/blog/rustport/

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.

Re: Why engineers can't be rational about programming languages

#86
post #80

Earlier quoted context omitted.

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 i…

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!

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.

Re: Why engineers can't be rational about programming languages

#87
post #76

Earlier quoted context omitted.

> 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.

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.

A large part of success is picking a goal that is obtainable.

Re: Why engineers can't be rational about programming languages

#88
post #67

Earlier quoted context omitted.

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/…

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.

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

Re: Why engineers can't be rational about programming languages

#89
post #34
post #20

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 t…

"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 la…

I would say, though, that for most programs any one of the most popular languages would do the trick. By this I mean Java, Go, C#. Javascript, Python, C++. All of those are general purpose multi-paradigm languages that you can code almost anything in.

That being said, some programs can only be written in one of those. Browser code is JS exclusive, low-level needs C++, secure code needs not C++. Machine Learning needs Python and high performance can't use Python. Some Windows things need C#. Those cases are the obvious ones where there is basically no choice. Beyond those, it is mostly about the team.

Post reply on HN