One of the core priniciples of Agile is a realistic attitude about the unknown. We might have a rough idea of how much work it will take to complete a project, but we cannot state with the certainty of a papal bull how we're going to get to that destination. Therefore, Agile teams have to embrace Agile principles like loving plans, but abandoning any fetishistic relationship with specific, immutable plans.
Agilists learn to live with uncertainty, but they're far from fatalistic about it. In fact, the opposite is true: the truly good Agile teams assume a very aggressive posture about the management of uncertainty. In this respect, Agile software teams behave a lot like military professionals. First, they accept the inherent unpredictability that they'll face, either on the battlefield or in the backlog. They adopt maxims like, "No plan survives contact with the enemy," or concepts like friction, to describe the nature, sources, and effects of uncertainty. Next, they develop strategies, like the OODA loop (observe, orient, decide, and act), to navigate through the minefields of unexpected outcomes. And finally, they adopt a great deal of rigor and discipline, plus no small amount of self-criticism, to the application of these uncertainty-management practices.