On Cooking for Developers


The inspiration for this post is the fact that I had the same conversation recently repeat with three different friends of mine in the tech industry, all in all very well-earning people, complaining that they have trouble making ends meet because takeout, delivery, and box diets have become so expensive. Upon my comment on why aren’t they cooking at home, they just replied with “I can’t cook,” and thought that settled the matter.

Unfortunately, I am not the kind of person that lets this kind of excuse slip. Being able to provide food for yourself is a very useful and fundamental skill, but for some reason our generation was not really taught it by our parents. I suppose they themselves didn’t know how to teach it, because they learned it by feel, growing up in a time when delivery services did not exist.

Fortunately, the trends in the culinary education worlds seem to be moving away from collections of recipes in books into lifestyle-centred cooking content delivered through richer channels (notably YouTube and short-form video platforms). YouTubers such as Mike Greenfield, Ethan Chlebowski, Andy Hearnden, and many others, are excellent at these kinds of slow-paced, lifestyle-oriented cooking videos, talking not just about ingredients and method but also various adjacent subjects such as organisation, clean-up, or grocery shopping.

Programmers and other remote workers are in the unique position of being able to easily cook at home, because most of us have more flexible schedules, and are at home for most of the day, so the convenience of eating out or ordering in is much diminished.

If you are the kind of person who tends to order DoorDash twice a day and has trouble making scrambled eggs, I hope that after reading this you will be inspired to try cooking for yourself.

Why cook on your own

There are many reasons why you should start cooking at home. I will begin with what I think is actually a bad one. The most common reason people start cooking at home is also the one most likely to make them quit: health. Some of my friends who tried to get into home cooking, did so because of counting calories in order to lose weight. I think counting your macros is the single best way to control your weight, but it is not an easy process if you don’t already know what you’re doing. There already are a lot of difficult skills that you need to acquire when learning to cook at home—to pile weighing and logging ingredients at the same time is just asking for trouble.

Cooking on your own is the only reasonable way to actually know what goes into your food so that you can count your macros, but it’s definitely something that you should start doing only when you’ve already mastered the basics. I definitely wouldn’t trouble myself with it just starting out.

Money

Controlling your spending on food is one of the best ways to save money, because groceries, fuel, and rent are things that rarely get cheaper and are hit by inflation the hardest, unlike consumer goods or tech gadgets. There is a common quip levelled by the older generation against millennials or zoomers that because we buy all the latest smartphones and computers, we never have any money. Thinking that one is frugal because he doesn’t spend money on tech gadgets is, however, a mirage.

It used to be that way, because things like TVs or computers used to be very expensive relative to salaries back in the day, and rent and food were cheaper. Now, living expenses are much worse relative to salaries, because most of the value created by technology was eaten up by the property market, while tech or consumer goods are relatively cheap.

Putting aside broader economic conditions, box diets are expensive in general—you’re mostly paying for perhaps a few minutes of saved time (because it still takes time to reheat five meals and take out more trash). I also can’t imagine getting your food delivered daily in five separate polystyrene containers is particularly great for the environment. Daily takeout is similarly ridiculously expensive compared to cooking your own meals from scratch.

Taste

Cooking at home, you get to tailor your own flavour profile and make dishes that cannot be ordered out, oftentimes as a result of constraint-borne creativity. Even the humble chicken and rice can be made a thousand different ways.

Unless you live in a large town, your takeaway options might be limited. Where I live, the best you can get within walking distance is poor kebab and mediocre pizza. The tastes that I discovered travelling are nowhere to be found in restaurants nearby. I once spent the winter in Crete, and got the opportunity to taste some of the Greek winter cooking—something of a hidden gem, since most people travel there during the warmer months—and since then I’ve incorporated techniques from that cuisine, adding warm spices like cloves and cinnamon to otherwise savoury dishes, stews or braises. These have since become my favourite dishes to prep around Christmas.

Once, when travelling in the Canary Islands, I made noodles with peanut butter, chicken, chestnuts, and pineapple, because that was what was at hand on a Sunday, when the shops were closed. It turned out surprisingly good, so much so that my wife remarked it was one of the best things she’d ever eaten, but there’s no way anyone anywhere would make it as a part of a restaurant menu.

Rotating your ingredients (more on it later) while cooking at home makes for more, not less, variety. Unless you live in an area in the top percentiles for restaurant variety, it’s likely you will eventually exhaust the menu options of the restaurants available to you. Rotating ingredients gives you a new meal every time, producing more distinct meals.

Fun

During the COVID years, cooking was one of the activities that I could do with my (not yet then) wife, and it definitely brought us closer and we had a lot of fun doing it.

If you are working remotely for most of the day, having a break in the middle of the day for an activity that occupies your full attention can be a very good way to reset—it’s much like playing an instrument. It’s important to remember that while modern kitchens are engineered for safety by centuries of trial and error, you are still in an inherently dangerous environment. Open fire, hot oil, sharp instruments, tight timings, information intake from all five senses—they all require undivided attention. Which is actually very nice if there’s a problem you’ve been stuck on and want to come back to it with a cool head.

