Für mich hat sich der „Prototyp“ Weg recht gut für komplexe Applikationen bewährt. Das heisst der Programmierer fängt an einen schnellen einfachen Prototyp zu bauen. (AngularJS bietet sich für sowas direkt an). Man beschränkt sich auf einfache und wichtige Hauptfunktionen der Applikation. Oft kann $Kunde nicht direkt sagen was er braucht oder will. Man noddelt sich dann zusammen mit Designer und Kunde zu einer funktionierenden ersten Version und iteriert dann anschliessend weiter.

via Robert