Live data from Hacker News

Software Mise En Place

buttondown.email

1–10 of 85 posts

Re: Software Mise En Place

#2
To relate the practice of software engineering to cooking is very fruitful.

At least when it comes to a ssmall-ish feature.

For larger systems, the typical aechitecture/urbanism analogy is probably more suitable.

Nevertheless, I will reuse it in my teams.

Re: Software Mise En Place

#3
> You don’t start prepping one vegetable while another is already cooking.

I actually do that all the time - different ingredients have different densities and different cooking times, so it makes total sense to start cooking the harder ones while cutting the softer ones (e.g. when making a Minestrone soup). Or you want an onion/garlic/tomato base to break down before inserting other ingredients that should only cook shortly and retain their texture.

Re: Software Mise En Place

#5
There's one place where the analogy breaks down IMO:

In cooking, you usually know the recipe and have experience before preparing it for many people.

In programming, you often explore and create, trying out new things that you didn't know before.

Mise en place suggests that you know exactly what ingredients and tools you'll need and what to do with them.

Perhaps a woodworking workshop is a better analogy for the creative process:

You're trying out a lot, taking scrap pieces as dummy items to test on, create scaffolding and helper items to get where you want. But afterwards, you clean up the bench and service the tools.

To me, this kind of "explosion first, prune afterwards" process seems more natural/common?

Re: Software Mise En Place

#6

> You don’t start prepping one vegetable while another is already cooking. I actually do that all the time - different ingredients have different densities and different cooking times, so it makes total sense to start cooking the harder ones while cutting the softer ones (e.g. when making a Minestrone soup). Or you want an onion/garlic/tomato base to break down before inserting other ingredients that should only cook…

This so much. If I'm cooking at the end of a long workday, in my 2 m² kitchen, I won't give a fuck about mise en place

Re: Software Mise En Place

#7
I’ve recently started working on a non-trivially distributed system and boy this rings true for me! We’ve got limited facility for integration testing, so I’ve become increasingly fanatical about testing every piece I can in each component. Every bug I catch locally is a bug I don’t have to surface out in the cluster, and the feedback loop is much tighter.

“Test first” still feels like a bridge to far to me (my programming is usually more exploratory than that), but with the mis en place framework it’s easier to see why people might like it so much.

Re: Software Mise En Place

#8

There's one place where the analogy breaks down IMO: In cooking, you usually know the recipe and have experience before preparing it for many people. In programming, you often explore and create, trying out new things that you didn't know before. Mise en place suggests that you know exactly what ingredients and tools you'll need and what to do with them. Perhaps a woodworking workshop is a better analogy for the crea…

I've been getting into the early stages of developing a game concept, from the position of a near complete novice. My idea is very vague but I know enough of the elements to be able to break it down into numerous atomised technical challenges to be overcome, little things like making something move and emit a sound.

So far this approach seems to be working really well, I'm not getting overwhelmed or bogged down by trying to 'vertical slice' anything, and keeping the end goal very loosely defined means I can easily adopt new gameplay ideas as I come across them in the process of tinkering with the available tools and their interactions.

Once I've figured out all the individual challenges I can begin in earnest to craft the whole.

Re: Software Mise En Place

#9
I kind of like to think code itself could use this analogy.

If a piece of code combines data from three systems, then maybe first fetch it from each one (maybe in parallel), then "wash" it (check preconditions, normalize, etc.)

Then you hopefully have data which is ready for doing the core work without the code being muddled with fetching missing stuff and cleaning it.

I can obviously find counterexamples when it is not so easy but I think I can also find functions which unnecessarily mix fetching stuff, checking it and the core logic.

Re: Software Mise En Place

#10

> You don’t start prepping one vegetable while another is already cooking. I actually do that all the time - different ingredients have different densities and different cooking times, so it makes total sense to start cooking the harder ones while cutting the softer ones (e.g. when making a Minestrone soup). Or you want an onion/garlic/tomato base to break down before inserting other ingredients that should only cook…

The thing with that is you need to know what takes longer, and how long that longer is, beforehand. That comes from experience mostly. You will certainly screw it up several times before you get a feel for it.
Post reply on HN