logoalt Hacker News

Programmers and software developers lost the plot on naming their tools

275 pointsby todsacerdotiyesterday at 6:06 PM372 commentsview on HN

Comments

perrygeotoday at 3:54 AM

The cognitive tax is a real problem. Using random cutesy names, there is no obvious behavior boundary. Does authentication go in the SnufBux module? Or the Farfrumstable service? Who knows? Without obvious language clues to handle a new concept, any new functionality will get strewn across these internal boundaries. And why not - they have zero semantic meaning anyway! Sloppy names encourage sloppy programming.

show 1 reply
throwaway81523yesterday at 11:35 PM

> http-request-validator is infinitely superior to “zephyr” when someone is scanning dependencies at 2 AM debugging a production incident.

The "Zephyr" that I knew about was a notification system for workstation clusters on a LAN, written at the MIT Athena project. You'd announce something on it, and the info would spread through the network as if by a gentle breeze. See: https://en.wikipedia.org/wiki/Zephyr_(protocol)

I do recall there was an experimental study in the 1980s (Hartwell, Landauer, and Gigliotti iirc) showing that this naming stuff doesn't matter. This exact same debate was going on back then. The study refuted Don Norman's "The Truth about Unix" paper which claimed that Unix commands ("rm", "mv", etc.) were too hard to remember.

layer8today at 12:31 AM

I agree with the sentiment, though the argument could be made better. It’s not really about good names being descriptive, nor about memorable mnemonics. It’s that modern naming styles tend to overload random English words for no good reason, but just to be cute (which I don’t consider a good reason) or to be evocative of something which it isn’t. One issue with that is that you might have very different connotations evoked by the word, that clashes with the software. And conversely, if you have to use the software regularly, it now encroaches into the semantic space of what you otherwise associate with the word. I’d like my software, and hence its name, to be its own thing, thank you very much.

show 1 reply
longemen3000today at 2:59 AM

That is one thing i like about the Julia package ecosystem. The general Registry (where package metadata is stored and where you go to register a new package), recommends using explicit names over short acronyms. For example, DifferentialEquations.jl is a package that does differential equations in julia (recognizable via the .jl suffix). What does Garlic.jl do? Exactly, garlic (the vegetable) modelling.

dwaltripyesterday at 10:12 PM

The author is vastly overestimating the general legibility and familiarity of things they happen to know well and are used to.

Boring names are also very generic, by definition, and thus often harder to remember. Especially when there are 10 other similar tools. Is it sql-validator, sql-schema-validator, schema-validate, db-validator, or god knows what else?

Edit: I am in favor of better “sub titles” / descriptive slugs / and so on. As well as names that are a hybrid of creative and descriptive. Sqlalchemy is a good example.

Why isn’t there a command line utility called “whatisthis” with a standard protocol that allows tools to give a brief description of what they are?

It could be extended to package managers as well. E.g “pip whatisthis foo_baz”.

Shit we should create this…

show 3 replies
necovektoday at 3:27 AM

Why does nobody in SF say "I am going via the San Francisco-Oakland Bay Bridge", but shortens it to just the "Bay Bridge"? This is the reason some bridges get a nice name (like Golden Gate), and some are strictly utilitarian (like SF-Oakland Bay).

And I am sure there are other "Bay Bridges" in the world too.

salomon812today at 4:44 AM

I almost completely disagree with this post. The only thing I can consider that you should probably avoid embarrassing names.

A descriptive name is terrible if you're slightly off. Or if the library gets repurposed. Or if the project doesn't turn out how you expected but it's still helpful. With everything going on, a nonsense name forces people to learn about it instead of having them guess at it from a three word description that might be misleading.

The author probably never had a project where something got named the oscilloscope-controller but there's no oscilloscope in sight, but we used to have one and then we tweaked a few things and now it runs something else and but the name was everywhere.

And all of these are abstract concepts. Getting data from point A to point B. FIFO? It's an acronym. Pipe? Doesn't really suggest it can buffer data. Buffer? Queue? Both sound like they might slow down data. Precise technical names would be good, but then the chances the purpose changes goes up!

Lercyesterday at 7:16 PM

