To add to that - Determining and defining what to build is not magic unless you write simple and elegant code that delivers on-time and on-budget.
You can have all the magic in the world upfront with planning and have it fail spectacularly without the right execution that is accurate, on-time and on-budget.