Likewise, if you are working with your head for most of the day, having something manual to do is very satisfying—there are few things that compare to the pure delight of skilful slicing and chopping with a sharp knife.11The term “jinba ittai” comes to mind, though it’s not exactly applicable here.

Convenience

Going out to eat anything better than fast food often will take up more time than cooking the same thing at home. While in total, grocery shopping and pre-prep might take more time than having it already done by someone you’re paying for the service, at the end of the day we tend to value time more when it drags us away from something else (e.g. work).

It might take longer than ordering something in, but it’s unlikely to be worth it for the quality you sacrifice by eating lukewarm stuff that you got delivered.

Portability

Cooking at home doesn’t outsource your taste to your zip code. If you tie your taste preferences to the diversity of cuisines when you live in the city, if you ever get the urge to move to the suburbs or even further out, you will find your options greatly diminished.

Similarly, if you travel, and stay at a self-catered accommodation at a touristy spot with inflated prices, you might find it much cheaper to buy groceries and cook yourself, rather than eat out every day, for every meal, spending thousands to do it. Cooking skills (especially those that you started developing by working without any fancy equipment) work in any kitchen, in any country, on any budget.

Cooking from recipes

“Oh, you like to cook? Can you share your favourite recipes?”

If I had a dime for every time I heard this sequence of questions. Recipes are the doom of the home cook, and one would do best to completely disregard them as he is learning to cook at home. Yet, many who begin to learn look for “easy recipes,” and fail for reasons entirely unrelated to the cooking process itself.

The main problem with cooking from recipes is that you have things left over that you don’t know how to use. If you cook only once in a blue moon, when you get that urge that you should try getting better at it, it’s going to be more costly than going to a restaurant because you’re most likely going to have to invest in equipment or pantry staples that would otherwise be there if you were cooking every day.

Cooking from recipes doesn’t teach you ancillary skills like grocery shopping or managing your pantry and fridge. As such, if you cook, you are more likely to throw stuff out, because you haven’t learned how to incorporate things that you have into dishes that you will cook. For instance, if a recipe calls for a quarter head of cabbage, and you don’t know intuitively how to use up the rest of that cabbage, you will likely throw it out.

Using only recipes doesn’t teach you the value of thrifty grocery shopping. If you have an open mind about what you can cook, and know how to manage your food before it goes bad, you can take great advantage of clearance sales and deals.

Many recipes are also needlessly complicated in service of authenticity, which is the last thing a home cook needs. We often mistake authenticity for quality. Suppose a beginning home cook is looking to learn how to make carbonara. Does it make sense to throw the most authentic recipe at him first? Making carbonara the “authentic” way requires some complicated skills (emulsifying an egg-based sauce without scrambling it) and some exotic ingredients. The “authentic” recipe will most likely point the cook away from using cream or bacon, which make the dish far easier to cook while also not compromising that much on taste. Cooking traditional dishes from established cuisines exactly as stated in recipes is difficult, because recipe authors often make the assumptions that striving for authenticity is the paramount factor.

The alternative to collecting recipes is learning frameworks. Most of what a home cook makes reduces to maybe a dozen shapes—braises, soups, stir-fries, casseroles—and once you know the shape, the ingredients become very flexible. A recipe produces exactly one dish and fails when you’re missing one ingredient, while a framework multiplies everything that is in your fridge. This is what the creators I mentioned at the beginning are teaching, whether they call it that or not.

The way to make a framework your own is repetition, which might sound contradictory to what I said before about variety, but it isn’t. Much like many learn programming by repeatedly implementing code katas—writing the same kind of program over and over again—you can change one thing at a time while cooking the same framework and understand what the result becomes. Three or four times and you stop needing to look anything up.

Repetition is also how you pick up a skill that is impossible to learn otherwise: tasting as you go.22A common complaint among beginner recipe cooks is “why doesn’t the recipe tell me to cook for exactly 17 minutes and 34 seconds, instead just using vague, subjective descriptors like ‘golden-brown’ or ‘medium heat’?” Once you know what’s going on, that’s obvious, but it’s hard to explain. If you’re just following instructions and taste the dish once it’s already plated, nothing can be fixed. We have a name for that: testing in production. If you taste a couple of times during the cook you can dial in specific parts of the flavour profile easily with common kitchen staples.

Why more people should cook

Developers and other remote professionals should really cook more, because the fact that you’re at home all day is the biggest advantage you have that people who commute to the office don’t. What I’m noting here today is a simple, composable food framework that you can adjust to your needs if your constraints are the same as mine.

By not cooking from recipes you move from following instructions to understanding the system. Cooking from recipes (or worse, prompting AI for them) is outsourcing your thinking to a third party, like a junior copying from Stack Overflow or a cognitively surrendered cog pulling the handle on the slop machine. By knowing the mechanics of cooking, and the content of your pantry and fridge, you start moving in the system by feel.

