Junto e misturado, mas com os dominios separados!

Tem uma frase no livro Domain Driven Design do Eric Evans que eu gosto bastante.

As células podem existir porque suas membranas definem o que está dentro e o que está fora e determinam o que pode passar.

Eu gosto dela porque prova que se o mundo fosse um lugar lógico você e eu nunca precisaríamos explicar por que uma funcionalidade não cabe em um aplicativo ou, ao menos, iríamos conseguir ver e fazer ver a linha de separação.

Quando o requisito de uma nova funcionalidade chega até o desenvolvedor se espera que seu detalhamento seja claro e que o valor que será entregue com aquele recurso esteja mais explicito que chicote em cena de soft-porn, afinal, dessa maneira podemos pensar no local(o valor/objetivo da feature que vamos programar) sem perder o global( o valor/objetivo do software em que programamos) de vista.

O que esquecem de dizer no curso de análise de sistemas é que as vezes a feature não se encaixa no propósito do software…

O que esquecem de dizer no curso de análise de sistemas é que as vezes a feature não se encaixa no propósito do software, parecendo mais com algo tipo adicionar a feature de dar play em loop de vídeo do PSY – GANGNAM STYLE na mesma tela de indicativos de performance do rescuetime. A pergunta que vem a mente é Pra que?!!!

Pensar que “me mandaram a tarefa então vou fazer” é um pouco  obtuso.

A não ser que você trabalhe por esporte e seja uma pessoa podre de rica ou que não ligue para dinheiro, não pode ignorar que o sucesso da empresa em que você trabalha é também uma medida de sucesso do seu trabalho. As frases “eu só trabalho aqui” ou “essa parte não é comigo” não são praticas de startup e mesmo as empresas de grande porte têm problemas com essas ideias, talvez até o governo(ou não).

Então, como diria um conhecido “bora lá descobrir what-fuck-is-going-on”.

A feature não se encaixa no software mas o cliente “precisa dela”.
Segundo Henry Ford, se ele tivesse dado ouvido a seus potenciais clientes ele teria criado cavalos com anabolizantes.

O cliente tem um problema bem definido e uma ideia que pode solucionar o problema. As vezes a ideia é boa, completa e cobre os aspectos do problema ao invés de um efeito do problema, às vezes a ideia é simplista.

Seu trabalho como desenvolvedor ou analista é perceber o problema por um ângulo melhor, nem diferente nem igual. Só melhor. E isso depende de pratica, mas principalmente de sinergia com o cliente. Be nice!

Não misturar conceitos
Se chegou o requisito de uma funcionalidade que não se encaixa no projeto existem 3 possibilidades.

1- O cliente tem mais de um problema para resolver e quer uma solução tudo em um. Ajude-o a mapear os processos.
2- O analista está permitindo que o foco da aplicação se abra de maneira a ser o novo super aplicativo que faz tudo sem fazer nada muito bem. Aplique um pescotapa e volte 3 casas no tabuleiro.
3- Você não entendeu para que serve o software que você está trabalhando. Estude mais o problema é converse com as pessoas.

Por favor, via de regra parta sempre do 3, depois olhe o 1 e somente ai desconfie do 2.

isole a nova funcionalidade em um subdomínio, com sua exclusiva camada de serviço.

Agora, se o analista sabe o que está fazendo, o cliente entende o objetivo do software e só você discorda que a funcionalidade não se encaixa no software, nesse caso, isole a nova funcionalidade em um subdomínio, com sua exclusiva camada de serviço. Faça tudo para que a funcionalidade não se acople no core-domain, e acompanhe de perto sua evolução, sempre com o isolamento em mente.

Pode ser que ela seja a nova super ideia disruptiva. Ou não!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s