I never really understood cooking properly until I learned about what the French call “mise en place”. It means literally, “putting in place”. It’s the process of gathering everything for cooking before the actual cooking happens.
With mise en place, the recipes to be made are reviewed, and ingredients are measured out. Vegetables, spices, and meats are washed and chopped, arranged to be used. The equipment to be used is heated, and the chef prepares for the process of cooking.
This process allows cooks to focus their minds on cooking once everything has been set. Everything comes out in logical steps, and cooking becomes merely the process of following the ingredients.
So why doesn’t mise en place happen with every meal cooked?
Because our minds think we’re smarter than that. They trick us into believing the process of preparing our ingredients and getting ready for proper work is a waste of energy. That we should instead just get on with the cooking, and forget about the ritual surrounding proper cooking.
These shortcut meals never end up working properly. Inevitably, I’ve forgotten something in my process, and have an oh shit moment. Then I change things and realize the meal now needs saving. The process of trying to save the meal usually ends up ruining it.
Mise en place is really about something deeper, it’s about focusing on the process and slowing down. It’s a practical formula for introducing focus and quality in the preparation of food.
I’ve begun working towards a mise en place for my programming. A way to prepare myself for the process of producing code that functions, lasts, and does its job well. Work which stands with the absence of shortcuts. Work which just is quality.
Mise en Place for Programmers
The first change happens before I even sit down, or look at my computer. When I know I’m going to be coding, I put on my professional, coding outfit. This is khakis and a button down, with black socks and dress shoes.
It’s a signal to myself that serious work will be taking place shortly, and that my mind should begin to focus itself.
Next, I focus on my workspace. Before coding, I’ll completely clean off my coding area, until it’s immaculate, with just the things I’ll need for the coding session. Usually that’s a journal with a list of problems to tackle, a pen, and a mug of (decaf) coffee.
I’ll then go through my list, deciding which of the problems is most crucial for the goals I’ve set for the day. Once decided, I’m fully committed to finishing the problem before I get up again.
On my computer, an open Emacs window in fullscreen mode with org-mode in two windows to log my thought processes as I approach the problem. I enter the date into an org-mode window before I begin working, and then I open up a terminal and start up the virtualenv I’ll be working with. If I’m working with virtual machines, I boot them up.
I’ll also open up the documentation for what I’ll be working on.
When it’s time to work, the phone gets silenced, and I block off a chunk of time. The problem to be tackled must be done within the time frame, and running over time is not allowed.
As a reward for focused effort, I give myself time for a walk, and possibly a small snack.
In these patterns, I’m creating a ritual, a way for the process of coding and building something of quality to come through naturally. I want the world of my code surrounded in quality and focus.
If left alone, our minds begin to wander and look for shortcuts. We think we can get around the necessary work with just a little cheating. It can manifest as running a stop sign, leaving dirty dishes in the sink too long, or leaving an ugly hack in production code. Either way, the shortcuts end up biting us in the ass inevitably, and we wonder what we were thinking.
So make your bed and floss your teeth. Stop completely. Incorporate the process of quality into every aspect of your life. Your code will thank you.