Complexidade é Custo! Ignore isso e seu projeto irá fracassar.

Entendemos que complexidade é custo. Por isso, deve ser combatida! Em tempos de transformação de negócios através de recursos digitais, é importante que identifiquemos os tipos comuns de complexidade que podemos encontrar e, eventualmente, evitar.

Podemos classificar as complexidades no desenvolvimento em três categorias:

  1. domínio – o problema de negócio que se está tentando resolver.
  2. solução técnica – conjunto de técnicas e tecnologias que se está querendo empregar para resolver o problema;
  3. legado – conjunto de processos ou recursos digitais já existentes e que, por alguma razão, serão preservados.

Das três categorias de custo complexidade que estamos indicando aqui, entendemos que apenas a relacionada ao domínio é bem entendida por pessoas que não sejam da área de tecnologia. Por isso, entendemos que a única categoria de complexidade (ou custo) que o negócio entende e que está, naturalmente, disposto a pagar é a relacionada ao domínio.

Tanto os custos as complexidades relacionadas ao legado quanto as relacionadas as soluções técnicas são tidas como e não são bem vistas pelo negócio.

Como justificar complexida

Não há novo recurso digital sem 1) um problema a resolver e 2) emprego de alguma tecnologia. Também, raramente, haverá cenário em que o novo não precise se manter compatível (comunicando ou interfaceando) com algum recurso/processo legado. Logo, as três categorias de custo – domínio, solução técnica e legado – estarão presentes, por mais que o negócio se sinta confortável apenas com a primeira.

A seleção dos complexidades custos acidentais que estaremos dispostos a assumir deve ter relação com o quanto elas conseguem mitigar os complexidades custos essenciais.

Outro aspecto importante é o trade-off entre o custo para desenvolver e para manter. Ou seja, quando optamos por uma estratégia que irá reduzir o custo de manutenção, aumentamos o custo de desenvolvimento. Quando optamos por uma estratégia que irá reduzir o custo de desenvolvimento, geralmente optamos por aumentar o custo de manutenção. De forma empírica, geralmente é mais inteligente optar por reduzir o custo de manutenção para minimizar o custo total. Mas a resposta definitiva depende de cada caso.

CUSTO TOTAL = CUSTO PARA DESENVOLVER + CUSTO PARA MANTER

Qualquer custo associado a solução técnica precisa se mostrar eficiente e compatível com o custo que se está tentando minimizar.

São exemplos de custos de solução técnica compatíveis com a redução do custo de manutenção:

  • Testes automatizados;
  • Implementação de modelos arquitetônicos escaláveis;
  • Documentação abrangente

Por outro lado, são exemplos de custos de solução técnica compatíveis com a redução de custos de desenvolvimento:

  • Arquiteturas monolíticas
  • Utilização apenas de tecnologias  conhecidas pelo time
A priorização exagerada por reduzir os custos de desenvolvimento é a origem das dívidas técnicas. No logo prazo, essa estratégia compromete a continuidade.

Concluindo

É sempre bom, quando falamos em complexidade em processos de desenvolvimento de recursos digitais, ter claro que estamos falando de custos (e vice-versa). Também é sempre importante tentarmos fazer uma categorização destes custos/complexidades para facilitar a comunicação entre áreas técnicas e não técnicas.

Finalmente, é importante que todos tenham clareza sobre o que é prioridade: reduzir os custos para o desenvolvimento ou para a manutenção (sem perder de vista as dívidas técnicas)

Elemar Júnior

Microsoft Regional Director e Microsoft MVP. Atua, há mais de duas décadas, desenvolvendo software e negócios digitais de classe mundial. Teve o privilégio de ajudar a mudar a forma como o Brasil vende, projeta e produz móveis através de software. Hoje, seus interesses técnicos são arquiteturas escaláveis. bancos de dados e ferramentas de integração. Além disso, é fascinado por estratégia e organizações exponenciais.

Talvez você goste também

Carregando posts…

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *