Top
Best
New

Posted by todsacerdoti 12/11/2025

Programmers and software developers lost the plot on naming their tools(larr.net)
422 points | 534 commentspage 16
pvtmert 12/11/2025|
I agree for internal names but disagree for public software/external names.

I disagree for public/open-source software, because: So many kinds of software actually have good names. Yes they use mythical names but with the similar function or relatedness.

Meanwhile, I agree for internal names, because: So many (legacy) code I worked with had terrible naming. This goes beyond only the names themselves but also their capitalization or consistency. I kid you not, in a $FAANG company I saw "SpidermanActivity" and "BatmanActivity" on a system that is used by Tier-1 services' on-calls.

> (Although this thing was not a Tier-1 service, it was not also completely Tier-2 either, as it was actively supporting operations of Tier-1 services, depending on the incident, a downtime could cause significant problems...)

Imagine you are trying to make sense of a large system, which has maybe tens of dependencies and as much of dependents, you are also trying to remember which API was Spiderman and how it related to the business at all...

More on the naming conventions, the horrible case of acronyms (which spans outside of software engineering) and PMs creating polls/surveys for "fun names for our new shiny thing that does X but we don't wanna call it that".

Going even lower-levels, engineers themselves are not careful. I had way too many CDK stacks named with not only varying dash vs underscore differences, but also with subtle "case-sensitivity" differences.

Each year, I am solving issues of Java devs' issues. Some of being "but it works on my machine" type of problems. And significant percentage of that is most developers use a Mac & macOS. Hence the filesystem is case-insensitive by default. But the deployment target & CI being a Linux, filesystem is case-sensitive. As you can see here, The camel-case combined with inattentiveness can simply cause many hours of waste.

> It's a plague.

Yes, there is an AI slop, but there is also human sloppiness too. I am quite happy with LLMs/GenAI that it is able to catch and capture these and less prone to make such sloppiness in the first place. (As it being a "predictive-text engine", next word suggestion is a clone of existing copy of historically occurring words)

At the same time, amount of "hallucinations" for various acronyms are staggering. Obviously I cannot expect otherwise. Even as a human, if I am missing the context, I would be either confused or plug-in something I already know...

Rumengol 12/12/2025||
This just feels like an old man yelling at clouds, trying to convince himself that the grass in greener in the other field.

> No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

This happens every day. In every scientific field there is a technical name and then the name everyone remembers. Nobody will understand if I speak about ENSG00000164690, but if I say it's the Sonic HedgeHog gene then it starts to make sense, because funny names are memorable.

> awk (Aho, Weinberger, Kernighan; the creators’ initials)

I'd like to see anyone try to defend how using the creator's initials in a tool name describe its function. Unless you researched the tool's history, there is no way to know that.

Yet another "why the tools I use are the best and the tools you use suck", with a weird focus on naming instead of function.

bighead1 12/11/2025||
counterpoints:

pascal, eiffel, ada, C, APL, dylan

gherkinnn 12/11/2025|
JavaScript
accrual 12/12/2025||
Some interesting commentary:

> InfoWorld: As I understand it, JavaScript started out as Mocha, then became LiveScript and then became JavaScript when Netscape and Sun got together. But it actually has nothing to do with Java or not much to do with it, correct?

> Eich: That’s right. It was all within six months from May till December (1995) that it was Mocha and then LiveScript. And then in early December, Netscape and Sun did a license agreement and it became JavaScript. And the idea was to make it a complementary scripting language to go with Java, with the compiled language.

randomNumber7 12/11/2025||
C

C post increment

See sharp

just6979 12/12/2025||
"“We’re using confman for configuration management, which feeds into climan for the CLI, and then wsconn handles our WebSocket connections, permgr manages permissions, all through jqueue for our job queue”"

