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