In a mixing bowl, whisk together the eggs, garlic, cheese and pepper. Set aside.
Bring a large pot of heavily salted water up to the boil. Add the spaghetti, stir, and cook until al dente (1 minute less than the packet instructions).
While the pasta is cooking, place the guanciale in a cold frying pan and bring up to heat over a medium-high heat. You don’t need to add any extra oil because enough fat will render out of the guanciale because you started with a cold pan. Cook until the edges just start to go crispy, about 4–5 minutes.
Add the asparagus to the crispy guanciale and fry in the fat until softened and nicely charred. Remove from the heat and set aside.
Drain the pasta, reserving a cupful of the cooking water, and then tip the pasta into the asparagus-guanciale frying pan.
Still off the heat, pour in the egg mixture and toss thoroughly for a couple of minutes, adding the reserved pasta water, little by little, if things get too sticky, until the sauce becomes glossy and creamy and coats the back of the spaghetti. The heat of the pasta will cook the eggs.
Transfer to individual bowls and eat immediately.