A Simple Mental Model for Designing Any IT Solution
How you can contribute to building IT solutions even without a particularly technical background
This past weekend, my wife noticed the ice maker in our refrigerator stopped working. She was going to get some ice for her cup of water, and when she pressed her glass against the ice dispenser on the fridge door, the fridge made all the noises like ice was going to come out, but only a single cube fell out. Opening up the fridge to look at our ice tray, we discovered that the ice tray was pretty much empty, save two or three stragglers.
Now, let me be clear… I wouldn’t exactly call myself handy. But I did grow up with a dad who is superhuman-level handy, so I’m always inclined to jump in first to see how I might fix it. (Worst case scenario: I’ll just call my dad. Because if he can’t figure it out, I’m buying a new refrigerator!)
I’ve been thinking a lot about mental model frameworks lately. Mental models are a simply means to figure out how things work on a super basic level and then extrapolating them down further to fit your specific situation. In my broken ice maker scenario here, a mental model is simply figuring out what it takes to make ice. Not a trick question: What do you need to make ice? I’m promise you, this isn’t a trick question!
- Cold temperatures 🥶
- Water 💧
With this very basic breakdown in mind, I went about trying to diagnose and fix the issue. (Of course, I got had a lot of help from YouTube and online forums to help me out with this!) After taking some stuff apart to more closely analyze what was going on, here’s what I discovered:
- Cold temperatures: I still checked this out even though I was able to rule this one out almost immediately. If you recall from above, the ice tray was empty except a few stragglers, and if there was a problem with the temperature, that whole tray would have been a big puddle of water. And if cold temperatures were an issue, then the rest of our fridge would have been warm which wasn’t the case. (Thank goodness this wasn’t the issue!) Even so, after disassembling everything and checking out all the stuff the YouTube videos told me to watch for, it didn’t seem like this was the issue.
- Water: When I disassembled the ice maker, I followed some steps to try manually triggering the ice making process while paying close attention to the situation. As the YouTube videos instructed, I listened as water *should* have been dispensed from a valve in the top of the ice maker into the water tray. I could definitely hear the right sounds being made… but no water came. We’ve definitely found our culprit!
As the online forums stated, it’s pretty common for the water inlet valve to go bad as that is an electronic mechanism that lets water into the fridge from your house’s water source. At the time of me writing this, I have the parts on order to fix this, and I’ll be able to fix it in a jiffy with an assist from another YouTube video.
(Side note: I am VERY notorious about using YouTube to help me do pretty much anything. My wife still likes to tease me about the time I had a YouTube video open when she walked into the kitchen watching me trying to figure out the best way to cut a tomato. Don’t judge.)
In my broken ice maker scenario, you can see how I broke down the situation to its core roots to actually help diagnose and fix the issue. Again, I am NOT a handy person, but this simple mental model helped me to search the right stuff on the Internet to fix the scenario. And hey, my dad didn’t have to get involved! (Well… not really anyway. I did video call him, but he wasn’t able to diagnose much simply over FaceTime.)
When it comes to designing IT solutions, I know how daunting technical terms can be. Trust me, I’ve only been designing really technical solutions for maybe the last two year. Before that, I can distinctly remember how intimidating it can be to be sitting in meetings with IT architects and having no idea what they heck they’re talking about.
The thing to remember is that we ALWAYS develop IT solutions to help us solve a real world concept. Whether that be creating a banking mobile application or a video game, it’s not like people design IT stuff for the sake of designing IT stuff. With that in mind, we can develop for ourselves a very simple mental model on how to map real world concepts to IT solutions. In the rest of this post, I’ll share a VERY basic mental model that you can use to design pretty much IT solution. Some techy folks might bristle at it, but trust me when I say that it has worked for me 100% of the time. And in the final section of this post, we’ll see how we might apply this specific mental model to create a video recommendation system on Netflix.
Let’s get into understanding this mental model!
A Very Simple IT Mental Model
Like I said, we’re going to keep this super simple. If you blink, you might even just miss it. This IT mental model breaks any IT solution down into three basic pieces: storing information, moving information, and processing information. Yup, that’s it! The idea is intentionally to keep it as basic as possible. You might already be able to figure out what I mean with these three things, but let’s go ahead and break down these three pieces down below.
When it comes to all IT solutions, you always want to design a spot where your information can hang out when you’re not doing anything with it. There are lots of different mechanisms for how to store information, and what you choose to leverage really depends on what you’re looking to do with that information. Storing a person’s address information for a shopping website is going to be different than storing video files to be watched on things like YouTube. But again, these things all collectively roll up under the common goal of storing information.
A few examples of storing information might be…
- Storing the stats on how well a Fortnite player performed in their last few online matches 🕹
- Storing the pictures you take from your smartphone to view them on something else later, like a tablet or PC 📸
- Storing a person’s transaction information in an online bank account 🏦
Those three things might all be storage, but I would expect each of these particular situations to merit different solutions. For example, if each of these things were developed on Amazon Web Services (AWS), I’d respectively recommend leveraging DynamoDB, S3, and RDS. But for our purposes, knowing that we need a storage solution is simple enough for our IT mental model.
Of these three elements in our IT mental model, this one should come most naturally for you. If you think about going from your house to the grocery store, you obviously need some means to get from Point A to Point B. That might mean hopping in a car and driving on public roads, or if you live in a big city, you might get on a public transport system like a bus or train.
Likewise, your IT solution will always need to provide some sort of mechanism from getting information from Point A to Point B. In most cases, this is going to involve some form of what you’ll hear called networking, and even though networking is super common in IT solutions, I still wanted to abstract this piece of our framework to something even more basic than networking. (And networking isn’t exactly the only way information gets moved around.) You’ll also commonly hear terms like ingress and egress to respectively describe incoming information and outgoing information.
Keep in mind, moving information generally isn’t a one-and-done thing. Your information might get passed through many different mechanisms before finally reaching its “end destination.” As an analogy, when I go to work with my friends down in Atlanta, I leverage three forms of transportation:
- A car to get me to the airport 🚗
- An airplane to get me from one airport to another ✈️
- A train to get me from the airport to the hotel / work location 🚊
Information often gets passed in a similar manner. Along the way, it’s likely your information will get processed in some way, and we’ll cover that as our last part of this IT mental model. Before that, here are a few examples of how information is moved in the IT world:
- Collecting temperature information from a smart thermostat 🌡
- Sending a signal to a smart lightbulb to change from the color red to the color blue 💡
- Streaming a video on your smartphone from YouTube, originally stored on their local servers 📺
Okay, so we’ve covered storing and moving information, but it’s not as if this information is static and doesn’t change in many cases. At some point, that information will get processed and created into some entirely new information or changed in some other capacity. There are lots of ways we process information, and it’s probably best to grasp this last piece of our mental model with a number of examples:
- Calculating the total of how much we owe on a credit card based on transactions from the past few weeks 💳
- Dishing out recommendations on the next songs you should listen to based on your music listening history 🎵
- Determining your credit score based on the various sources of your personal credit history 💰
- Compressing a video file to have a smaller footprint so that it doesn’t chew through your smartphone’s data plan quota 🗜
- Determining the top players in an online gaming tournament based on statistics on how they performed in the last couple online matches 🏆
As we touched on in the “moving information” section, information is often processed / transformed many times before the end result finally takes place. In the case of turning on a smart lightbulb from an Amazon Alexa device, that might mean…
- Translating your verbal spoken words into text 🔈
- Parsing that text so that the computer understands what exactly you’re trying to do 🤖
- Sending that command over to the mechanism that controls the behavior of the smart lightbulb (e.g. a Philips Hue bridge) 🎛
- Having that mechanism issue the command to turn on the smart lightbulb 💡
I hope that makes sense. If not, don’t worry since we’ll go a little deeper when we go through our Netflix recommendation system in the next section. And because I’m a visual learner, I’ll include some diagrams that will hopefully explain things very easily!
Without further ado, let’s use our IT mental model here to create that Netflix recommendation system. 🍿
Building a Netflix Recommendation System with Our IT Mental Model
Alrighty, let’s put rubber to the road by applying our IT mental model to an example that I’m hoping most of you can relate to! If you’ve used Netflix, then you’ll know that every time you log in, Netflix will recommend options of shows or movies to watch that they think you’ll like. (YouTube pretty much does the same thing if you watch YouTube from a logged-in account. Or Amazon Prime Video. Or Hulu. Basically… any online streaming service.)
Now, I don’t know the intricacies of how Netflix exactly derives these recommendations, but for our purposes, we don’t need to go that deep anyway. At a high level, Netflix uses collaborative filtering to generate its recommendations. That’s basically a fancy way of saying, “Hey, we noticed that people like you watched this stuff, so we think you might like it, too.” (I know I’ve radically oversimplified this, so if any Netflix engineers read this, forgive me. 🙏🏽)
With our scenario in tow, let’s start thinking through each of the three pieces to see how we might develop our basic system.
I’m sure Netflix stores a TON of information to build their system, and they’re probably stored across tons of different services. For our example, we can keep it pretty simple. At a minimum, we’re going to need to store the following bits of information:
- Our own account information, which also includes our watch history
- The watch history of other people, especially people who watch similar things to me
- The actual video files for the TV shows / movies on the Netflix platform
That’s pretty much it. Again, we’re keeping it pretty simple here, but I think for our purposes, we’re good to go ahead and move on.
As we shared before, information moves around a LOT in almost all IT solutions. That’s definitely going to ring true for our Netflix recommendation system. Keeping it simple, here are some of the ways in which information will move around:
- Collecting information of our personal watch history as we watch anything on Netflix regardless of what we’re watching it on (e.g. smartphone, smart TV, tablet)
- Collecting information on the watch history of other people
- Moving that watch history information into the piece of our system that will process what stuff should be recommended
- Sharing those recommendations to us via the Netflix user interface
- And of course, moving those video files from our storage system for your watching pleasure on your personal device!
Don’t worry if you’re having trouble tracking all these. We’re going to pull it all together in a visual at the end. Before we get there, let’s talk about how we’ll need to process information.
Technically speaking, information would have to be processed a LOT in a real life system. We could spend all day just talking about how the video files would need to be properly processed before they’re ready to be watched by our customers. But again, we’re going to keep things super simple, so we’re only going to call out one processing step here:
- Generating recommendations using collaborative filtering based on your personal watch history versus the watch history of people similar to you
Alright, that’s it! With all these pieces in tow, we’re ready to start pulling it all together.
Our Netflix Recommendation System
Alright, here’s what our basic system looks like! Not as bad as you expected, right? Interacting with that diagram above, here’s how a general flow looks like:
- You — a Netflix customer — log into your account via any device that has Netflix enabled and watch stuff. 👋🏽
- Your watch history information is stored alongside the watch history of others similar to you. 💾
- The collaborative filtering system uses all this watch history information to generate personalized recommendations for you. ⚒
- Those recommendations are shown back to you on the Netflix user interface. 📲
- You select what you want to watch, and Netflix plays those videos for you on your device. 🎥
- You binge like you’ve never binged before. 🍿
This is a highly simplified example, but at its core, this is really how any IT solution is developed. We didn’t talk about the technical components, but just having this basic idea of what you want to do, you can easily do research on how to specifically enable things given your business requirements. Plus, there is often more than one way to skin a cat in the IT world.
Some other things we didn’t talk about in this specific example that you might want to consider include…
- Properly securing your users’ information (storing)
- How to properly interact with Internet Service Providers (ISPs) like Comcast or AT&T (moving)
- How you work with movie / TV studios to get their videos into your system (storing / moving / processing)
- How to properly charge your customers for their monthly subscription (processing)
All these things roll up nicely to our simple IT mental model!
That wraps up this post! If you’re in more of a business-oriented position, I hope this framework helps you to see that the IT world isn’t nearly as daunting as it might seem. You can begin applying this IT mental model immediately, and I think you’ll find that it quickly transforms how you think about IT solutions almost overnight. It certainly has helped me immensely in my work! Hope you enjoyed this post, and I’ll catch y’all in the next one. 👍🏽