Managing complexity with agile development