Hacker News new | ask | show | jobs
by dkersten 2407 days ago
We already have an abstraction for names: a text field. Trying to be more clever than that will break for someones name.
2 comments

Which is great until the client asks for a friendly name (given name) identifier. GitHub uses name, we use first/last name. So we just shove the GitHub name in the first name spot and ask people to organize what looks right.

Our partners suggested string.split(' '), which produced interesting results against the sample list of github users.

Use two fields: name and display name. Anything else will break for someone. In most cases where something asks for my name its really not even necessary and certainly not necessary to split it into first/last/display/friendly etc.
This is not sufficient if you’re going to localize to languages other than English. In some languages, proper names get declined like other nouns and thus change spelling in different contexts.
Are there examples where splitting it in First/Last name (or any other split) would help with that? It seems like that would always either be a problem or something to design around while localizing.
It’s fundamentally language specific, so any comprehensive solution is going to need to interface with the localization system. Really, names should be keyed by (user, language, tag) triples, where the localization defines the acceptable tags based on language requirements. For example, a single person may need their name stored as:

  en:disp     Eric
  is:disp:nf  Eiríkur
  is:disp:þf  Eirík
  is:disp:þgf Eiríki
  is:disp:ef  Eiríks
Designing a UI to collect this information is left as an exercise for the reader.
Since asking a user to enter every possible variant is unwieldy and without doing so, the problem is unsolvable, I’ll stick with my original suggestion of using a single field. Yes, some names will break, but far fewer than if first and last names are required.
A lot of software would be much better without stupid clients asking for the wrong things.
Eh, I understand it. They want to put some name in the identity control in the header. Putting the full name in is guaranteed to go wrong. We might start asking for a nickname for that purpose.
Why is the full name guaranteed to go wrong? A better assumption is that there is no reasonable nickname and you have to use their full name.
You're assuming that you're 'friendly' enough with your users that they want you to use their given name.
Oh yeah that touches a nerve. I hate it when I have filled in my name and email somewhere, maybe I forgot doing it, and I receive a newsletter, which opens with and greets me with just my first name.

No. Just because I signed up for your mailinglist doesn't mean we're on a first name basis! I hardly even remember your business exists, do you remember me? Anything else about me except my email and my full name, from which you deduced my first name? Then let's not pretend we're buddies.

This of course depends on how "friendly" I'm willing to be with said business. Which differs if it's an Etsy store, ordering food online, my bank, insurance, etc. I especially hate it when the news letter is in fact 99% ads and promo babble, but has this 1% of useful info that I want to be kept up to date on. We're not close, I'm letting you spam my inbox, call me "your grace" or something.

Can you actually go wrong with just using someone's full name, and erring on the side of being a tad too formal? Is this just a problem with marketing companies that want to "connect" and become "buddies"?

This already breaks names which inflect.
Which isn’t really a problem you can solve. If names change in the context that they’re used, it will always be broken, so why break more names by trying to be clever?
I'm not saying you can solve it. A single text field isn't a solution either. You cannot avoid breaking some names.
A single field breaks fewer names than forced first and last names, though, and is a simpler implementation too. Plus, as long as you accept any input (besides blank, I guess), then the only way it will be broken is during display and at least the user sees the exact name they typed in, exactly how they typed it in.
A single field also breaks the expectation that people do not get called by their full names in every interaction. This is a very common expectation, and violating it makes you sound subtly more like an evil robot.

Is this a lesser offense than mangling a name that doesn't cleanly split into first/last? At the individual scale, probably.

The impact, in aggregate, on UX/sales/utility? Could definitely go either way depending on your userbase.

That's not an evil robot, it's a polite robot.

Better than the slimy feel I get when a robot calls me just by my first name. You're a robot, we're not buddies.

Actually I think it should be ok, because you’d enter the name in the nomative case and then when you write it on the screen you’d declinate it based on the language you’re displaying it in, which would be the same for every name regardless of its origin.
Tried that once. Horrible, terrible, no good idea. (The only rule you can be sure of is "there are countless exceptions, and exceptions from the exceptions", everything else is a minefield in a quicksand) Asking for "how should we address you" is far easier, even if a few users fill in "Your Galactic Imperial Majesty".
What’s this? A name that changes when you are talking to someone directly? In some Slavic languages this happens.
Usually the name would change according to the full rules of noun inflection in whatever language. In Latin, a noun has 6 cases, of which vocative (indicating direct address to the noun) is one.
Irish has a vocative case that can modify names, and is an official language of a UN member state.