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