You might find inauthentic things more to your taste. No Italian restaurant worth its Google Maps reviews will serve carbonara with cream, but you might prefer it that way. It’s the same trap as cargo-culting “best practices” in software. You’re doing the canonical thing because it’s canonical, not because the outcome is better for it.33The history of carbonara is quite short and turbulent, though I suspect the entire “it tastes better without cream” was post-hoc rationalisation. The historical record is unkind to the purists here. The first printed recipe for carbonara appeared in 1952, in Chicago. The first Italian one, from 1954, called for pancetta, Gruyère, and garlic. The 1960 cookbook that canonised guanciale also called for cream, which stayed in respectable Italian recipes until the end of the 1980s. The cream-free orthodoxy only settled in the 1990s, which makes “authentic” carbonara roughly the same age as JavaScript. Purism is a poor substitute for judgement.

A dish is finished in a way software rarely is. If software is the only thing that you make, you might never get the gratification of finishing the job. Software is increasingly abstract, intangible, never finished, and past a certain point of system growth you don’t get to hold the entire thing in your head. Cooking, by contrast, is done by a single person, with the entire context of the situation in his head, and hands you the finished object in half an hour, made, served, eaten, done. For those of us who work with never-empty backlogs of intangibles, the satisfaction can be almost cathartic.

My system

By now I hope to have you convinced that you should at least try cooking at home. The setup was much longer than the punchline will be, because most likely your situation is different than mine, and there are creators on the internet that do a much better job of explaining how to create a home cooking system that works for you. I’ll just say what works for me.

The first thing you need to understand about cooking at home is what constraints you have. For some people this might be money, for others it might be time, for others still it might be space or portability; there are a lot of ways you might be constrained, and all of them influence how you’re going to cook.

For me, the entire thing is pretty simple:

  • I don’t eat breakfast in the traditional sense, usually will just have a coffee, sometimes with a piece of fruit.
  • I have a 30-minute break each day around noon that I usually spend on cooking lunch for myself and the rest of the family, which is typically the biggest meal of the day.44Unlike the English-speaking world which typically has two small meals during the day (breakfast and lunch) with the largest one being in the evening (dinner), in Poland it is customary to have the midday meal be the largest, followed by an optional afternoon tea and a lighter meal in the evening. The names are confusing: I grew up learning that the large midday meal, called “obiad” in Polish, is in English called “dinner,” which is consistent with history, however with the changing working schedules, change in eating habits followed, and thus calling it “lunch” makes more sense. Likewise, the proper name for what in Poland is called “kolacja” is “supper,” but that has been almost entirely supplanted by the late meal the English call “dinner.”
  • In the evening I typically eat a small dinner, which consists of what Americans consider breakfast foods (eggs, sausage, sandwich, tea).
  • I don’t eat meat on Fridays.
  • I go grocery shopping twice a week.

That is really it; most of the complexity is focused around the daily lunch, which I try to cook approximately from scratch. This is accomplished in two ways.

The first one is partial meal prep, which I usually do on Sunday. This consists of braising a big piece of meat and prepping a few sides that refrigerate or freeze well, usually par-cooked vegetables, caramelised onions, refried beans—basically anything that takes time to make, but is easy to incorporate into something I’m cooking on a weekday. An alternative to this might be prepping a big pot of ragù or other kind of stew.

The second one is cooking on the day, rather than reheating things, which typically consists of cooking carbs (pasta, noodles, or reheated flatbread are quick; rice or kasha take more time but doing it in a rice cooker doesn’t require supervision), adding some vegetables, and generally using up things that are already in the fridge or in the pantry.

A useful strategy here is something I call ingredient stacking—which means something that is a full meal on one day becomes a component another day. The braised meat on Sunday is the best example. Sunday afternoon it is the centrepiece, served with potatoes and a slaw. Monday, it gets put into pulled pork sandwiches, and on Tuesday the last of it pads out fried rice, along with whatever vegetables need using up. A tray of roasted carrots is a side dish one day and on another, blended with the leftover braising liquid, becomes a soup. Most days’ lunch is put together from components that already exist, plus one thing made fresh.

A system like this has to have some slack built in. Missing a day is not a big deal. I keep frozen or canned vegetables around to pad out a meal when there isn’t an opportunity to make something fresh. Using something store-bought is not a crime. Pasta sauce from a jar with whatever’s in the rotation is still a decent lunch. The same goes for finishing a dish: I typically have a few condiments on hand to fix taste or texture at the end, with Kewpie mayo and sriracha being the ultimate mediocrity destroyers. Restaurants do a similar thing, but they normally don’t tell you.

My favourite of these are “flavour cubes”: chopped garlic and ginger packed into an ice-cube tray, covered with olive oil, and frozen, so that a weekday lunch starts by dropping one of them into a pan with all the aromatic goodness.

Cooking, fortunately, is a forgiving craft. To make something actually inedible requires active negligence. It’s not like baking, where you might follow every instruction carefully and still pull a disappointment out of the oven. On the stove you can taste and adjust, and rescue almost anything before it reaches the plate. A mediocre pot of stew is still lunch, and the distance between mediocre and good is usually just a few attempts.

The payoff, a few months in, is not very dramatic. Food stops being a daily decision and becomes something closer to household maintenance, on par with brushing your teeth. There will still be lazy days, and store-bought sauce exists for them. But at some point “I can’t cook” stops being true, and you will struggle to remember how life was before that time.