Rinse the asparagus and pat dry. Trim off and discard the tough ends (remove the bottom 2 inches or so.) Cut each remaining stalk into three equal pieces.
Pre-cook the asparagus until it's crisp tender (you will finish it by sautéeing it afterward). You can pre-cook the asparagus by steaming it for about 15 minutes (place a couple inches of water in your bottom pot, bring it to a boil, then place the asparagus in the steamer basket on top and cover it.) OR - You can cover the bottom of a skillet with water, let that come to a boil, and cook the asparagus in it.
While the asparagus is cooking, beat your eggs with a fork or whisk in a small mixing bowl and add the black pepper, whisking it in. Peel and press your garlic (if you have a garlic press) or mince it with a knife. Grate your cheeses (I cut mine into chunks and whirl them in the blender.) Set out two spare round pans or platters that will be used later for inverting the frittata.
When the asparagus is crisp-tender, heat 1 tablespoon of olive oil in a 12-inch skillet over medium high heat and add the garlic, stirring it around. After about 30 seconds, add the asparagus and stir it to coat it with olive oil. Let the asparagus finish cooking until you can easily insert a fork in it, stirring occasionally to make sure the garlic doesn't burn, and lowering the heat if necessary.
Turn off the heat and use a slotted spoon to transfer the asparagus to a bowl. Pat it with a paper towel if there is excess liquid. Stir in the cheeses.
Place a 10-inch skillet over low heat on the stove and add 4 teaspoons of olive oil. Spread the oil around and add the asparagus mixture, distributing it in an even layer. Pour the eggs on top.
Cook the frittata uncovered on low heat until you see that the edges are browning and firm. The top should be almost set. (This could take at least 20 minutes.)
When you are ready to cook the other side, place one of your spare round pans or platters face down over the frittata pan, and over the sink, invert the frittata onto the pan. The cooked side will be up. Then use your second spare pan or platter to invert the frittata again, so that the raw side is up. Finally, invert the frittata back into your 10-inch skillet.
Finish cooking the frittata over low heat, until the bottom is firm and set. (You can gently lift the edge with a spatula to check it.) Slide the finished frittata onto a round platter and let it rest for a few minutes before slicing it. The frittata is delicious at room temperature. Store leftovers in the refrigerator for up to four days.
You might be able to shave off some cooking time by pre-cooking the asparagus in shallow boiling water instead of steaming it. Or, you can start with leftover asparagus and quickly sautée it with olive oil and garlic.