This is better? Is this Highlander, there can only be one of each thing? What about variations of those tools... cman2? confman? cfigmgr? Naming projects, and hence tools, is often just as much about namespacing as meaning. There _will_ be more than one of most non-trivial tools/projects, and not every configuration manager can be called "confman" (if that's even really a "good" name").

And part of it _is_ connecting utility to an "appelation": calling "your MIT-licensed file parser with 45 GitHub stars" just "parser" practically gaurantees you'll never get that 50th star, because there are already a bunch of "parser" projects and there is no reason for someone to ever find yours.

"Each one demands tribute: a few seconds of mental processing to decode the semantic cipher. Those seconds accumulate into minutes and effort, then career-spanning mountains of wasted cognitive effort."

No they don't, because you're _not_ doing that processing every time. Just like "grep" makes perfect sense _now_ because you've used it forever, once you're working on a project then something like "cobra" immediately maps to "the cli library". It might take a secon the first couple times, but humans are good at this internalizing kind of abstraction, and programmers are damn amazing at it.

The unix tools example is really terrible. "I used grep to examine the confs in etc and then cat to combine them before processing with sed and awk and tarballed the output to be curl'ed to the webdav server." Those are only intuitive because you know them already. "sed" for "stream editor"? Come on, it's not called that because it's a good name. Why not strmed, or even streameditor?. Simple, actually intuitive. It's because 'sed' was the bare minimum to be a short as possible while being unique and just memorable enough. Awk is an even better counter-example to the article's claim: it's just names, makes no sense! Has literally _nothing_ to do with what it does.

"the Golden Gate Bridge tells you it spans the Golden Gate strait."

Umm, no it doesn't tell you that. Does the Brooklyn Bridge span the Brooklyn strait? George Washinton Bridge? Bridges are not exclusively named by that which they span, and software is not exclusively named after exactly what it does.

GMoromisato 12/11/2025||
Once again proving that there are two very hard problems in software engineering: Naming things, cache invalidation, and off-by-one errors.
marifjeren 12/11/2025||
There is actually a good reason not mentioned, not to name tools by their purpose:

- the purpose will change

Your "silicon-valley-bank-integrator" tool will eventually need to be updated to do something else.

Or your "login-page-config-service" tool may eventually do more than just logins.

Using gibberish or mythological names gives a nice memorable name that doesn't lead (or mislead) you to believe it does a particular thing which may or may not be correct anymore.

dietr1ch 12/11/2025||
Also, being too precise and succinct about what the tool does ends up in a race for the name in competing implementations.

Project names should be unique enough to allow them becoming their Id,

- It allows to find the project.

- It allows the project to change, extend it's scope or narrow it.

Having an Id is really important, making that Id related to the project's original intention is nice, but secondary. (as long as it doesn't change enough that it becomes misleading).

lr0 12/11/2025|||
"purpose will change" argument actually proves the opposite point. When a tool's scope expands beyond its name, the descriptive name tells you something went wrong. But even if so, if you have to rename "login-page-config-service" to "auth-config-service" it is not really a big deal, renaming will be much cheaper if you're renaming to descriptive names. Most importantly though, I wouldn't optimize to avoid renaming (happens once, maybe twice in a project's lifetime) by making discovery hard (happens every single time someone encounters the tool).
dietr1ch 12/11/2025||
> renaming will be much cheaper if you're renaming to descriptive names

Idk, renaming things that shipped is a PITA.

Say you wanted to rename `fish` to `a-decent-shell`. - Packages in all distros would need to be renamed. - Configuration for all systems using/having fish would need to change. - Scripts would need to change, from the shebang to the contents if necessary. - Users would need to understand that they now need to search documentation using the new name. - Documentation would need to be migrated to new domains, sed-replaced, and reviewed.

All this migration would require some synchronized, multi-step process across multiple distros and deployments.

I'd rather have a name that works as an Id.

lr0 12/11/2025||
> Say you wanted to rename `fish` to `a-decent-shell`

You just made my argument. Renaming is hard precisely because you shipped with the wrong name. That's why you should get it right from the start.

Every cost you listed [distro packages, configs, scripts, docs, domain] exists whether you rename to something descriptive OR another random word. The migration pain is identical. "Fish" → "decent-shell" costs the same as "fish" → "zephyr." My argument was that this renaming won't be necessary if you started by picking up the proper name at the first place, and it's very unlikely to have the need to rename it. We shouldn't be optimizing to avoid renaming. That's trading a rare maintenance event for permanent cognitive overhead.

dietr1ch 12/11/2025|||
> Renaming is hard precisely because you shipped with the wrong name. That's why you should get it right from the start.

No, it's just because the goddamn string Id appears in way too many places and you can't sed-replace the entire world at once. It doesn't matter if the string was cute, fancy, or you found it to be a good name.

queenkjuul 12/11/2025||||
> We shouldn't be optimizing to avoid renaming.

> you should get it right from the start.

This is also optimizing for not renaming, just in a different way; also, you just said renaming was cheap, so which is it?

ohboynotthis 12/12/2025|||
[dead]
Nevermark 12/11/2025||
A good reason to use arbitrary code names before assigning a more helpful name upon release of something deemed to now be generally usable, beyond developers with caveats.
accrual 12/12/2025||
I like this approach. Use a cute, fun, memorable name internally for stuff getting off the ground. Once it becomes user facing, the internal name becomes a fun note on Wikipedia and the world sees the actual calculated name.
irusensei 12/11/2025||
>Every person who encounters your “fun” name pays a small tax. Across the industry, these taxes compound into significant waste

>Reserve the creative names for end-user products where branding matters. For infrastructure, tools, and libraries, choose clarity. Every time.

Ah yes the software I am giving away for free must go easy on the minds of the poor VCs and business drones who are extracting value from it.

denysvitali 12/12/2025|
Is it just me or the website is completely unreadable? Black text on a dark-gray background
More comments...