Past projects of mine.

    'pedes
    Glook
    Fitznik
    Plops
    Gyralight
    I wanted a new tower defence game: So I made one
Oh and https://lerc.itch.io/namesarehardpart5

The examples given for real world things The Golden Gate Bridge and The Hoover Dam, are instances of things. Things that the class of which they belong is old enough that Dam and Bridge are not new words.

If you are making new things you need a new name. Software is inherently new because computers have been in wide use for only a few decades. Instances of software rarely even get names, just numbers, with project names or nicknames attached. I'd be willing to bet both The Golden Gate Bridge and the Hoover dam had project names or nicknames.

TehCorwizyesterday at 7:05 PM

The author should read up on the https://en.wikipedia.org/wiki/Sonic_hedgehog_protein or maybe https://en.wikipedia.org/wiki/Boaty_McBoatface both of which are actually scientifically important things.

Amiga famously had a custom ASIC called "Fat Gary" https://en.wikipedia.org/wiki/Amiga_custom_chips

I really could go on about this. Names are only useful for distinct identification. They need to be distinct within their domain. Otherwise they're just an index into a list.

show 1 reply
dannyfreemanyesterday at 11:54 PM

I believe one of the things that prompted stallman to give that talk was the inclusion of the lsp client "eglot" in emacs. Eglot i think is short for emacs polyglot.

The most idiomatic name, lsp-mode, was taken by another package. Stallman wanted to find another name but no one seemed to care as much as he did. I think one name he suggested in its place at one point was "code-parse" or something like that.

eckesicletoday at 7:05 AM

We had this debate at my company and the end result was a ban on “random” service names.

So we ended up with “auth service” instead of something like “Galactus”. The problem of course is that “auth service” isn’t searchable in our monorepo and it was a nightmare to find or discuss any info or references to the service itself. Now imagine if docker was called “container manager”. Good luck googling that and disentangling it from all the search results.

The value of a name doesn’t come from it being self-explanatory but rather from it being a pseudo-unique identifier. The small cognitive tax of remembering it serves as a shared bookmark between people that you can refer to when discussing or speaking to others about it - whether we’re talking about docker, Linux, or another person.

show 1 reply
komali2today at 2:32 AM

This drives me crazy because I use dmenu to launch things, and every time I want to launch a subsonic client I'm like "blueberry? Wayshin... Weish... Fei... FEISHIN!"

Just call it "subsonicfeishin" or something at least!

"Chatgpt... Mc... CODEX!"

It's nuts.

mbg721today at 1:27 AM

How do conference-room names fare in this view? My current company names them after football teams or local landmarks. But I heard about someone who used to work somewhere that named theirs after WWII battles, which was awkward for the Japanese guy they interviewed in one of them.

fussloyesterday at 6:58 PM

are you guys naming your products?

We have an internal name and our product name. Internal names start as something that describes the project/repo/tool. Then within 18 months the name no longer makes sense so we rename it to some random name - state names, lake names, presidents, mountains, etc. It's just a placeholder.

The public facing product name is a compromise of marketing, trademark, and what gets approved by the CEO. Even the company name might change in startup world. No joke: the startup next door had to change their name because it was too masculine, and they realized more than half their projected market was women.

show 1 reply
MisterTeayesterday at 10:59 PM

I agree, some names that come to mind are Celery and Windows. But there are always silly names. I like Plan 9, an OS named after an Ed Wood B movie. Its sibling, Inferno is full of puns and references to Dante Alighieri's Divine Comedy. Its corporate dullards who insist that neutral boring is appealing to most and I again agree but its not a hard rule for me.

Arubisyesterday at 10:15 PM

Just name everything Phoenix.

