YAGNI – Você não vai precisar disso

YAGNI é um acrônimo para “You Aren’t Gonna Need It” (Você não vai precisar disso) mantra pregado pela Extreme Programming (XP) onde se diz que não devemos adicionar possíveis novas funcionalidades ao software a não ser que seja necessário.

Nós desenvolvedores de software temos a péssima mania de tentar prever o futuro, implementando “aquele recurso” que economizará muito tempo, que convenhamos quase nunca usamos.

Toda “futurologia” empregada por mim só renderam dores de cabeça, pois quase nunca são utilizados, além da manutenção que será aplicado no código, sendo uma carga desnecessária ao projeto.

Quando inflamos o escopo da implementação geramos mais camadas e dimensionamos de forma errônea o esforço, impactando diretamente no tempo de desenvolvimento do projeto.

Com o tempo elevado no projeto temos consecutivamente um gasto maior ($$$), muitos desenvolvedores não visualizam por esse ângulo, porém convido a refletir sobre esse ponto.

Estou plenamente convencido que devemos focar em entregar soluções sólidas, eficazes e bem construídas.

Devemos deixar os problemas do futuro para o futuro, pois muito provavelmente o escopo do projeto sofrerá alterações, o que é urgente hoje amanhã pode não ser mais. 😉

O custo para refatorar o código é amplo e depende de diversos fatores dentre eles quando será executado, por exemplo;

Refatorar código em desenvolvimento sempre será mais tranquilo, menos custoso e estressante do que em homologação e principalmente em produção, pois estão em camadas muito diferentes.

Quero deixar claro que implementar apenas o necessário é diferente de fazer uma boa implementação, sempre devemos nos preocupar em escrever códigos simples, reutilizáveis, coesos, seguindo padrões etc.

Após adoção do YAGNI a forma como soluciono os problemas mudou, aumentando o foco, escrevendo menos código consecutivamente mais legível e menos verboso. 🙂

É importante que o time siga esse princípio, porém caso não siga você certamente encontrará resistência, siga implementando aos poucos e ressaltando as vantagens e benefícios do YAGNI e com o tempo a adoção será natural.

Considerações finais:

Podemos observar que o princípio YAGNI é um conceito simples, porém como quase tudo que é simples sua compreensão e adoção é complexo, porém com ganhos significativos.

  • Principais erros cometidos sem o uso do YAGNI:
    • Códigos mais verbosos.
    • Mais código para manter.
    • Funcionalidades desnecessárias.
    • Códigos difíceis de se manter.
  • Pontos positivos do YAGNI:
    • Economia de tempo.
    • Economia de dinheiro.
    • Menos estresse. 🙂
    • Menos código para manter.
    • Melhor qualidade de código.

Convido a todos a deixar seu comentário, descrevendo seu ponto de vista e/ou sua experiência com  o princípio.

Espero que o post tenha sido útil e que tenha lhe agregado valor.

Grande abraço e sucesso nos projetos.

2 thoughts on “YAGNI – Você não vai precisar disso”

  1. A “futurologia” realmente é um mal que precisamos cortar de vez!
    Falo por experiência própria, quando tentei prever um caminho para uma funcionalidade, implementei de uma forma bastante elegante (deu bastante trabalho) e no fim a funcionalidade mudou completamente e minhas horas de trabalho foram pelo ralo.

    “You Aren’t Gonna Need It” merece um pôster na parede de cada escritório de desenvolvimento.

    Ótimo artigo Diego.

    1. Olá, Odilon.

      Obrigado pelo seu comentário, fico muito feliz que tenha sido útil.

      Nós não somos futurólogos somos desenvolvedores/programadores/etc nós resolvemos problemas, caso contrário estamos gerando problema indo na contra mão do objetivo.

      Simplicidade é um mantra pregado na programação a muitos anos, porém demoramos para realmente compreender 🙂

      Por favor se possível compartilhe com seus amigos e colegas esse post, agradeceria muito 🙂

      Grande abraço e sucesso nos projetos.

Deixe uma resposta

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