The biggest problem with this strategy is it isn't idiomatic to refer to someone by their full name in many contexts. However given its simplicity, and cultural neutrality, a single full name field should be the default choice IMO.
Nickname:
and then refer to them by their nickname, which can be whatever they like to be called, in whatever land they come from
and no programmer has to care about human naming conventions ever again