It took me quite some time to become aware of an amazing analogy that exists between the culinary art and the art of
computer programming.
Probably the most obvious comparison that comes to mind is that both the culinary specialist and the programmer
have similar ultimate goals: to feed. For a chef, it is the human being, for which plenty of raw ingredients are used to
provide edible nutrients as well as gastronomic pleasure, whereas for the programmer it is the microprocessor, for
which a number of different procedures are used to provide the code that not only needs to produce some meaningful
actions, but also needs to be delivered in the optimum form.
As much as this introductory comparison point may seem a bit far-fetched or even childish, the subsequent
comparison points are something that I find far more applicable and far more convincing.
The recipes and instructions for preparing dishes of all kinds are abundant and ubiquitous. Almost every popular
magazine has a culinary section dedicated to all kinds of foods, and all kind of food preparation scenarios, ranging
from quick-and-easy/last-minute recipes all the way to really elaborate ones, from ones focusing on nutrition tables
of ingredients to ones focusing on the delicate interplay between extraordinary, hard-to-find ingredients.
However, at the next level of expertise in the culinary art, the availability of resources drops exponentially.
The recipes and instructions for running the food business (volume production, running the restaurant, or catering
business), planning the quantities and rhythm of delivery for food preparation process, techniques and strategies
for optimizing the efficiency of food delivery, techniques for choosing the right ingredients, minimizing the decay of
stored ingredients—this kind of information is substantially more hard to find. Rightfully so, as these kinds of topics
delineate the difference between amateur cooking and the professional food business.
The situation with programming is quite similar.
The information about a vast variety of programming languages is readily available, through thousands of books,
magazines, articles, web forums, and blogs, ranging from the absolute beginner level all the way to the “prepare for
the Google programming interview” tips.