Good software solves real world problems. Great software solves your problem.
A solution requires both a shared understanding and an ability to adapt as circumstances change. Agile software development helps people communicate better by decomposing complexity into small portions – portions that are easy to understand and prioritize, quick to deliver, and above all start to solve your problem.
Agile then helps you learn, because wisdom is only earned through experience and execution. Engagement with users, feedback, and iteration drive a virtuous cycle of continuous improvement. Just as importantly, engagement and feedback also provide valuable course adjustments as initial assumptions give way to data-validated functionality.