Можно озвучить две крайности при проектировании интерфейсов.
1. Вообще ничего не проектировать. В двух словах описать задачу, набросать на салфетке эскизы и отдать программистам, чтобы что-нибудь поскорее сделали. Предоставить разработчикам максимальную самостоятельность — лишь бы выполнялась основная функция проекта.
Такой подход хорошо сработает, когда нужно быстро проверить простую гипотезу и заранее знаешь, что даже в случае успеха всё нужно будет неоднократно переделать. Когда проект настолько маленький, что работа по проектированию скорее замедлит движение к результату, чем поможет избежать правок на этапе разработки.
2. Досконально всё спроектировать. Согласовать интерфейсы и документацию со всеми участниками проекта, составить точный календарный план работы. Давать разработчикам минимум свободы выбора решений.
Этот подход хорош в уже существующих проектах, которые нужно доработать. Или в новых проектах, которые нужно выполнить строго в соответствии с запросом, а не проверят