Padrões de Desenvolvimento de Software NÃO são meras frescuras
Published: 2023-03-21 23:47:08

---
title: Padrões de Desenvolvimento de Software NÃO são meras frescuras
published: true
description: 
tags: 
cover_image: https://cdn-images-1.medium.com/max/10368/0*O-76MImGqQbuUFJD
---

Conhece aqueles desenhos que os músicos de uma orquestra leem enquanto tocam a música? A partitura, cheia de linhas e símbolos. Na música ela é utilizada de forma universal, para qualquer músico, de qualquer lugar do mundo, que fale qualquer idioma, conseguir tocar qualquer música escrita ali. Isso só é possível porque a partitura foi padronizada como uma forma de escrever uma música, uma linguagem universal.

### Mas o que partitura tem a ver com desenvolvimento de software?

Numa conversa aleatória, na base da cerveja é claro, foi comentado sobre o tempo em que um desenvolvedor demora para se entender com o código. Nisso, foi relacionado a partitura com os padrões de desenvolvimento, assim como qualquer músico que saiba ler uma partitura consegue tocar qualquer música feita por outro músico sem sequer o conhecer, qualquer desenvolvedor que saiba os padrões da *stack *do projeto, consegue se entender rapidamente a ponto de em pouco tempo conseguir adicionar uma feature nova ou corrigir um bug.

### Os grandes projetos de software livre definem padrões

Muito provável que o repositório daquele seu framework favorito tenha um arquivo chamado *CONTRUIBUTING.md *com todas as instruções e padrões para aquela sua PR **linda **ser aceita e ir pra *branch *principal. Vou deixar o exemplo do [*flutter](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md) *para dar uma olhadinha. Procure pelo repositório de seus frameworks favoritos, eles provavelmente devem seguir padrões.

### **Ser escalável não é hospedar na Amazon**

Sabe aquele tio ou primo, um gênio incompreendido, que viu alguma palestra sobre *startups *e brotou com uma ideia estranha? E que quer alguém que saiba mexer com *AWS *pro produto genial dele ser escalável? Então, eu ainda não entendi o que faz pensar que é só tacar lá que vira um *puta software escalável. *Ser escalável não se limita ao custo de servidores, abrange também o custo humano, nisso existem duas frentes, a galera que cria as novidades e a galera que corrige o que já está rodando. Nessa segunda frente, um software mal feito, pode acabar pesando no custo, e com isso nessa tal de escalabilidade.

Querendo ou não, é impossível pegar todos os bugs e erros de um sistema grande antes de enviar pra produção. Pode ter 100% de cobertura de testes automatizados e mais os testes manuais que sempre terá alguma coisa que não foi prevista. E para conseguir diminuir ao máximo os erros e bugs em produção, o processo de desenvolvimento deve ser muito cuidadoso e rigoroso, obrigando os desenvolvedores a testarem e escreverem testes, seguir o design do código e os padrões de desenvolvimento estabelecidos. Tudo isso colabora para evitar problemas em produção e não criar a bola de neve que código ruim causa e evitando custos adicionais como horas extras da galera que trampa no feriado pra corrigir um erro 500 naquele módulo indispensável pros clientes.

### O ciclo de vida não pode terminar em um “software novo”

Não são poucos casos que escutei de software que precisaram serem reescritos pra poderem receber novas features. E todos esses casos foram por ir criando a base de “duas coxadas e uma barrigada”, cuspindo código adoidado pra entregar logo porque tem que ter tal coisa pro próximo *pitch *com investidores ou com uma apresentação pra um possível grande cliente. Esse famoso atrito do pessoal de vendas/gestão com o pessoal técnico pode custar muito ao longo do tempo. Mas ainda existe a outra ponta, a ponta dos software que nunca termina as correções de erros e bugs, que cada vez mais se contrata desenvolvedor para ir corrigindo, e a cada correção se cria um novo bug ou erro. Repita comigo: “[*Encher a empresa de devs não faz as coisas serem mais rápidas](https://www.linkedin.com/posts/paulo-chiodi_oi-repita-comigo-encher-a-empresa-com-devs-activity-6801280066199293952-QT7f)”*. Um código fonte ruim gera desanimo, e desanimo pode gerar alta rotatividade, e trocar de funcionário custa muito mais que manter. Até esse novo chegar ao nível de desempenho do anterior demora. É claro que é impossível ter um código totalmente limpo, simples e fácil de entender em um sistema grande, mas é aquele ditado: *faça o seu melhor nas condições que você tem, até ter melhores condições para fazer melhor ainda*.

### Aquele velho blá blá blá de sempre

Sim, vou terminar esse texto repetindo o que provavelmente o sênior do teu trampo já repetiu várias vezes, padrões de desenvolvimento não são frescuras e se vocês acha que é frescura, releia esse texto.

## tl;dr:

Esse texto foi escrito baseado em experiência própria e em conversas com outros devs e galera da área. Não leve nada ao pé da letra, ou leve, particularmente eu to nem ai :)