#14 Mental model for software creation (14/30)

Alberto
4 min readJan 13, 2021

Earlier I wrote about how we are all software creators. With the tools and resources needed at our disposal, let’s get into the right mindset. A good mental model for breaking down the very concept of software, is to look at it like this:

Data + Interface + Logic

Every app you use is an interface that allows you to interact with data. The actions you can and can’t take are dictated by logic.

Data

When you’re browsing through listings on Airbnb (or actually, back in 2019 when were actually looking for stays abroad 😓) or scrolling down Instagram, you’re looking at the interface’s representation of that data. If you could take a sneak peak of what happens behind the scenes into what powers the app you’re interacting with, you’d see something similar to this:

Mock database I made on Dropbase

What would Airbnb’s have? A database that consists of a table of listings, reservations, users (both guests and hosts), and reviews. At a very high level, that’s what it is. Of course, each of them probably has plenty of variables and columns, tables are connected and affect each other... But for now let’s focus on those.

Every single item you see throughout your Airbnb booking experience, can be traced back to a specific column and a row.

Of course, it would be a little cumbersome and not very user friendly if we would have to go to a black and white database (like the one above) then search for “Hanoi”, filter for “Available Feb 20th 2020 to March 20th 2020” and sort by “Rate” on descending order, copy and pasting the image URLs to check out the actual listing. That’s what interfaces are for.

Interface

Interfaces are what we are familiar with. In the previous paragraph I mentioned how users would want to interact with the database in order to search for a listing. So, in order to KISS (keep it simple, stupid), the interface should focus on searching for a city, filtering for available dates, displaying images from the listings, and sorting for prices.

Source: Airbnb.com

Airbnb wastes no damn time. The first thing you see on the site is a bar where you can select cities and dates. So, 2/4 of the interactions with the database are taken care of within seconds of opening the site. The remaining half are displayed in the results page. Interfaces are the layer where users can interact with data in a friendly way. Think about that for a second. By first simplifying what data is necessary and then listing what actions towards what specific data are key to the product, we can design an interface that prioritizes the user experience.

The interface is an app’s skeleton, it holds everything in place and gives it structure. Every single dynamic field (fields that change when you interact with the app) is sourced from the database. If you were to delete the database (a little extreme, but ok) you would be left with an interface with blank placeholders: Listings in {City} {Image 1}, and not the name of the city and an actual image. Below is a results page with all the dynamic data blurred out.

Source: Airbnb.com (blurred items for explanation purposes)

So users can now talk to that black and white database through a gorgeous interface. Now what?

Logic

Logic is what makes everything tick. Logic is the set of rules that dictate every action on the app. These rules are what allow users to see results that aren’t booked already. All the actions, triggers, interactions are made possible through logic. Let’s set some other examples. You scroll down Instagram. You are moving down the interface that is the feed, you see photos which are the data, but you can only see profiles you follow (logic). Logic ties the data and the interface together. For every action a user can take on the interface, which is an interaction with data, logic is needed.

This mental model allows us to see software under a new light. If you want to learn more about mental models, check out Farnam Street. It’s where I first learned about them.

A mental model is simply a representation of how something works. We cannot keep all of the details of the world in our brains, so we use models to simplify the complex into understandable and organizable chunks.
from the Farnam Street Blog

By breaking down how software works, you are equipped to both analyze software you use and start building your own. Start off with the data (movies, workout videos, vegan recipes), then design the interface (what users want to do with that data and how it will look), and tie it all in with logic!

Happy building.

--

--