I think agile is mainly about a common language, contract or understanding between the developer(s) and their customer(s). Before, customers used to negotiate a finished product without taking all the risks involved in specification changing.