"...refer people to this post the next time they suggest a genius idea like a database table with a first_name and last_name column."
So what's his suggestion then? Take this list of "bad" assumptions and try to build around them? Hogwash. Questioning whether you should design around someone not having a name is like asking if you exist.
I know companies that have been making millions for 15-20 years with this genius idea. You know what's so genius about it? It's simple, the developers understand it and it works for a great, great majority of cases.
Obviously it's very difficult to design a system that doesn't fall foul of any of these, but we could at least strive for better. Just having "first name" and "last name" fields is really quite culturally insensitive. It pretty much worked when only Americans and Western Europeans were using computers, but the online world is a lot bigger now.
A comment by the author gives examples of humans who don't have names, but certainly exist: "Someone born into slavery in the Sudan, a woman born in rural China, an American baby recovered after being born into a toilet, a feral child, an amnesiac, etc, etc."
It's not quite so important for a social network to deal with this, but a government system, for example, should be more rigorous. Whatever the system, if we can be more global in our attitude, so much the better.
I don't know if this is a peculiar idea, but in those circumstances perhaps a "Generate Name" button is the useful feature.
Does anyone seriously believe that this person will go through life with no name? There are placeholder names for unidentified people, the baby will get one of these until someone takes authority for it and names it.
"Obviously it's very difficult to design a system that doesn't fall foul of any of these, but we could at least strive for better."
If your goal is to achieve some nebulous goal of being "better", then sure. Otherwise, please tell me exactly why am I wasting my time? There has to be a reason, for instance if I'm building a global system that actually cares about acquiring exact/full/legal names and every name you've ever had.
"It's not quite so important for a social network to deal with this, but a government system"
There you go. You almost hit the nail on the head, but again - if your government system is not concerned with collecting every data-point about the person's name, then why should it care?
full_name - Matt S. Trout usual_referent_name - Matt
(for "normal" stuff)
full_name - Matt S. Trout usual_referent_name - mst
(for "geek" stuff)
and, yes, if I'm registering with a site for both, I have to pick one. But at least no matter what my full name is that way I can enter it.
Not only is the tone super pedantic, but the author berates people for creating simple databases based on their simple assumptions.
Fuck that. Not very agile. It's not like we can't update it if there's a large demand for change in the way names are collected.
Some people have two, three or more names.
Now what?
My entire point here is that if it's really important to the system being designed, that the correct answer will occur to you naturally. Honestly, if we design a system that requires full legal names and we don't look into the laws of the target region, then we're probably not too bright.
Do programmers routinely look up the law for common assumptions? I'm guessing no.
And by the way, the tone of your responses in this thread is the first time in my years of HN participation (under various user names) that I've wished for a plonk file. Everything you've said has the core of a relevant argument, wrapped in condescension.
It doesn't make them any less intelligent than the author of this article. The cutesy way that list was written and that comment at the end of the article was what I was responding to earlier, but anyway...what exactly did I say to you or anyone else that was so condescending? I'm not saying that I'm not slightly intense at times, maybe I ask a lot of rhetorical questions... Sorry.
You can't have just FullName, because parsing the name for it's components is incredibly complicated. (E.g. some people have last names with spaces in them.)
A suggestion below says FullName and PreferredName, which would probably work for many applications.