Top
Best
New

Posted by spf13 22 hours ago

Why engineers can't be rational about programming languages(spf13.com)
118 points | 145 commentspage 2
phibz 9 hours ago|
Isn't senior leadership choosing languages or core technology, doing things wrong? Shouldn't senior leadership focus on outlining the business opportunities, value case, and requirements for their solution?
lproven 1 hour ago|
No?

The point of the article is that if you delegate this choice, the people to whom you delegate it will get it wrong.

danans 12 hours ago||
If you are are starting from scratch, isn't the answer to which language to use just "the framework that best supports the business case and problem you are working on"?

If that produces many options, then choose based on the team's familiarity with the language, frameworks, and ecosystems.

A good software engineer should be pretty language agnostic when it comes to work, even if they have a personal aesthetic or technical preference.

lproven 1 hour ago|
The point of the article is that if you attempt to find

> "the framework that best supports the business case and problem you are working on"

by asking the people who will be using it, then the answer will almost certainly be wrong.

The whole point here is working out which is the best tool is almost impossible because of natural human cognitive biases.

TL;DR summary:

No. No, that isn't the answer. It's not even an answer. It's the answer to a different question.

bobx17 21 hours ago||
We see the "we need to rewrite in X" conversation play out all the time here on HN. Love this take on it.
lproven 1 hour ago|
Yes, we do, but that is not the subject the article is talking about.

From the way so many commentators are refusing to engage with the point expressed in the title I think there is collective denial of the core point, so instead, people are discussing the symptoms rather than the disease that is the subject here.

js-j 8 hours ago||
For some time now, I've come to the conclusion that the choice of a programming language is of crucial importance to the success of a project: programmers are inspired by beautiful tech solutions, that's what motivates them to give the best of themselves. PHP has never been such a piece of technology for me, whereas Perl used to be...
scuff3d 17 hours 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".
LorenPechtel 20 hours 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.)
Balinares 19 hours 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.

lproven 1 hour ago|||
This is true, but the article is not about rewriting.
dmoy 20 hours ago|||
Indeed, and the perhaps canonical article on "don't rewrite" from 2000: https://www.joelonsoftware.com/2000/04/06/things-you-should-...
wvenable 19 hours 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.

tracker1 20 hours ago||
VB.Net winforms app from 2005?
kstrauser 19 hours 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.

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

That seems like the same argument that TFA is making, but in reverse. I think it's just as invalid. PHP is a perfectly fine language for many things. There is plenty of greenfield development being done in PHP these days + a substantial amount of PHP in production all over the place. Unilaterally writing it off as "madness" seems pretty disingenuous to me.

kstrauser 15 hours ago||
Congratulations for getting the point of the article. :)
lordnacho 19 hours 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.

lproven 1 hour ago||
> certainly not specific to tooling ("I'm a DeWalt carpenter!")

I think you have it totally backwards for >90% of people, and I counter your argument with a very famous quote:

"Dammit, Jim, I'm a doctor, not a bricklayer!"

tailrecursion 18 hours 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 17 hours ago||
Nah, I spent a short time with Java and a lot of time with c++.
fragmede 18 hours 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!)

romaniv 18 hours 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.

dh2022 12 hours ago|
Rather than bet the company on a programming language I would prefer to be able to use different languages in an interoperable-fashion.
More comments...