This post is was originally written in 2018 and posted in my old blog. I thought the content was quite relevant today, so I decided to put it here and edited several things to make it easier to read (believe me, the original version is less thought out than I remembered it to be ).
Today I read this article in the Atlantic titled “The Why of Cooking”. At start, this article made me question myself on what it means to be able to cook. But it didn’t end there, as I read on and thought more about this topic I found a hazy analogy in my mental model about cooking and programming. Well I won’t deny that it probably stems from the bias created because of my day-to-day exposure to computer related works. So, if You will, please continue and let yourself be mislead by my thought.
What the article is really about
To be honest I don’t want to retell what the article is about since my interpretation and how I present it may make You lose interest in reading the whole article. But, for the sake of continuing my ramble please bear with it, and if you’re interested in learning to cook (in the context of really learning how to cook itself not only following certain recipe to produce a food) by all mean the article a good read. But for the TLDR version, in the article the author recounted his journey on finding a book, which he could read from the start to finish in order to learn how to cook. Not in a format where he could follow step by step and be able to present a meal. Nor an encyclopedia of references where he could learn part by part about certain element of cooking. But in the context of really understanding of why a cook need to do certain things or adding certain ingredients (thus the name of the article). This is what he calls meta-cookbook, or to quote the author himself “a book not about a certain cuisine or style of cooking, but about cooking itself”.
What I keep thinking inside my head
Could programming in the future become like cooking now? Well that’s a really broad thoughts to be honest. When I tried to elaborate more on this thought to myself there’s one thing that was bugging me. Can it be, that somewhere in the future people think about programming in terms of how we see cooking today. These were the scenario that was playing out in my mind to compare the analogy of cooking today with future programming.
What I Want to Cook
Maybe, just maybe, in the future we can craft our own program like how we follow a cooking’s recipe. For this part, especially if you are a critical thinker please reach out to me if you find this explanation quite cringey. Since, if I may justify myself, it is a hazy analogy with a not-so-thoughtful thought which I just need to let out. So, lets say You want to make an application which can track your spending by taking picture of your receipt and automatically use NLP to extract the type, value, and place where You spend it. Then remind You why You spend it by voice-recording the reason of spending.
To be able to achieve it You won’t need to know each of its’ ingredients deeply. You only need to know the ingredient needed, i.e.: Taking picture, giving description, Extracting information from text, Recording our voice, and save all of it into records. Each ingredients’ level of abstraction may not be equal. Since if we may compare to cooking, it is possible to cook an instant noodle and serve it together with rice and omelet, chips and some salad. Well it may become a food nightmare but it’s possible and some people actually do that (well, not to that extend, maybe).
The Recipe and Process
Then we need to cook those ingredient together, some ingredient may need to be chopped before we process it, some may need to be precooked, or maybe one of the ingredient is actually an instant component which you only need to pour in your stream of newest information. And to cook it together you need to have utensils which can process the ingredients. Because you want to make something quite mainstream, you may want to look for its recipe first on your grandma’s recipe book, then follow the instructions there to cook your application. While cooking you may test the application, by taking a piece of your application and experiencing it, if you find it too bland you can possibly add seasonings into it (feedback into the “utensils”) so that its taste will be well suited for You.
And after you are finished you may serve it to any possible platform. A plate, bowl, or a cup if you may. But remember some cooking may not be compatible with your platform (soup on a plate). And TA-DA~ your own application is served. You don’t really need to know what happened while you are boiling your ingredients, or how the taste will interact with each other when you add certain ingredients or spices. If you want to tweak it and dig deep into it, you can. But you need to learn the real cooking (or in this case the programming).
Well… At last You’ve got to eat your own cooking and save some money. Even though it may not be so tasty and the serving may not be so pleasant, it is still the fruit of your own work and labor so you can let yourself drown in the bliss.