allos.dev logo

14 Aug 2025 ~ 5 min read

Learning To Program Like Learning To Cook


Learning To Program, Like Learning To Cook

It’s really not that difficult to learn to program. It’s very similar to learning to cook food. Allow me to explain.

When you start out with cooking, you follow the recipe exactly as it is, so the meal will taste right.
If you only ever follow recipes, you will remain a cook (someone who heats up ingredients): you will never become a chef.

However, if you apply yourself, learn the tools and look closely at what the ingredients do in each recipe then you may transform into a chef.

If you study what you’re doing with those recipes, then along the way, you learn incidental things like:

  1. How to measure ingredients out properly (using teaspoons, cups, etc.)
  2. How to use spices (what various spices taste like, how strong they are, how they enhance the dish)
  3. How ingredients are mixed properly
  4. Understanding of how ingredients change when heat is applied to them
  5. How various tools (mixers, graters, knives, etc.) work and help you

Transforming From A Cook Into A Chef

At first, you are just a cook. You must follow the directions closely and if it is a good recipe you cook up a good meal that people enjoy eating.

A Cook Must Make Many Recipes

But as you go, if you cook a lot of recipes, you will begin to learn your own way of doing things. Gradually, you will no longer have to strictly follow the recipes. If you cook enough recipes you’ll eventually have no need to look at the recipes. You’ll understand why dishes taste the way they do and you’ll understand things you can substitute for ingredients.
As the old saying goes, first you must learn the rules, then you can break them. It’s true for every great endeavor.

Finally, you’ll add your own style to various dishes, adding spices that the recipes have never suggested. At this point, you will probably begin to have your own custom recipes. That’s when you’ll transform into a Chef. And, yet, there will still be things to learn. There always will be, because cooking food is an unlimited endeavor.

Beginners Need Great Recipes

For this style of learning to work however, you must do two things:

  1. Find great recipes to learn from (learn the basic foundations)
  2. Cook up new challenging recipes as often as possible (do the work)

A Recipe Is Only The Sum of Its Parts

A very important point is that to learn to cook well, you would never just use the ingredients in isolation from each other. You would never just mix up spices without applying them to some dish. You wouldn’t do that because the individual parts of the recipe are not the dish. It is only when all of the parts are put together that you get the edible, delicious dish.

Learning To Program Is Like Cooking

Learning to program is the same. To really learn you must bring all the parts together to create an application (a software solution). Unfortunately, the most common way that books, university classes, tutorials, etc. have taught programming: teaching the parts in isolation.

These sources teach you how to set the value of a variable, write an if statement, a for loop, teach you the syntax of the programming language, etc. but they fail to take you through the steps of building a valuable software solution.

Unique Learning Proposition

That’s my ULP (Unique Learning Proposition) for this book: we will build a complete application which solves an interesting problem. Along the way we will learn a lot of things.

Let’s take a look at the app we will create and the things you will learn. Then, after that I’ll explain a bit more about why writing a complete software solution is a better way to learn programming.

Write A Complete App, Learn A Lot of Technologies

Here’s a snapshot of the application we’ll build as we progress through this book.
All of the source code from this app is FOSS (Free & Open Source Software) which you can use and change in whatever way that helps you.

**Caption**: Snapshot of DiscoProcs (Discover Processes) running on my Ubuntu 24.04 Linux desktop running KDE Plasma (desktop manager).

Start Reading My FREE Book Now

If you’re ready to start, you can read the first chapter right now at: https://allos.dev/blog/wcpa_chpt1


Headshot of Maxi Ferreira

Hi, I'm Roger. I'm a software developer based in Dayton, Ohio. You can follow me on LinkedIn or Twitter, see some of my work on GitHub, or read more about my Open Source password manager (and try it out at C'YaPass web). C'YaPass doesn't store your passwords anywhere (it generates them every time).