Lessons from the Kitchen
Tags: design, ethics
Published: 2019-06-01 06:41:17

---
title: Lessons from the Kitchen
published: True
description: A few parallels between professional cooking and making software
tags: Design, Ethics
---

# Lessons from the Kitchen

I've spent the last few years working in the kitchen, both in restaurants and private catering in people's homes. I've learned a lot from the industry, and there are some useful lessons when it comes to how we approach software.

A lot of this is about the design and implementation of software. As the first point will emphasise, there's nothing about programming itself in this!

It's also easy to think that this stuff should is the responsibility of the designers, product managers. But as programmers, we all contribute to the product, how it functions and how people experience it. Anyone even vaguely familiar with Mike Monteiro will know that we're all complicit if we work to put out bad software.

## People don't care about methods and techniques, they care about the end result

Restaurant food in particular tends to use a lot of techniques that don't tend to be used in the home kitchen. Some of it's about the quantities of food being cooked, some of it is about the nature of handling a service, and some of it's just about the cost of equipment.

Here's the thing; almost none of the people dining in restaurants care about whether something has been cooked sous vide, or whether it's been frozen using liquid nitrogen. They care about how the food tastes. Is it delicious? Is everything cooked well? The end result is all that matters.

As an extreme case, Massimo Bottura, who runs the current best restaurant in the world (Osteria Franchescana), has observed that it's  not uncommon for people to come to dine there and not even open the menu. They just tell the waiting staff that they want the complete experience. The techniques he employs are irrelevant, it's about the pure, visceral experience he provides.

With software, the end user isn't going to care about the innovative technique you used to optimise your database. But they are going to care about the fact that the software they are using loads as quickly as possible. I absolutely understand the desire to use all the new and exciting tools that are available. It's a lot of fun to use new things, and I'm a complete sucker for quality tools in any environment (you should see some of my cooking knives). But in any decision on what to use, it's important to also be factoring in whether that option is relevant to the needs and wants of the people using the software.

## You need to take care of the edge cases (allergies, visual impairments)

The vast majority of people that come into a restaurant have zero allergies. The people that do come in with a food issue are some of the highest priorities in the industry. For the very simple reason that if you screw up their dish, you can in some cases run the risk of killing them! It might sound extreme, but for someone with a severe nut allergy for example, the threat is very real.

For the most part, when we make software, it's highly unlikely that we're going to actually lead to people dying. But the edge cases are still important. Making your site accessible to the full range of visual impairments should by now be absolutely standard procedure. It's also important to consider more than just things like how a website interacts with a screen reader. People with severe dyslexia often struggle with black text on a white background for example. They'll find things a lot easier when there's a coloured tint to the background. People with ADHD will find it very difficult to get what they need from a very busy site full of distractions. It's one of the reasons why it's super important to build diverse teams and learn about accessibility from as many different people as possible. We simply cannot properly understand all the issues people have interacting with our software on our own. ESPECIALLY IF YOU'RE A WHITE MALE LIKE ME!

Compliance with the law is often the route one has to take to get senior management etc. to take such concerns seriously. But you should do it regardless, because it's about simply being a decent human being.

## Authenticity is important

Consider the following two menu items:

Pork belly with apple sauce
Locally produced rare-breed pork belly with heirloom apple sauce

The second option sounds far more appealing, because it speaks of authenticity, quality and what the French would refer to as a sense of "terroire". Now in software, the notion of a heritage product doesn't make a lot of sense. But that notion of honesty and integrity to a product does translate, and strongly. The prevalence of negative and destructive techniques to drive engagement, be they anti-patterns of sensationalised headlines, is being so destructive in many areas.

Again, it comes back to being a decent human being. Not tricking or trapping people, but building something with integrity on its own merits.