Cooking patterns

I started cooking not a long time ago. I was enthusiastic, though, and thought that I made serious progress in just a few years. My workflow consisted of buying cookbooks, glancing through them while searching for pictures that looked appealing, and following the steps outlined in the recipe.

Only after a few years of this kind of cooking I realised that my workflow had a serious flaw in it: take the recipe books away, and my cooking talents are worth nothing. This was definitely not where I wanted to be, therefore I started to look for a solution. As I had no connections with good home cooks or chefs, the books were the first place I started to look at.

You could classify most existing books on cooking into two classes: a) cookbooks and b) cooking theory.

Cookbooks are basically sets of recipes that are connected by a single theme, for example their author or place of collection (most celebrity chef cookbooks, for example Never Trust A Skinny Italian Chef by Massimo Bottura, or The French Laundry Cookbook, origin, ingredients used in the recipes. If I were to learn how to cook using this kind of books, I would be supposed to memorise as many recipes as I possibly could, and then, with level, to mix some concepts of those recipes to create new dishes.

On the other side, the cooking theory section consists mostly of textbooks used at culinary institutions, for example The Professional Chef from Culinary Institute of America. These books normally walk you through culinary techniques before giving you a bunch of classic recipes you are supposed to make in the classroom. I am not studying Culinary Arts, so my classroom had to be my home kitchen, which obviously lacked equipment, ingredients, and experienced advice.

After exploring these two possible paths, I’ve understood that neither of them could bring the desired results.

 Software design inspiration

If you take a look at Software Design books like this one you can notice the following definition of design patterns:

A design pattern is a general reusable solution to a commonly occurring problem within a given context in software design.

The benefits of using such patterns are an increase in the development speed and improved quality of the final application, and these benefits are achieved by adding one or more layers of abstraction between the problem and the solution.

Back to cooking, we could view the recipe as a problem we need to solve. Then cooking techniques could be perceived as actions we can perform on an ingredient, therefore mutating some of its properties. For example, roasting a carrot will make the carrot a) hot, b) softer in texture, c) darker in colour.

So what do we get if we assemble a sequence of actions on a list of ingredients?

 Introducing cooking patterns

A recipe is basically a fixed set of actions and ingredients, while cooking techniques are just the possible actions. If we invent cooking patterns – an abstraction on top of each ingredient / action pair – we could have more understanding of the dish we are preparing while keeping the flexibility in ingredient and technique choice.

Let’s take fritters as an example. Wikipedia says the following:

Fritter is a name applied to a wide variety of fried foods, usually consisting of a portion of batter or breading which has been filled with bits of meat, seafood, fruit, or other ingredients.

A pattern in its most obvious form. Notice the “wide variety”, a fixed ingredient (batter) and a list of possible variables (meat, seafood, vegetables, fruit) that could influence the fritters you end up making. A couple of famous implementations of this pattern could include:

 Benefits of using patterns

As we said above, using patterns in cooking allows you to prepare great dishes without having to design them from scratch but keeping the flexibility in ingredient and technique choice. And here is why this is a big deal:

 Examples of patterns


The soup is a pattern. Basically, you simmer vegetables in stock, and then serve both the vegetables and the stock together, topped up with spices or additional ingredientes. We all know that it’s great as a starter. The soup can be served hot in winter and cold in summer, for example. Concrete implementations by Jamie Oliver, Yotam Ottolenghi, David Tanis (with slight variation in technique).

You see? Make one soup, and you’ll know how to make almost all of them.


The salad is a pattern, too. For me, a perfect salad is a combination of a soft green (butterhead lettuce, for instance), a crunchy vegetable or fruit (carrots, apples), a protein (cooked chicken breast or smoked salmon), a topping (walnuts, pumpkin seeds) and a vinaigrette (lemon and olive oil, or balsamic vinegar and sunflower oil). Concrete implementations: Aran Goyoaga, David Tanis, Jessica Merchant.

Notice how vinaigrette is a pattern in itself. Pattern nesting, yay!


Another delicious pattern. A great cheesecake is made by filling a fine crust with a sweet cheese mixture and topping it with cream or fruit. Concrete implementations: Jessica Merchant, Martha Stewart, Tyler Florence.

 Open source pattern collection

I started a Github repository with the cooking patterns discussed here. I also intend to generalise all my cooking knowledge into a list of similar entries and open them up for public contributions.

In my opinion, maintaining a list of such patterns could help the beginners start learning how to cook, and could benefit the professionals as a way to give a system to their cooking experience. Please feel free to submit a pull request with your entries, we could try to grow this into a nice little cooking library.

Thanks to Josep M. Bach, also known as @txustice, for reading a draft of this.


Now read this

Labour division

Let’s consider some end users of a government. There are two major categories of them: individuals and organisations. Most commonly these two groups have opposite interests. An obvious example would be the two parts’ opinion on a country... Continue →