Я согласен с общим мнением о том, что вы начинаете с самого нижнего уровня, уровня данных, своего приложения и строите его оттуда. Для меня это имеет смысл, потому что бизнес-логика построена поверх уровня данных, а внешний интерфейс построен поверх бизнес-логики и т. Д.
Однако, если учесть еще одну вещь - ваш клиент. К сожалению, клиент должен видеть видимые изменения, чтобы знать, что вы что-то делаете. И вы будете удивлены, что даже технические менеджеры тоже склонны к этому мышлению.
Поэтому я стараюсь убедиться, что на каждой итерации что-то делается и с пользовательским интерфейсом, поэтому в некотором смысле приложение строится в вертикальных линиях. То есть некоторые данные, некоторая бизнес-логика, некоторый пользовательский интерфейс показывают клиенту. Повторите.