Concordo que devemos manter as coisas simples, porém como vcs lidam com o seguinte cenário? Sua esquipe é formada principalmente por devs juniores e vc iniciou um novo projeto que ainda é incerto se vai crescer ou não. Se você faz as coisas simples vc entrega rapido e maravilha, porem o tempo passa o projeto da certo e chega um monte de requisitos novos que inevitavelmente caem na mãos dos dev juniores, e ai o bicho pega pq determinados requisitos requerem uma refatoração mais elaborada para o código nao comecar a ficar um caos. Se por outro lado no início do projeto vc cria uma estrutura mais elaborada fica muito mais facil dos dev juniores apenas seguirem o modelo e criarem os novos requisitos ja usando melhores praticas.
Qual solucao adotariam para esse cenário?