Не, сложность не в том чтобы спроектировать и сделать. Сложность в развитии и поддержке за умеренную цену.
Единый фактор жизнеспособности приложения — способность эволюционировать.
Если изменения дëшевы и легки, приложение быстро станет лучше.
Если они сложны и дороги, повышается риск застрять и скатиться по наклонной в легаси.
Архитектура должна служить тому чтобы сделать приложение проще, а не сложнее.
Если программист увлекается и делает сложно, надо бить линейкой по пальцам, чтобы упрощал.
Гордиться надо простым кодом, а не сложным. Кто гордится сложным кодом, тот ещë не достиг мастерства.