Web Development Explained by Trying to Run a Restaurant

If you have ever visited a restaurant, then you can understand the different types of “programming” within web development.

I have something pretty embarrassing to admit: in 2014, I started a company with a technical partner. The product was a free web application.

Here’s the catch: I had NO IDEA what web development really meant.

Like, if someone said that they were a “web developer”, I knew that they built web applications, but that is it.

I figured that my partner would be able to take care of “all the technical stuff”. (Side note: when your company is just composed of 2 people, it rarely works out that way)

To me, programming was just writing lines of code in different languages.

Fast forward 5 years: I know quite a bit about web development and programming now!

But, I came across this thread on dev.to that asked the very simple question “What are your favorite analogies to explain programming?” and I felt like all of the explanations fell a little short.

A lot of people feel that programming in a specific language (JavaScript, Python) is like communicating via any other language- Spanish, German, English etc.

One person transcribes their instructions or thoughts, and another person (or a compiler) reads the code and interprets it.

Here’s the biggest problem with this explanation: in web development, a specific snippet of code always exists within a larger context with other languages.

For example, on the front-end, you have HTML, CSS and JavaScript. On the server-side, there is Python, C++ and many more. And, when you create a database, you will need SQL another similar language.

Which one of these counts as “programming”? A strict interpretation would lead us to believe that only server-side code is “programming”. But I personally believe that all 3 (front-end, server-side and database) count as programming.

This is where web development no longer resembles a set of three traditional languages.

How can three different “languages” work together to create a larger project? I have never seen that in the real, physical world. I have only seen that in the world of web development.

But this is also the best part of web development! When you understand those three languages, you can customize pretty much any part of a web application.

Instead, let’s look at programming languages as a set of procedures to run a specific type of operation in a restaurant.

So, imagine that you are in charge of running a restaurant. You need to create three levels of procedures to successfully operate the restaurant. This tutorial will show you how this compares to coordinating three different languages in web development.

What Is Web Development?

You are the manager of Restaurant Americano. In order to successfully operate the restaurant, there are really three teams that need to work together:

  1. The waitstaff that serves customers
  2. The cooking staff, which prepare the food
  3. The purchasing/operations team, which manages inventory and makes sure the kitchen is well-stocked and well-equipped

Think of this as the “three layers to a restaurant”. The waitstaff is the top layer, while the operations team is the bottom layer.

Each team has specialized skills, and operates as an independent team. But, they must work with the other teams to succeed.

In fact, starting with the customer, you could represent their relationships as a series of transactions:

Every single relationship has the same pattern: trading orders for food. But, each team operates VERY differently. Imagine switching the roles of the cooking staff and waitstaff? Disaster!

At the start, you might be involved in every operation at once: managing and directing each team to success. But as the restaurant continues to bring in customers, there is no way that you can continue to be involved in all three teams!

You need to start writing standard procedures for each team so that your team keeps producing great food without you!

There’s no point in writing up one massive set of procedures, and then requiring each team to understand all the procedures. Instead, each team should be accountable for their specific procedures, and trust that the other teams will also do their jobs correctly.

Now we can tie it back to web development. The different types of “programming” in web development allow you to create procedures that are specific to each part of a web application.

Here’s what it looks like:

  1. Front-end “programming languages” like HTML, CSS and JavaScript allow users to interact with your web app.
  2. Server-side languages like JavaScript, Python and Ruby allow you to build complex data structures and algorithms to provide value to users
  3. Database “languages” like SQL allow you to store and access persistent data

Each “language” can operate independently. But usually, it is used in combination with another language to build more powerful applications.

Best of all, the “languages” come with built-in methods to communicate with other languages. This is why I hesitate to call them “languages” and prefer to think of them as tools for writing procedures.

Each type of procedure assumes that the other procedures exist, and that they must be able to communicate in order to build the entire system.

Here’s one more comparison:

  1. The waitstaff determine what happens in the seating area for customers
  2. The cooking staff determine what happens in the kitchen
  3. The operations team determine the materials that are available to the restaurant


  1. Front-end technologies determine what should happen in the browser
  2. Back-end technologies determine what should happen on a web server
  3. Database technologies determine what should be stored in a database and made available for access

Get More Tutorials

After using this tutorial, you might also enjoy this separate guide to the difference between front-end and back-end in web development.

Or, sign up here to get the latest tutorials on HTML, CSS and JavaScript:

Success! You're on the list.

Leave a Reply