[quote=ViniGodoy]Acho que a grande pergunta é: “Os desenvolvedores são capazes de dizer o que é melhor para o cliente?”
O duro dessas discussões é que sempre esbarram em dois tipos de projeto, que ao meu ver são completamente distintos: softwares de prateleira e softwares feitos sob encomenda.
No software feito sob encomenda, acho que não devemos tentar ser criativos mesmo. Ou melhor, restringir a criatividade ao que o cliente pede. Afinal, geralmente estaremos modelando o negócio do próprio cliente, e quem melhor conhece o negócio do que ele mesmo? O que podemos fazer é orientações criativas sobre o uso da tecnologia, dentro do que ele precisa fazer. Ou seja, podemos mostrar a ele formas melhores de como fazer usando tecnologia, e não sobre o que fazer. Assumir que o cliente não sabe o que faz é um pressuposto no minimo perigoso. O cliente teve capacidade de fazer o negócio crescer ao ponto de contrata-lo, então, não seja arrogante só porque você entendeu alguns processos dele.
[/quote]
Não é uma questão de arrogância, é uma questão de conhecimento de causa. Existem dois tipos de regras que são incluidas no software: regras de dominio e regras de negocio. As regras de dominio são aquelas que são iguais para aplicações do mesmo dominio ( por exemplo, todos os e-comerce tem regras em comum). Regras de negocio são particularidades daquele cliente especifico. Neste caso, quando o cliente desafia uma regra de dominio é muito provável que ele esteja errado. Quando ele força uma regras de negocio é muito provável que ele não conheça a regra de dominio equivalnete.
No livro Software Requirements do Karl Wiegers ele fala “Do not assume the client is always right. The client allways a point, through” (“Não assuma que o cliente tem sempre razão. contudo,o cliente sempre tem algo a dizer que merece ser ouvido”. (tradução livre))
Vc não deve ignorar o que o cliente diz, mas não deve acatar cegamente o que ele diz.
Sistema de prateleira implementarm principalmente regras de dominio. Regras de negocio são normalmente adicionadas via patchs, script, ou algum tipo de plugin.
Sistema on demand implementam principalmente regras de negocio. Regras de dominio são confundidas com regras de negocio porque não ha conhecimento em amplitude para destingir.
Ou seja, se você repetir a implementação de vários sistemas do mesmo dominio, vc acaba vendo como criar uma aplicação de parteleira para aquele dominio.