Model View Controller is a server architecture model that was invented by Trygve Reenskaug in the late 70s. Originally a system to implement graphic user interfaces for desktop machine it is now the core of practically anything we refer to as
“The essential purpose of MVC is to bridge the gap between the human user’s mental model and the digital model that exists in the computer. The ideal MVC solution supports the user illusion of seeing and manipulating the domain information directly. The structure is useful if the user needs to see the same model element simultaneously in different contexts and/or from different viewpoints. The figure below illustrates the idea.” — Trygve Reenskaug
More concretely Reenskaug wanted to illustrate complex sets of data by bridging the way humans and computers interpret data.
Model covers the core of the way an app works. The logic in which data is broken down (modeled), and how different parts of the app will interact with that information. In the context of a web app it will likely equal a database; for example an archive of tweets, wikipedia entries, address book et al.
The visual representation of the data once it made it to the user. A view is a result of a query answered by the controller using data stored in the model. For example a web page or a confirmation screen in an app.
The controller is the link between the user and the system (and also the core of the initial mission set by Reenskaug). A controller will respond to a query by executing a predetermined set of actions.
For example ask the database for the information based on certain filers and then process that data to a view for the user. e.g. what did user @byedit tweet at 3:11 EST on Dec 15th? will render https://twitter.com/byedit/status/676857227723034624
It is important to state the obvious: MVC defines and drives our perception of what is a digital product. It anchors the way design is taught and thought of.
The diagram below is a simplistic view of an average design and development team, mapped to an MVC model.
MVC, in its current format, can’t handle new technologies such as machine learning and artificial intelligence. These new environments will require new and far more complex architectures (MVC shortcomings are already apparent). For design this is likely to be as much of a defining experience as the shift from print to digital. It is fascinating to think about the fact that we’re reaching a point where we will be designing systems, quite literally, instead of views.
It is hard to illustrate the flow of data in a product that’s completely driven by AI, as this is still a big variable, but I will make a fair attempt. An MVC model has a timeline. Start. A query is asked. Controller engages the model to capture data and render a view. End.
We can conceptually illustrate a machine learning system as a puddle. In its center is the core logic; the algorithm and the design.
A query will start a ripple effect. And as the machine processes data it learns. Each circle in that ripple means better accuracy, more targeted assumptions made by the machine and most importantly better value for the user.
That single piece of design will need to encapsulate logic, data sets, goals, views and a lot more. This metaphor reinforces the notion of depth. The deeper the logic the better the reach of ripple effect. And more value rendered for the user. On the same token, any discrepancies in the that logic will be multiplied and will eventually render a product non–usable.
This is a brand new way of thinking about products. Design. Type, color, UI will be as crucial then as they are now but without deep understanding of the problem a we won’t be able to reach the level of logic required for such systems