Code, data, infrastructure: the three nouns
Imagine a restaurant kitchen on a busy night.
There are the recipes, which describe how each dish should be prepared, and there are the ingredients, which the cooks receive, use, combine, and replace. And then there is the kitchen itself: the ovens, refrigerators, counters, electricity, and other equipment that make the work possible. Recipes, ingredients, kitchen.
A software product can be understood through a similar set of three ideas: codeConcept · lights on your mapcodeThe instructions people write to tell computers what to do, the recipes of the kitchen. The first of the three recurring nouns of this curriculum, alongside data and infrastructure., dataConcept · lights on your mapdataThe information a system receives, stores, processes, or produces. The ingredients of the kitchen. The second of the three recurring nouns, alongside code and infrastructure., and infrastructureConcept · lights on your mapinfrastructureThe computing environment that allows code to run and data to be stored and moved, the kitchen itself. The third of the three recurring nouns, alongside code and data..
These three ideas will appear throughout this curriculum because they provide a simple way to organize nearly every software system.
Code
Code is the set of instructions people write to tell computers what to do.
In the restaurant analogy, code is like the recipes. A recipe describes the steps required to turn ingredients into a finished dish, and in the same way, code describes how software should respond to information and actions.
For example, the code behind a coffee app may contain instructions for calculating the price of an order, checking whether a store is open, processing a payment, and adding rewards points to a customer’s account.
Code is usually written using a programming language, such as Python or JavaScript. You will learn more about programming languages later in the curriculum.
Data
Data is the information that a software system receives, stores, processes, or produces.
In the restaurant analogy, data is like the ingredients. The recipe may stay the same, but the ingredients being used can change from one order to another.
In a coffee app, data may include:
- Your name and account information
- The drink you selected
- The store you chose
- The price of the order
- Your rewards balance
- The estimated preparation time
The application may hold similar information for millions of other customers and orders. And data does not only mean numbers. Text, photographs, videos, account details, locations, and messages can all be forms of data.
Infrastructure
Infrastructure is the underlying computing environment that allows software to run and data to be stored or moved.
In the restaurant analogy, infrastructure is the kitchen itself. A recipe and a collection of ingredients are not enough to prepare a meal. The cooks also need ovens, refrigerators, electricity, water, counters, and space in which to work.
Software similarly depends on computing resources such as servers, storage, networks, and cloud services, which provide the processing power, space, and connections that applications need.
For now, you can think of infrastructure as: the technology underneath a software product that keeps it running.
You will examine infrastructure in much greater detail later.
Connecting the three nouns to the previous lesson
In the previous lesson, you learned the pattern: Input → Processing → Output
Code, data, and infrastructure help explain what makes that process possible.
The input usually contains data. During processing, code runs on infrastructure and works with that data, and the result often becomes new or updated data that leaves the system as an output.
Consider a coffee order:
Input: You submit data describing your drink, store, and payment choice.
Processing: Code checks the order, calculates the total, and processes the payment. That code runs using computing infrastructure.
Output: The system produces new data, such as an order confirmation, receipt, and updated rewards balance.
The connection is not always perfectly one-to-one, since some processing may involve several applications, external services, or people, but the three nouns give you a reliable starting point for understanding what a software system contains.
Why this distinction matters
Technical conversations often focus more heavily on one of these three areas.
A team might discuss changing the code because a feature behaves incorrectly, investigate the data because customer records are incomplete or inaccurate, or examine the infrastructure because the application is slow or unavailable.
Different specialists may also focus on different parts of the system. Software engineers often spend much of their time working with code, while data engineers and analysts focus heavily on collecting, organizing, and using data. And infrastructure, cloud, platform, and DevOps engineers help create and maintain the environment in which software runs.
These responsibilities often overlap, and team structures vary between companies, but identifying whether a conversation is mainly about code, data, or infrastructure can still help you understand the problem being discussed.
How the three areas can fail
Code, data, and infrastructure can each cause different kinds of problems.
When code contains a mistake, the software may behave incorrectly under certain conditions. A discount might be calculated incorrectly, or a button might perform the wrong action.
When data is missing, outdated, or inaccurate, correctly written code may still produce the wrong result — a good recipe cooked from bad ingredients. For example, the application might send an order to the wrong address because the stored address is incorrect.
When infrastructure has a problem, the software may become slow, inaccessible, or unable to store and retrieve information. A server failure or network interruption could prevent customers from opening the application even if its code and data are otherwise correct.
In a real incident, the cause may involve more than one area, so engineers investigate the code, the data, and the infrastructure to determine where the problem began.
The mental model to remember
The three nouns of a software system are:
Code: the instructions that describe what the system should do.
Data: the information the system receives, stores, changes, and produces.
Infrastructure: the computing environment that allows the code to run and the data to be stored and moved.
Return to these three ideas whenever a technical system feels complicated. Ask yourself:
- What is the code being instructed to do?
- What data is it working with?
- What infrastructure allows the system to operate?
Instagram suddenly loses every photo ever uploaded, but the app itself still opens and works. Which noun took the hit?
▼ answer the check to continue ▼