(The joke here is: look up how many _major_ software projects have been named Phoenix at some point. It's a lot.)

WatchDogyesterday at 11:40 PM

There are many different tools that attempt to solve the same problem, with varying levels of competency.

They can't all use the same name. If you want to build a better alternative to an existing solution, you need to choose a different name, this leads to names being arbitrary.

tokyovigilantetoday at 6:32 AM

The Sonic Hedgehog gene would like a word.

taylodlyesterday at 7:23 PM

And forty years ago, I was using a tool called Brief, which was a product from UnderWare. I was also using a librarian named Marian.

zcw100yesterday at 7:22 PM

Why does it have to be all or nothing? How about a clever name or two for marketing that stands out and doesn't get lost in a sentence "I'm not asking you to search, I'm asking you to use the search command" but not obnoxiously over done where everything is named after some Norse god or some other silliness.

homeonthemtntoday at 7:57 AM

I was just discussing this today funny enough. How long until someone goes for broke and just names their app "peepee poopoo"?

lordleftyesterday at 7:16 PM

I am highly sympathetic to this sentiment, but I think it's hard to name things in software because a) it's easy for the obvious names to get overloaded and b) many of the things we are dealing with are basically abstract relationships with arbitrary properties.

Artooooooryesterday at 11:34 PM

Even for consumer products - I'd rather have Mozilla Mail and Microsoft Mail instead of Outlook and Thunderbird. But marketing must market, dammit.

michaelcampbellyesterday at 7:05 PM

<tangent>

What is it with a number of blogs recently that have turned off normal right-click behavior, and probably related, the scroll behavior is awful.

This is one, and as soon as I scroll on my work high powered Macbook and it's not smooth, I'm out.

show 2 replies
chagaifyesterday at 7:23 PM

Love this:

> Name your library after what it does. Use compound terms. Embrace verbosity if necessary. http-request-validator is infinitely superior to “zephyr” when someone is scanning dependencies at 2 AM debugging a production incident.

show 1 reply
m3047yesterday at 7:12 PM

As they say in physics: color and charm may change, but up and down are forever.

irishcoffeetoday at 12:16 AM

The two hardest things in software engineering: cache invalidation, naming things, and off-by-one errors.

hiccuphippotoday at 2:03 AM

I remember a trend of randomly dropping vowels started with flickr.

andrewlyesterday at 7:07 PM

I strongly agree with this. And what bothers me more than obscure or meaningless names like Viper are silly and embarrassing names like Hunchentoot. Names like that sometimes cause people to dismiss good software. It’s like using Comic Sans in a serious research paper.

One area of the sciences does partly use names like this, and that is biology. Biologists do sometimes name a species after a famous person, as in the louse Strigiphilus garylarsoni:

https://en.wikipedia.org/wiki/Strigiphilus_garylarsoni

accrualtoday at 12:41 AM

I'm happy to see this post, it's something that bugs me every time I have to learn a new tool with a name that's neither A. unique to the project AND B. doesn't describe the project.

For example Zola and Hugo, static site generators - great, unique words that has no other meaning to me but the generator. The only other Hugo I know is a character in Bob's Burgers. But choosing random dictionary words like Avocado or Spice or whatever makes it completely transparent against my existing knowledge and now I have the mental lookup issue the author describes.

The other day a HN user was commenting "NAT, aka IP masquerading... (proceeds to keep re-using the term)". IME no one in the industry says "IP masquerading" unless your entire org and vendors are on Linux. Just call it NAT, we know what you mean. This a Linuxism and should be avoided!

Let's hit up Britannica.com on the word:

> a party at which people wear masks and often costumes

> a way of appearing or behaving that is not true or real

> to pretend to be someone or something else

I guess? I guess we are "pretending to be the peer IP when actually we are the LAN IP". But to me it's just nonsense. It's capital T Translating one IP to another for the sake of routing, drop the weird social implications.

6r17today at 1:00 AM

I like to mock the current meta as being coca cola driven.

Beestieyesterday at 10:02 PM

First it was racehorses. Then it was prescription medications. Then software.

I hope this goes no further.

show 1 reply
denysvitalitoday at 7:29 AM

Is it just me or the website is completely unreadable? Black text on a dark-gray background

wa2flqtoday at 3:15 AM

"...When you see “libsodium,” you must context-switch from problem-solving mode to detective mode: “What does this do? Let me check the README. Ah, it’s a crypto library... "

I would not mind the command names whose etymology was complex or inspired, if the README files would do a better job of giving context and function. Even though I have a wide set of wheelhouses in computer systems, I frequently encounter README files that still leaves me saying "Huh?". I shouldn't have to google three levels down before I get a clue.

