СЛ
В сети где-то относительно недавно пробегала совершенно общая выжимка исследований на тему, как писать программы. Ну там, в общем банальности для людей здесь - что чем раньше мы выловим ошибку кодирования, тем меньше она будет стоить (стоимость растёт по экспоненте) и т.д.
В частности, проговаривался один факт - что для вылавливания ошибок архитектуры нужно как можно быстрее сделать костяк, работающий от и до. И уже потом наращивать его мясом. Чтобы не получилось ситуации, когда мы роем тоннель с двух сторон, а получаем два тоннеля.
То есть, фактически, надо проработать подзадачи с самым высоким риском.
Но если у нас нет взгляда на проект с высоты птичьего полёта (см статью Дайсона Birds and Frogs), мы не можем быстро убрать тупиковые ветви в архитектуре. И проект может умереть под собственным весом.
Зависит от ситуации.
Наилучшим сигналом для начала написания кода служит полнота информации о предметной области. То что "иногда" она достигается сразу - всего лишь совпадение.
Проблема лишь в том, что определить полноту информации о предметной области можно как правило постфактум, а то и вовсе втянувшись в дело и наломав дров. (привет попаданцам в прошлое, которые знают "как надо")
Если же есть проблемы в архитектуре, которые не позволяют ей лишиться какого-нибудь большого куска кода и принять совершенно другой, то это вопросы к архитектору. А то на собеседованиях мозги всякими бандами и солидами парят, а на деле видишь, что эти люди не умеют конвеер по обработке огромной задачи в виде последовательности маленьких реализовать. А то и вовсе под архитектурой пониманиют квадратики с текстом внутри и стрелочкой "туда".