I was browsing Gretchen Rubin’s Happiness Project (highly recommended reading) when I came across this post. Like Gretchen, I had not heard the term mise en place before, even though I’ve always practiced this method when cooking.
mise en place (pronounced MEEZ ahn plahs) is a French culinary term which literally means “setting in place”, or more figuratively as “everything in its place”. Mise en place means you have everything ready before starting the actual cooking process. Recipes are completely read and reviewed to check for the necessary ingredients and equipment. Ingredients are fetched, measured out, washed, chopped and placed in individual bowls. Equipment and surfaces are cleaned and readied for use and ovens are preheated.
However, mise en place is more than just a culinary term for preparation; it is a concept or a state-of-mind that when applied, results in a smooth-flowing, efficient cooking process. It is especially beneficial when preparing multiple dishes. It is a clearing of the mind of all but the central task. It is preparing your environment for ‘flow’, that zen-like state of mind when all that is thought about is the task in hand and all that surrounds us melts into nothingness, whether it be returning a 200+ kph tennis serve, computing a definite integral, writing complex code or any procedure that requires pure concentration.
Mise en place involves several steps which will ensure a smooth and enjoyable cooking experience:
- Read the entire recipe. Determine which ingredients and equipment you will need and have on hand.
- Prepare the workspace. Start with a clean kitchen and remove unnecessary items from work surfaces. Preheat the oven, prepare pans, boil water, etc
- Do the work: Peel, chop, slice, dice, grate; pre-measure ingredients and put into individual bowls.
- Follow the recipe and create your dish.
- Clean up as you go.
Mitch Denny recently posted an article where he compares software development to food, Food as a metaphor for the software development process. Not wishing to leave this topic under-cooked, I decided to fire up the deep fat fryers…
Can ‘mis en place’ be applied to designing and writing software? We often rush to start coding too soon, without sufficient requirements or enough design. To paraphrase an old proverb “Design Twice, Code Once”.
Taking one or two liberties and borrowing heavily from “Object-Oriented Analysis and Design”:
- Gather requirements. Talk to customers/users. Produce a feature list. Talk to the development team and make sure they understand what you are trying to achieve.
- Create use case diagrams. Create use cases. Verify your requirements against use cases. Perform a domain analysis.
- Break up the problem. Look for places where you can apply OO design principles.
- Determine your architecture. Focus on one feature at a time to reduce risk in your project. Start coding.
- Write unit tests and refactor as you go (Look for places where you can apply OO design principles).
Working easily and well is satisfying. Mise en place can help to achieve that state of flow.