Про веб знаю чуть меньше, чем больше, но в целом...:
Большая сложная система требует вдумчивого подхода при разработке, иначе:
во-первых, она никогда не будет реализована;
во-вторых, в ней сложно будет искать и исправлять ошибки;
в-третьих, ее сложно будет дорабатывать, добавлять новый функционал.
Все это в итоге удорожает/замедляет процесс разработки.
Поэтому, подход "Некогда думать - надо код кодить" не работает или работает плохо. Когда проект большой роль "думать" выпадает отдельному человеку, которого называют "архитектор".
Архитектор анализирует общесистемные требования, разделяет систему на подсистемы и модули, определяет интерфейсы взаимодействия систем и модулей и определяет требования для подсистем и модулей.
Еще по идее он должен знать про паттерны проектирования, uml, idef.
А еще он должен иметь опыт программирования, иначе будет продуцировать "ересь" и его никто слушать не будет.