Utilizing Pre-Existing Concepts for Simplicity in Usage
Discussing how Zoom's asynchronous meeting systems simplified its usage in class made me think of another somewhat similar example. WhatsApp is extremely popular in developing countries, and I think it is mostly because of a single reason.
Most phones come with a contacts list, which was can be viewed abstractly as a concept as such:
concept Contacts:
phoneNumber: string -> one Number
.
.
. (and maybe some additional fields: email, address, etc.)
concept Contacts:
phoneNumber: string -> one Number
.
.
. (and maybe some additional fields: email, address, etc.)
And WhatsApp does something very clever by tieing its users to a specific phone number;
concept User:
phoneNumber: User -> one Number
concept User:
phoneNumber: User -> one Number
And afterward, most of the usual functionality of messaging apps become syncs between the Contact and User concepts. Your friends are simply the people you have saved in the contacts on your phone. The username displayed for users is different for everyone, and it is the name you saved them on your phone. User privacy is so that people you have saved on your contact can see your profile info, and others can't. Moreover, calling and messaging people on WhatsApp feels identical to doing so on your phone.
With this clever utilization of a familiar idea that almost everyone already uses, WhatsApp can build on top functionality it wants (group chats, videocalls, etc.), and never becomes inaccessible to users, even those that may have had very limited exposure to technology. I think this is the main reason behind its success in developing countries, and displays how users behave positively to concepts utilizing other concepts they are already familiar with, and maybe even already have installed on their phone.