I wrote this:
The Ingredients of Fine Web Apps.
Steve McConnell’s classic tome of software development opens with a discussion on the power of metaphors to create strong mental models of what software engineers do in order to guide our approach. He writes:
“Important developments often arise out of analogies. By comparing a topic you understand poorly to something similar you understand better, you can come up with insights that result in a better understanding of the less-familiar topic.”
He goes on to give examples of important scientific discoveries that were made on the back of realisations born outside of the field of interest.
I want to extend a bit of a metaphor today: I want to talk about a particular interest of mine: food, fine dining, eating at restaurants that have achieved high acclaim for their attention to detail, atmosphere and experience.
I’ve never worked in the food business, nor do I know many people who do. I draw all conclusions from my experience, which is that of constantly being blown backwards by the power of what can be done by taking simple ingredients, science, discipline and finesse to create experiences that transcend the sum of their parts.
It’s hard to overstate how much of a profound effect on me this particularly snobbish part of my personality has had. Eating at top restaurants, experiencing the work of top chefs: it has changed my whole outlook on everything I do, on what can be achieved by taking simple parts and putting them together with skill.
Glenn Vanderburg, Chief Scientist at Living Social, formerly InfoEther, has a wonderful presentation called “Real Software Engineering.” In it, he compares the practice and discipline of structural engineering to that of software engineering, attempting to fit the metaphor:
In physical engineering, “you have engineers, and they sit and produce designs and those designs are then handed to labourers who use the designs to go and build the finished product”
Taking that model, I might run with something like: “you have top chefs, and they sit and produce recipes and those recipes are then handed to sous chefs who use the recipes to go and build the finished dish”
Mr. Vanderburg continues:
“by analogy then if we want to view software development in the same way and try to learn from engineering disciplines about how we should build software let’s look at what the analogy looks like: we have software engineers and they produce a design which is then given to some labourers in their cubicles which produce the finished product” (that is source code)
It’s a fairly neat match.
But in his talk, Glenn takes an insight from a man named Jack Reeves in 1992, who claimed in his paper “What is Software Design” that the analogy is totally wrong: “it misses some fundamental things about software development”:
And so, the paradigm shifts a bit. Glen continues:
“The programmers are the engineers of software. The source code is not the finished artifact. Our customers are paying us to produce working software, not files of ascii text. In fact, that source code is the design of our software. What corresponds to the labourers? Compilers and language implementations. And the finished artifact is working solutions”
So, now that the engineering metaphor is flipped on its head a bit and I can paraphrase back to food:
Programmers are the chefs of software. The source code is not the finished artifact. Our customers are paying us to produce working software, experiences, interactions. In fact, that source code is the recipe of our software. What corresponds to the sous-chefs? Compilers and language implementations. And the finished artifact is working solutions.
Lovely. V8, Spidermonkey, Squirrelfish. The sous chefs of the internet kitchen.
First, a little background. Why the hell should I care about what chefs are doing? Why would I want to let them influence me at all?
Heston Blumenthal is one of the top chefs in the world. His restaurant “The Fat Duck” in Bray in England, has long been hailed amongst the top restaurants in the world. Over time, he has built up a repertoire of dishes that go beyond even what most of us imagine as creative cooking. Constructions such as “Snail Porridge”, “Bacon Ice Cream” “Hot and Iced Tea” (in the same glass) have mystified and delighted thousands of patrons.
“Sound of the Sea” is a dish he serves with an ipod inside a conch shell so that you can listen to the waves while you literally eat a food beach, constructed from various fish, a salty foam and “sand” made with tapioca and baby eels.
Novel as they sound, these dishes go way beyond novelty : taste, texture and ambiance are all carefully orchestrated to maximise the emotional experience of the dish.
Heston operates at a completely different level, and he exemplifies the notion of a consummate artisan: endless passion, relentless creativity, boundless imagination, tamed with discipline, focus and empathy, wrapped up in care, attention to detail and the utmost of finesse: tending toward perfection along every facet of what he produces.
Heston’s enthusiasm can be summed up as a hunger. He writes:
“I wanted to know everything that went into a top-quality meal, from the high standard of the produce and what it took to achieve that, to the subtle attention to detail that — invisibly but effectively — distinguished a great restaurant from a good one”
Perhaps that same hunger could be applied to what we do. Perhaps I could utter the same in my journey learning programming over the last ten years:
“I wanted to know everything that went into a top-quality APP, from the high standard of the SOFTWARE and what it took to achieve that, to the subtle attention to detail that — invisibly but effectively — distinguished great CODE from good”
One of the most inspiring things about Heston is that he is entirely self-taught. He toured France year after year in the 80s, soaking up the best experiences. He pored through classic texts and techniques, constantly fought to keep up with the latest and greatest in food preparation. It’s particularly inspiring for me: I have no academic training. Steve McConnell aludes to this: about 50,000 software developers enter the field each year, but only 35,000 software-related degrees are awarded.
Thomas Keller has been one of the luminaries in American cooking for decades. From his kitchen in Yountville, in Napa, have come alumni who are now world famous in their own right : Grant Achatz of Alinea in Chicago, René Redzepi of Noma in Copenhagen.
Keller is a bit like the Crockford of modern cuisine. He is a consummate professional, exuberant traditionalist, ardent perfectionist. His is widely regarded as the best classical French cuisine in the world today. For sheer tastiness, homeliness, and consistency, it’s hard to argue against his methods and his food.
Ferran Adria I know least about of the three figures I wanted to highlight specifically by name as inspiration for this talk. This is mainly because his restaurant, El Bulli in Spain, has been the most difficult restaurant in the world to get a reservation at, and at the end of this summer, it will close to become a full time institute dedicated to the advancement of culinary arts. Adria is hero to both Keller and Blumenthal. A wizard, a luminary, a modern day food genius.
For a long time, I’ve been fascinated by the notion of “the best”. Over time, I’ve come to accept that “the best” of anything only really applies to “the best right now for what I need”, but … but regardless, I love “best of” lists. I love the idea that a group of people would collectively get together out of mutual respect and say: hey, we know a bit about what we’re talking about: what are OUR favourites?
It’s one of those things that the web sort of, well, ruins. Giving everybody a voice doesn’t necessarily bring out the best : just the median, and the median is the median because by definition, it’s in the middle. I’m much more interested in the things that move people out of the ordinary, out of the middle of the road.
“Make no little plans. They have no magic to stir men’s blood and probably themselves will not be realized. Think big.”
One of the biggest thoughts for any top chef comes from “Guide Michelin.” The Michelin guide, a mysterious, highly secretive group of independent restaurant reviewers : still the gold standard for finding what they consider the best in dining around the world. The Michelin guide, and other guides such as the Gault Millau in France have moved some top chefs to dedicate their whole careers to the pursuit of perfection in dining. Some are moved to psychological breakdowns. Others to suicide.
Another list that draws massive hype and attention each year is the San Pellegrino Top 50 Restaurants in the World. Ranked by a select panel of writers, critics, restaurateurs and I guess people with that certain “Je ne sais quoi”, the Top 50 list ranks restaurants on the simple criterion of “how much did you enjoy the experience?” and will often contain restaurants with low or no stars : indeed, this year’s Number 1 for the second year running, Noma, has a mere 2 Michelin stars.
I have had the pleasure to dine at the hands of several of the modern masters of cuisine. Every time, I’m overwhelmed with what can be achieved with something so simple as food. I like the top 50 list because it ranks enjoyment as the most important aspect, and as a reference for great places to eat around the world, I’ve certainly enjoyed the places that it has led me to. Every year for the past few years, I’ve tried to eat at at least one or two from the top 5.
Dining at these places teaches me a lot about food and wine, sure. But I also learn a lot about life, about many things outside of just the experience itself.
What fascinates me is the cross over in how great ideas in food spread through experimentation and indeed, conferences : many of the top chefs in the world go to and build their profile at food conferences, just like we techies do with our ideas about how to move our community forward, and to learn from the best minds clustered together.
But greatness is often misunderstood, and leading a charge is often met with misunderstanding.
Jeff Bezos, last week:
“I believe if you don’t have that […willingness to be misunderstood…] in your […] culture, then you can’t do large-scale invention. You can do incremental invention, which is critically important for any company. But it is very difficult — if you are not willing to be misunderstood. People will misunderstand you.”
In 2006, Ferran Adria, Thomas Keller and Heston Blumenthal, the world leaders at the time in combining science and cooking, felt massively misunderstood.
As Blumenthal writes of the misunderstandings about where top chefs were going with their food inventions:
”[…] misunderstandings had bedevilled nouvelle cuisine. […] Gradually, it became packaged and watered down and appropriated by other chefs who hadn’t really grasped the principles behind it, and suddenly we were all eating kiwi fruit and squeaky green beans tied up with a chive off black octagonal plates”
To combat these misunderstandings, these chefs got together and published a statement in response to people focussing on the outcome of principles-based culinary invention, vs. the misunderstanding as novelty.
The document highlighted four points:
1) Three basic principles guide our cooking: Excellence, openness and integrity
“We are motivated above all by an aspiration to excellence. We wish to work with ingredients of the finest quality, and to realise the full potential of the food we choose to prepare, whether it is a single shot of espresso or a multi-course tasting menu”
“Today there are many fewer constraints [ … than in the past …] and tremendous potential for the progress of our craft”
“Paramount to everything we do is integrity. Our beliefs and commitments are sincere and do not follow the latest trend”
2) Our cooking values tradition, builds on it, and along with tradition is part of the ongoing evolution of our craft
“Tradition is the base that all cooks who aspire to excellence must know and master. Our open approach builds on the best that tradition has to offer.”
“As with everything in life, our craft evolves, and has done so from the moment when man first realised the powers of fire. We embrace this natural process of evolution and aspire to influence it. We respect our rich history and at the same time attempt to play a small part in the history of tomorrow”
3) We embrace innovation - new ingredients, techniques, appliances, information and ideas - whenever it can make a real contribution to our cooking
“We do not pursue novelty for its own sake.”
“We may use modern thickeners, sugar substitutes, enzymes, liquid nitrogen, sous-vide, dehydration and other non-traditional means, but these do not define our cooking. They are a few of the many tools that we are fortunate to have available as we strive to make delicious and stimulating dishes”
4) We believe that cooking can affect people in profound ways, and that a spirit of collaboration and sharing is essential to true progress in delivering this potential.
“We also believe in the importance of collaboration and generosity among cooks: a readiness to share ideas and information, together with full acknowledgement of those who invent new techniques and dishes”
What follows is a thought experiment. What are the universals that underly the creation of masterful food? What can we as software developers learn from that?
Last year I had the pleasure of working with the recently appointed MIT Media Lab Director, Joi Ito, on a small project building a flickr mirror web application over the course of a month.
Every other day, we would have a call, and Joi asked me to give him an overview of progress. During these calls, I would bring Joi through each of the libraries I’d added in the last iteration. I would highlight a particular, say, authentication library that I had used, and give a bit of background about why I was using that rather than anything else. I would tell Joi about the author of the library, a bit about where they worked, why I respected them, why I thought they did good work. I invariably found myself repeating the phrase: “He’s a really nice guy.”
Incidentally, that was the project that I did the majority of work on a client side framework of my own: eyeballs and it was exhilarating to be on the producer side of things for a while.
What it made me realise is that, subconsciously or not, I take great pride in meeting, and indeed thanking the people who build the tools I use. By filling in that context, I feel like I filled a gap that so often prevails in today’s open source development: where did all this code come from: where did originate? What’s the story behind the code?
A great meal begins in the imagination of a farmer. Picture the scene: He awakes, 3/4am. His first thought is not: “how can I scale my farm to make more?”. His thought is: “how can I best tend what I have?”. His next thought is not: “I must grow and sell as much as possible”, his next thought is: “how do I ensure that I will be here tomorrow, and able to keep growing?”
Top chefs promote sustainability as an art form. They demand the highest, the HIGHEST quality in their ingredients, and quality of food is not something that happens at scale. It happens through careful cultivation, over time. From careful tending of the soil, the earth and the minerals in the land for the most flavourful vegetables, to extreme techniques such the feeding of beer and massaging of cows backsides to improve the quality of wagyu meat.
The other trick is that top chefs get to know their suppliers intimately. They know their names, they probably know their families. There’s a connection there that goes all the way from the imagination of the farmer, through their hands, through the earth, to the produce all the way to the kitchen.
Until I finally managed to taste Kobe beef recently, by far the best piece of meat I ever ate was at the hand of Thomas Keller in the French Laundry. What was interesting though was that on the menu, it wasn’t just listed as “Calotte de Beouf Grillée”: no, the origin and story behind the beef is too important, so the maker takes pride of place in the title on the menu: “Snake River Farms Calotte de Beouf Grillée”.
There’s a care there, a care about not only the quality, but the origin of every last ingredient.
THINKING LIKE A FARMER
Wil Shipley wrote an article recently about “farming vs. mining”. He writes:
“In the mining model of software companies, the charismatic, flighty founders and their investors stand to make a lot of money. Their workers, their customers, and their secondary investors all get boned, because these companies and their products tend to suck.”
“The people who really change the world are farmers. Steve Jobs works constantly on his products, every waking minute of every day. He lives and sleeps and breathes them. He’s obsessive and crazy and kind of scary — but he’s trying to build something. He didn’t just say, “Here’s my idea: smart phone! BAM! Go make it happen. Ima jump in the sauna.” That simply doesn’t work. God is in the details. In the implementation.”
What is ironic about today’s society is that we all have the resources and tools to be farmers. A lot of us simply do not have the patience.
Because when I know the person who wrote the code, my opinion of it changes. I have a relationship with that code in the same way as I have a relationship with an author.
Conclusion #1: The origin of each and every piece of software that I use is important. Meeting, thanking and honouring the people behind the code should be a fundamental part of what I do in building software.
Written above the kitchen door in Thomas Keller’s kitchen in The French Laundry is the word “Finesse” : and below it a statement that the aim of perfection in food is unattainable : you can only strive to provide an environment in which people will feel at home.
I had the pleasure to get a tour of the kitchen with Tyler, one of the folks that was working there at the time. His role was “expeditor” : the eyes and the ears of the kitchen. The third course that night was butter poached maine lobster, to be followed by tete de cochon. The tete, it seems, has to be cooked at the last minute, to make sure that it is perfect when it hits the table.
Tyler told us later that he was watching us as we ate our lobster. I finished my plate, and my friend Simon his. My other friend, Dave was on his last bite, and as he lifted his fork to his mouth, Tyler called to the chef: “Fire! Fire!” … just as he said this, we must have been having a very exciting conversation, because Dave put his fork down, and didn’t finish. In the kitchen, oblivious to us, all three plates were trashed and fresh ones prepared.
The kitchen of a top chef can be the furious, stereotypical loud, firepit that the media likes to convey. Furious, hot, high pressure: yes, but typically, there is only one voice in a top kitchen, and typically, they do not like to raise their voice to be heard.
Chefs abide by the rule of “mise en place” ; that is, your tools laid out, your ingredients prepped, your workstation clean and tidy. Mise en place ensures that everything is in its right place, that the conditions for producing the meal are set : organised, ready.
And this is where training kicks in. Taking ingredients and constructing dishes at high pressure that transcend the sum of their parts. Skill, combined with ingredients and tools producing delectable results.
Throughout the whole process, respect abounds. Respect for the executive chef. Respect for everyone in the kitchen. Respect for the customer. Respect for the ingredients themselves. This respect permeates the whole experience.
Underwriting every top chef’s ethos is their ambition. To “affect people in profound ways”, Along with the ambition, though, is that relentless creativity. The will to surprise and delight, but to do so while constantly searching to move people in what they do : emotionally, empathically … blending the tastes, flavours, textures, smells and ambiance to create experiences far more than simply breaking bread together. An obsession with ensuring that the experience is perfect, every time.
THE PROGRAMMER’S KITCHEN
The programmer’s kitchen is the terminal, the text editor, the browser, the computer. We can learn a lot from the masters in the kitchen.
But what is my mise en place?
If I was to build an app today, taking direct inspiration from the masters of cuisine, what would I do? Well, I guess, subconsciously, I already do a lot of it.
At the fundamental level, using source control, which thankfully, is easier than ever these days. Choosing my tools, carefully trying to balance my skill, their appropriateness and how they fit me and my methods.
What matters though is not so much the tools themselves: what matters is that I care. And what matters is that respect.
Do I respect the origins of the tools I use enough to attempt to solve my own problems, to question myself before planting blame elsewhere? Do I respect my co-workers and future users of this code to write a solid README, to carefully construct unit tests, to write code that explains itself as much as comments ever would? Do I respect my users enough that I won’t short change them on how features work. Should I really make them wait for a response from the server when I can update an element straightaway, with just another bit of work.
There is a long list of things I could ask myself about how to create a fine web app experience, but fundamentally, I can find the answers by asking the simple question: who do I respect the most, and what would I do if I was building this for them. Every time.
Conclusion #2: Our tools are important, but more important than the tools themselves is respect. Respect for the tools, respect for those who created them, and respect for those whom we work together with, and whom we serve to create things for.
Upon entering The Fat Duck, I was surprised at how normal the place felt. Pristene, starched white table cloths, a simple bowl of olives. The first course “Lime Grove” changed any impression of normal that I had. “Lime Grove” is “Nitro Poached Green Tea and Lime Mousse” : your server brings a bowl to your tableside, liquid nitrogen evaporating in an animated cloud above the bowl. A canister is produced, from which a blob of foam is squeezed on to a spoon, which is tossed into the liquid nitrogen, before being plated and puffed with green tea powder. One by one, this process happens, ladies first, around the table. As you pick it up and pop it in your mouth, the waiter subtlely spritzes a lime scent in your face, and as you bite into the iced savoury merangue and it explodes, the smoke that has gathered inside it, mixed with the green powder topping puffs out your nose.
I could spend a whole presentation retelling Heston’s story behind the Nitro Poached Green Tea and Lime Mousse. Suffice to say, he has spent seven years perfecting the recipe, making small changes in presentation, texture, technique and finesse, to create a tightly coreographed, orchestrated, pin perfect experience of the freshest, zestiest opener to a meal that I have ever experienced.
And that was just the first course.
The nitro poached lime green tea mousse is one bite, yet the experience of it is so much more.
All through my experience eating at these places, I’m constantly delighted by the attention to detail. At Pierre Gagnaire in Paris, a silver slab is provided to rest your knife on. At the French Laundry, midway through eating foie gras and brioche, a fresh warm brioche will be served if you take your time getting through the first one. And heaven forbid you try to pour your own water.
What differentiates these places is that things happen without me noticing. No-one ever has to come to the table and say: “Is everything alright here?” It just always is.
SOFTWARE FOR PEOPLE’S CONSUMPTION
The fundamental lesson here I think is that perhaps, I as a developer sometimes focus on the machine before the person. I move on once a unit test case passes or a condition is satisfied. I don’t focus on the extra, little things that turn a seemingly simple, mundane thing into one that glistens with excitement.
Too often I find myself moving on without taking that extra step: now that I have the functionality, what can I do do improve things from a human point of view.
Conclusion #3: People are the centre of every step of the process of making things: People are the origin, people are the makers and people are the consumers. Putting people first—empathy—is fundamental.
What the amazing table experience at these restaurants also amounts to is this: with food preparation, things inevitably go wrong. Someone won’t be happy. Dealing with natural products always warrants some degree of risk. The thing is, a poor food experience can be rectified by excellent service.
No amount of food, however creative, can make up for an unpleasant experience.
THE SERVICE OF SOFTWARE
It’s a simple point, but it applies just as fundamentally to software. Time and time again I see it: people willing to forgive defects in software if they are backed up with a voice that cares.
This brings us full circle back through all of my points: it starts with the people, the stories, the origins, it continues through the people who put the ingredients together, and it is carried through with a focus on the people themselves. All our problems are really people problems.
Conclusion #4: I must accept that nothing I do is perfect, but that through dedication to the other factors in what I do, in how I present myself and the things I make, I can make up for the fundamental tragedy that true perfection is impossible.
- emphasis on experience, respect, food, craft : not profits
So here we are: 4 conclusions:
1) As a principle, I care about the origin of the ingredients of what I build 2) Respect is paramount in everything I do : respect for style, respect for tools, respect for the people I work with and the people who will consume what I create. 3) Moving people is paramount. From the moment I conceive of an idea, I’m motivated not only to change the world, but that as a result of what I create, the world is somehow better. 4) Finally, acceptance. Acceptance that perfection is really not attainable, and that we can augment our search of perfection with the atmosphere that we create.
Many top chefs do it for the fame, the celebrity, the crazy lifestyle.
But we don’t have a Gault Millau, or a Guide Michelin for web apps, and it would be impossibly subjective to find a common enjoyment metric for all of the web applications that are out there.
That said, we are often drowned in the need to maximise conversions, to “go viral”, to get big fast.
The legendary French cuisineur Auguste Escoffier’s quote adorns the opening page of Heston’s “Big Fat Duck Cookbook”:
“Cooking is a science and an art, and the man who puts all his heart into satisfying his fellow men deserves consideration”
Programming is also a science and an art.
This is an appeal to myself to slow down. An appeal to take a look at what I build: personally I do not want to appeal to the lowest common denominator, nor do I want to game anyone into anything that they would not otherwise choose. I want to sit on the forefront of technology, building fine web applications, elevating the experience, cultivating the produce, and ultimately putting all my heart into satisfying my fellow men.
Who’s with me?
Thank you very much.