# Introduction

When I first began to learn how to bake bread, a recipe told me what to do. It listed some ingredients, told me how to combine them, and prescribed times of rest. It gave me an oven temperature and a period of wait. It gave me mediocre bread of wildly varying quality. I tried different recipes, but the result was always the same. 

Understanding: that's what I was missing. The bread I make is now consistently good. The recipes I use are simpler and only give ratios and general recommendations for rests and waits. So, why does the bread now turn out better? 

Before it is baked, bread is a living organism. So, the way it grows, develops, and flavors depends on what you feed it, how you feed it, how you massage it, and how you care for it. If you have it grow and ferment with more yeast at a higher temperature, it overdevelops, producing too much alcohol. If you give it too much time, acidity will take over the flavor. The recipes I used initially were missing a critical ingredient: the rising temperature. 

But unlike other ingredients, temperature is hard for the home cook to control. And recipes don’t say exactly at which temperature to grow the bread. My initial recipes just silently made assumptions about the temperature, which rarely worked. This means the only way to consistently make good bread is to have an understanding of how bread develops so that you can adjust the other ingredients to complement the temperature. Now the bread can tell me what to do. 

While React isn't technically a living organism that can tell us what to do, it is, in its whole, a complex, abstract entity. We could learn basic recipes for how to write high-performance React code, but they wouldn't apply in all cases. And as React and things under it change, our recipes would fall out-of-date. So, like bread, to produce consistently good results we need to understand how React does what it does. 