davidfekkeyesterday at 7:35 PM

The two hardest things to do in computer science is knowing when to invalidate cache and how to name things.

show 1 reply
nathiastoday at 7:48 AM

why is this stupid ai-generated text on hn?

morshu9001yesterday at 7:04 PM

Idk about open source tools, but internal corporate things have codenames for good reasons.

ux266478yesterday at 7:23 PM

> Your HTTP client, cli utility helper, whatever library is not a consumer product.

I'm not sure how the author came to this conclusion.

At any rate, programmers aren't any worse about this than mathematicians. Just replace [fictional name] with some foreign word or philosophical term that's justified with the most insane mental gymnastics you've ever heard of. Given some historical native speaker of Latin, do you think they're going to know what a matrix is for? No, because the word means "uterus". There is no connection to "tabular shorthand of linear transformations."

I think it's clear the author is writing this to vent frustration, but I think they've misidentified the actual problem:

> http-request-validator is infinitely superior to “zephyr” when someone is scanning dependencies at 2 AM debugging a production incident.

My jaw hit the floor reading this. The idea there are people out there debugging codebases without knowing something as foundational as the dependencies is beyond absurd to me. That's insane and horrifying, overshadowing pretty much the entire blog post. Does anyone else live like this? How do you tolerate these conditions? Why would you tolerate these conditions?

soanvigtoday at 12:36 AM

Sometimes "branded" names are a good thing.

For example, naming some application modules strictly after what they do is super tedious, and uses words that are already reserved, therefore creating ambiguous nomenclature. Maybe I have various sort of permissions in my system but naming that particular permission system some greek god name creates a clear and shared meaning across the team (both business and technical), and mind you that that's what communication is all about - a shared meaning. Nothing else.

P.S. (I'm deliberately not going into discussion about bad things with that approach)

gherkinnnyesterday at 9:42 PM

This reads like an extensive, and frankly exhausting, rationalisation of a personal preference. Personal preferences are fine, I have my own. But please stop thinking they apply universally.

Laravel works better than Rails-but-PHP. Ruby on Rails beats Opinionated-One-Person-Stack-Using-Ruby and I'm fine with the name Ruby as well.

I shall name my next product larmn in honour of OP.

irusenseiyesterday at 7:10 PM

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

throwaway290today at 5:16 AM

> We’re using Viper for configuration management, which feeds into Cobra for the CLI, and then Melody handles our WebSocket connections, Casbin manages permissions, all through Asynq for our job queue

Would it be better if it was this:

> We’re using ConfigurationManager for configuration management, which feeds into CLI for the CLI, and then WebSocketHandler handles our WebSocket connections, PermissionManager manages permissions, all through JobQueue for our job queue

I think the author makes the opposite point of intended)

litbear2022today at 1:23 AM

> There are only two hard things in Computer Science: cache invalidation and naming things.

> -- Phil Karlton

- https://skeptics.stackexchange.com/questions/19836/has-phil-...

- https://martinfowler.com/bliki/TwoHardThings.html

taericyesterday at 7:06 PM

I find the remark that we give things names more as a word play than purpose.... kind of amusing? Like, of course people will find a way to play with the tools they have. And in programming, that is often words. Because what else would it be?

By far the worst aspect of the nerd ecosystem is the odd belief that pops up every so often that names should matter. In every ecosystem, there is usually some odd idea that it is only in their world that people abuse this.

Just skim through that list of things that are unexpectedly named after people. Sure, you can get upset about Shell's sort not having any relation to shells. Or Bloom's filter not having a phase where the data "blooms" into use. But you would have the same issue with French drains. Or how gaslighting has nothing to do with lighting things on fire using gas and the affect that will have.

Honestly, I think this would be a fun list to just keep going. Akin to the old Chuck Norris joke generators.

fphyesterday at 7:03 PM

Like GMail addresses, all the good names are taken.

lowbloodsugaryesterday at 11:04 PM

I have developed a language for writing structured queries. Based on this article, I have decided to call it SQL.

🔗 View 25 more comments