As software has grown more complex, it has become impossible for any one person, or even a single team, to maintain total awareness of an entire architecture. The rise of the internet promoted the concepts of frontend (a browser on one computer processing JavaScript, CSS, HTML) and backend (another computer running a database and an HTTP server) unified on a single server to deliver one product—the web page. A user might click on a button, a call is made to a server, that server might check a database, and will ultimately deliver an HTML page.
The pace has picked up. The modern user expects powerful and highly-interactive mobile apps to entertain them or drive their business, at a low cost, with regular updates. Now, one person can create an app that gains millions...