Espresso is hard. Milk is harder. A bad espresso tastes like bad coffee. A bad
cappuccino tastes like steam.
The variables
Temperature, speed, angle, pressure, milk type, cup size, pour height, the
vortex, the noise the pitcher makes, the texture of the milk, whether you
moved the cup, when you stopped steaming, how full the cup was when you
started.
Espresso has three variables. Milk has all of these.
The one that matters most
The angle of the steam wand to the milk surface. Tip it wrong and the milk just
heats. Tip it right and it spins and incorporates air and the bubbles stay
small and the texture becomes silk.
Why I do not make cappuccinos
I make espresso and I put hot milk in a cup. The result is a cappuccino in the
sense that it has espresso and milk, and nothing else in the sense that it does
not taste like one.
A real cappuccino requires the milk to be steamed and textured and poured in a
way that keeps the texture. I do not have the hand for it and I have made peace
with that.
What people tell me
“It just takes practice.” This is true. “You just have to relax.” This is also
true. “It is easy once you get it.” This is not true. It is hard the first time
and hard the fiftieth time, and then one day you are not thinking about it and
you are doing it right.
The steaming that changed everything
A friend showed me that the sweet spot for the wand is half-submerged, not a
quarter-submerged, and the angle is 45 degrees, not straight down. The
temperature matters less than the spin.
One cappuccino with that angle and I tasted what was possible. I have made
maybe two cappuccinos that good since then.
What I do instead
Espresso drinks where milk is poured, not steamed. A macchiato is espresso
with a dot of foamed milk, which does not require texture. A cortado is
espresso with milk in equal parts, which requires neither temperature nor
texture to work.
The cappuccino is a goal. Everything else is the path.
A technique that requires decades is beautiful to watch and painful to
practice. A technique that requires days is the one that will actually get
used.