The naive view of agile software development is that everyone just dives in and starts writing code without spending any time at the beginning working out what to do.
That view, although as erroneous as it is simplistic, is based on a genuine shift in thinking. Prior to Agile’s rise, serious software people advised long periods of requirements gathering and architecture, where a five-year project might spend a year or two before any code was written, let alone released into production. The agile world has discarded such long periods of up-front analysis, but we still recognize that there is value in setting out with an initial sense of direction. The challenge is figuring out how we can do this quickly and efficiently, while remembering that nothing teaches us what we want more than an incomplete product that’s released and in use. So, we need to balance setting direction with the knowledge that such up-front thinking is our most tentative.
Source: Martin Fowler in Lean Inception, Paulo Caroli, https://leanpub.com/tothepoint