1) ТЗ – писать общий состав работ, детализация позже. Прототипы – аналогично.
Нарисуй главный маршрут пользователя и начни с него. Так снизятся риски того, что огромную гору прототипов/ТЗ нужно будет переделывать почти полностью.
2) Дизайн – тут часто спасает эскиз верстки, в случае сложной анимации.
Поясним: рисуется макет, затем верстается только анимация, а не вся страница. Это позволяет очень быстро выкатить макет Заказчику и показать его «живьем».
3) Программирование – и особенно интеграции.
Тут поможет методология стартапов – делаем MVP, модель, показываем на ней примерную работу системы бизнес-заказчику – и после утверждения уже делаем как надо.
4) Как обезопасить себя от бесконечного переделывания? Работаем так: сделали – показ клиенту – протокол показа – работаем дальше. Протоколы шлем почтой/бумагой – тут уже смотрите сами, главное, что это подтвердит те или иные договоренности и то, как они менялись.