I recently became a new parent, and one thing I've learned is that you have much less time in the day for essential tasks like cooking and cleaning. To help save time throughout the week, I started meal prepping.
If you’re not familiar, meal prepping involves preparing several meals ahead of time and portioning them out throughout the week. There are several benefits to meal prepping, like time savings and maintaining a healthy diet.
One day, as I was eating one of my meals, I wondered “how long ago did I cook this?” and “should I throw it away?”.
Being an agile software practitioner, I conflated each individual dish (like chicken, green beans, etc) to works in progress, also known as WIP. My mind told me to immediately reduce WIP and go with the approach with less WIP - cook a dish, finish the dish, and repeat.
So why do so many people continue to meal prep knowing that it can create a lot of WIP?
Why limit Work in Progress (WIP)?
In agile software development, having too much work in progress can be caused by a variety of reasons such as unplanned work and changing priorities. Having too much work in progress can result in bottlenecks, constant context-switching, and potential waste. Work that isn’t finished doesn’t provide value and prevents potential iteration based on user feedback.
You want to keep delivering value, getting feedback, and iterating to get the most value. Work in progress is always present in software delivery. It’s important to limit it with good team practices such as team working agreements, daily updates in standup, and team focus on long standing in-progress items.
How WIP relates to Meal Prepping
Meal Prepping involves making several dishes (like chicken, green beans, and roasted squash) and eating them over the course of the week. I see each one of these dishes as a piece of work. A lot of upfront work goes into them, but until they have delivered value (aka are eaten and out of the fridge), they are work in progress. Ordering delivery or visitors bringing over food introduces some unplanned impediments to finishing the meals.
Agile development emphasizes limiting WIP, however life isn’t so cut and dry and we need to further explore the benefits and tradeoffs of meal prepping.
- Constant context switching: Context switching here might actually be a good thing. Eating a little bit of each dish each meal, or having different options help prevent you from getting tired of the meals
- Bottlenecks: The bottleneck here could be that I can’t (or shouldn’t) start making new food until all of the food I’ve previously prepared is finished.
- Waste: Waste in meal prepping manifests itself mainly as inventory waste or overproduction. Food that isn’t eaten occupies space in the refrigerator, and throwing away the food that has spoiled eliminates the hard work put in, and leaves me with a lot of undelivered value.
- Prevents potential iteration: If large amounts of waste is being created, it prevents me from understanding how much I should plan for in the future.
In life and in software development, you’re always encountering trade offs and weighing the benefits and drawbacks. In agile software development, WIP may be creating unnecessary load on your team and prevent you from delivering value. Meanwhile meal prepping has helped me save time throughout the week while also ensuring that I always have something healthy to eat.
There’s a lot of upfront cost in cooking it all at once, and some of it might go to waste but ultimately it keeps food available in a time when I have no time to cook.
Start meal prepping like an agilist!
Oftentimes when you are approaching a problem, like having too much WIP, we immediately think “the Agile way is to limit/reduce WIP”. Next time this happens, consider your situation and the benefits and tradeoffs, and then apply practices in a way that makes sense to your team or situation.
Agile is not a one size fits all model, and as meal prepping shows sometimes things we often scorn like having too much WIP makes sense in the right situation.