In Defense of Weird Names

"Observable" means something that can be observed. The letter i fits best in a loop rather than index or iteration because it represents both, is succinct, and is commonly used. "Google" looks like "Goggle" and "Googol"; the former is a seeing aid and the latter is a very big number.

Those three names above have different naming schemes. If you put those names onto a spectrum, the first is the easiest to understand and the last is the hardest, provided that you hear their names for the first time.

Us programmers love the former and hate the latter; we are brainwashed to think that names must explain the object it refers to. But it doesn't have to always be that way.

The simplest naming scheme is to name the object as it looks. A "pointer" is clue; But in C a pointer has more meaning: a number of a certain size that points to some memory location. A "box" is exactly what it says. A box in Rust is a pointer for things in the heap. The name gives a clue to our brain to what it is supposed to do in the computer representation. This scheme is the simplest because the inventor doesn't have to do much to explain the concept as it borrows existing concepts from the reader's brain. In reverse this is also true; if the name is new to the reader then the reader is eventually educated on the word's original meaning.

Suppose a program becomes complicated and now there are "User", "UserController", "UserControllerFactory", "UserControllerFactoryWrapper". These names are too ambiguous and the objects being represented become hard to differentiate. This calls for a more distinguishable name. Of course you can't randomly name a class "Bob", except if you're building a machine to hamburgers.

A truly unique name that everybody haven't heard is a very powerful thing to have. You have a space in everyone's head that is unfilled. Take "C++" for example, it is a very powerful name; there's even two pluses in the name, not just one.

Now that you have a unique name, the remaining work needed is to instill meaning to it. This is the complete inverse of the first naming scheme. Instead of drawing meaning from an existing name, it is purely the experience drawn from the concept itself that gives meaning to the unique name. This is a similar scheme to onomatopeia, a word that resembles how the concept sounds e.g. "chirp" from the sound of a bird chirping.

Why is this naming scheme undesired in programming? Because the responsibility to giving a meaning grows as the concept grow more complex. Look at the effort it takes for well-known tech companies with unique names to grow into what it is as you know them now.