Programmers might assume there is a simple list of all the countries in the world. There isn’t.
For example, China and Taiwan don’t recognize each other as legitimate governments. If, for instance, your organization were to publish a list of “countries” which doesn’t include Taiwan, you may one day see Taiwanese activists with megaphones at your gates. If they publish a list of countries which does include Taiwan, then China might do something crazy like ban you otherwise hamper you from doing business in the PRC. This really does happen to tech companies.
And it’s why you should never label an ISO-3166-derived dropdown as “Country:”. First of all, it’s wrong, because Puerto Rico is not a country, and secondly you have all these sensitive political issues. Instead use “Location:”, or don’t even label the damn menu at all.
ISO 3166 is a very useful standard because it just says it’s a list of “countries and their subdivisions”. Quite deliberately, it doesn’t say what is really a country and what is just a subdivision.
A version of this was posted to Reddit’s r/programming.