Уверен, все согласятся, что нужно стараться писать хороший код. Правда есть загвоздка: "хорошесть" кода - понятие относительное и, часто, субъективное. Совершенству нет предела, а вот время на работу - величина исчисляемая и лимитированная.
Дизайн кода (software design) так же субъективен - он основывается на выборе малой группы опытных членов команды, но в этом его плюсы. Дизайн кода легко определить и донести до команды, хороший дизайн подразумевает соответствие лучшим практикам программирования. Хороший дизайн задает границы и уровни, за которые разработчики не должны выходить работая над конкретной задачей. Суммарная работа по улучшению дизайна выполняется той же малой группой людей и требует значительно меньше сил и времени, чем суммарная работа над улучшением кода всех членов команды.
Чтобы команда выработала единое восприятие качества кода (которое некоторые ошибочно принимают за объективное и абсолютное), нужно, чтобы каждый разработчик проделал серьезную работу по получению, принятию и применению обратной связи от множества коллег. Качество кода повышается усилиями каждого члена команды. Кроме затрат энергии повышается порог входа в команду, ведь пока новый разработчик не пройдет тот же путь что и другие разработчики он является потенциальным разносчиком "плохого" кода по проекту.
Хороший дизайн позволяет снизить порог входа, помещая нового разработчика в строгие рамки, ограничивая его компонентом или даже слоем компонента. Да что там, хороший дизайн даже позволяет включать очень плохой код без вреда для системы. Вспомните когда вам приходилось править работающий код, скопированный со stackoverflow, чтобы он прошел ревью. Хороший дизайн позволяет не тратить на это время и быть уверенным в безопасности системы.
Без хорошего дизайна даже хороший код со временем будет терять форму, а первый небрежный работник сможет превратить код в месиво из костылей за считанные недели. Продуманный дизайн делает систему более устойчивой а плохих программистов - менее опасными.