🍳 🍲 Cooking for devs - a creative counterweight
Tags: watercooler, tutorial, tips, motivation
Published: 2021-01-11 13:36:02

> Our day is dominated by logic. By numbers. By stakeholder needs. By failing tests and builds. By things that feel like they're out of our control.

Ok, that was a little exaggerated and dark. But let's face it: Most creativity we developers get to show is pretty logic-heavy and most of the time it needs to fulfill a certain purpose. It is creativity, don't get me wrong, but it's less artsy than, say, writing a poem or painting.

A healthy work life balance profits a lot from hobbies and "using your other brain half" every once in a while. Cooking might just be the hobby you're looking for: A wonderful,  healthy and creative counterweight to your everyday life.

This post aims to be a helpful guide for software developers who want to start cooking at home. I think publishing some non-technical content every now and then also doesn't hurt. 😀

# Getting started: Plan ahead 📅

So, maybe you don't want to go the grocery store every single day, especially during the pandemic. Perhaps you don't want to think about what to eat every evening. I get you, it can start to feel like a chore and this can outweigh the pleasure of a nice home cooked meal pretty fast.

Create a menu plan. Just like the ones you see in staff canteens every now and then. It could look something like this:

![A table containing all weekdays as rows and "Breakfast", "Lunch" and "Dinner" as columns.](https://dev-to-uploads.s3.amazonaws.com/i/5whzq2vr8llep2gpcxxr.png)

At home, we drew one of those on a large sheet of paper and attached it to the fridge. The meals are written on sticky notes, so we can rearrange and reuse them. (Why not create a web app with some recipe API integration, by the way?) Instead of just buying whatever we like, planning ahead helps to cook more healthy stuff and reduce food waste. Make sure you have a sticky note or two that read "Leftovers" and plan them after larger meals or for lunch. You can try doing vegan/vegetarian days, too, or hold an "international week" with meals from all over the world. (Or add a sticky that says "Order food" to treat yourself after a long week.) You see: Your creativity can unfold during the planning already.

Most important for me: My favorite dish gives me something to look forward to during the week.

# Finding the right meals 🥣

There's a bunch of really good websites with loads of recipes. Lots of them also have pretty active communities where they share their favorite dish or give helpful advice!  At some point you'll develop a set of go-to meals you can chose from, but it's important to try some new stuff, too: You'll improve your skills and get to be more creative. 

Some websites also offer functions to find recipes that contain leftover ingredients (Think: "I got half a cucumber, half an onion and 2 tablespoons of cream left - what could I do with this?")

A further source of inspiration could be local restaurants: Go to their website, have a look at their menus. Is there something you'd like to try cooking at home?

Together with the plan I think of this as a **framework**: There's a lot of problems already solved (the go-to meals, past plans I'd like to repeat, prepared grocery lists) and I can develop a plan within a reasonable amount of time. This plan is a guidance on what to cook for the following seven days. And: recipes are basically open source!

# Grocery shopping: Substitute and adapt 🛒

Once the planning is done, you need to acquire the ingredients. There's certain things you really don't need much of, but are often only available in large quantities. Cream cheese for example. Maybe your plan was to cook two meals that both need different kinds of cream cheese? Substitute and only buy one. You'll reduce waste and save money, too. 

It's really just an optimization problem: How can you adapt the recipes you planned to cook, so you only need to buy a minimum and throw away as little as possible? Which veggies that you don't like can you substitute with others? Chances are you'll find recipes that sound amazing, if it wasn't for some ingredient you absolutely hate. Remove it or replace it, it's up to you. Write down your adapted recipes and create your own recipe book.

# Getting into the action: The actual cooking 🚀

Ok, time to get started. But what step should you start with? Again, this is mostly an optimization problem. Which tasks can be done in parallel to save time? For example: "Preheat oven" - do that first. The sauce you're preparing for the spaghetti doesn't take much longer than the spaghetti? Cut the ingredients while the water is heating, start the sauce and spaghetti at the same time, etc.

It's important to develop a plan. Almost all recipes will have a detailed step-by-step guide on what to do first, but those can also be optimized sometimes. You'll likely develop a feeling for that.

Also: Don't forget to test your meal! **Unit tests** (Or as I call them: Quality control of the ingredients. Ahem.), **integration tests** (How does the sauce taste _right now_? Does it need a tad more salt?), **acceptance tests** (do I like the outcome?) and, of course, **end to end tests** (did I like the experience of cooking this meal and does it taste well? Am I full or was it too little?) Maybe also add **A/B testing** (what does it taste like if I replace ingredient A with B the next time?)

# Summary and takeaway thoughts 🥧

So, here's a list of my tips for developers who want to start cooking at home:

 * **Plan ahead and keep the plan handy:** This helps to reduce shopping overhead and concentrates all the brain work into a single session. It also helps to reduce food waste and gives you things to look forward to.
 * **Develop a set of go-to meals that are fast and delicious:** Having those will speed up the planning process. If you don't want to cook tonight, prepare one of those instead.
 * **Have leftovers for lunch:** Helps you save time and reduces food waste. If it was delicious yesterday, it most certainly still is today!
 * **Adapt recipes to fit your grocery list:** You'll carry less and get rid of stuff you don't like, can't find or only get in large quantities.
 * **Test your applica... err, your dish:** Tasting and reflecting your dish will help you improve your skills and make it even tastier the next time. Or you'll never prepare that dish again because acceptance tests failed.
 * **Optimize grocery shopping and cooking**: Save some valuable time by trying to optimize processes and doing things in parallel. Your skills will improve and you'll be quicker and quicker.

Cooking helped me a lot to cope with the entire stay-at-home thing. My kitchen became a place of creativity and joy. I love that we started planning ahead, it helped to reduce overhead and became kind-of a ritual. I absolutely recommend trying this!

---

*I hope you enjoyed reading this article as much as I enjoyed writing it! If so, leave a* ❤️ *or a* 🦄*! I write tech articles in my free time and like to drink coffee every once in a while.*

*If you want to support my efforts, please consider* [*buying me a coffee* ☕](http://buymeacoffee.com/pthormeier) *or* [*follow me on Twitter* 🐦](https://twitter.com/pthormeier)*!*

[![Buy me a coffee button](https://dev-to-uploads.s3.amazonaws.com/i/x55hp6jopwyy161d8e2u.png)](http://buymeacoffee.com/pthormeier)