Processos de código - Introdução.
Tags: 100daysofcode, softwareengineering, softwaredevelopment
Published: 2024-06-26 12:51:18


Que a construção de software não é um processo convencional até o mais novato desenvolvedor sabe, porém a complexidade dessa tarefa é elevada a um nível diferente quando se envolve dois ou mais desenvolvedores em um time. Surge a necessidade de um método que ajude ao time a desenvolver de maneira coordenada e sempre entregar resultados. 

Nos primórdios do desenvolvimento, tínhamos o método Waterfall (em cascata), que era baseado no desenvolvimento fordista (sim, dos carros) de construção de produto. O método consistia em seguir um único ciclo de desenvolvimento, do começo ao fim do produto. Um escopo fechado de funcionalidades e ações que o software iria realizar sendo desenvolvidos em um longo espaço de tempo. 

![Método Waterfall](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fjjsyc885zyqu0x38gbz.png)

Na época, o desenvolvimento de software era equiparado a uma construção de engenharia, como uma construção civil ou mecânica. Porém a natureza do software é dinâmica, mutável e previsível a falha (se é possível falhar, irá falhar.[Lei de Murphy](https://pt.wikipedia.org/wiki/Lei_de_Murphy)), esse método de desenvolvimento em equipe foi péssimo em rendimento, falhando tanto em orçamento quanto em estimativa de tempo para a entrega.
 
Os níveis de falha foram agressivos, em 1994 uma empresa consultoria Standish Group deixou público um estudo que ficou comumente conhecido como CHAOS Report, no artigo mostrava dados de 20 anos de desenvolvimento pelo modelo waterfall mostrando claramente que havia falhas e modificações em grande parte dos projetos finalizados (quem imaginaria?)

![Chaos report 1994](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s3vuge1dk3f4l7w6c357.png)

> Fato interessante: essa mesma consultoria continuou realizando o CHAOS Report nos anos consecutivos. Demonstrando o avanço de métodos de gerenciamento de software durante os anos. 

Diante dessa merda generalizada, um grupo de dinossauros... digo,  profissionais de TI experientes juntaram-se e levantaram a ideia de uma metodologia que mais se encaixaria com a atividade de construção de software. Nasce dessa lombra o **Movimento ágil**. Desse momento em diante, o rumo da fabricação de software mudou completamente. O manifesto que esses caras criaram nada mais é que um conjuntinho de ideias do que é a construção de um software real e como se deve seguir. 

![Movimento ágil](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n51toahfd1egd9kixzzb.png)

Pode parecer coisas obvieis hoje, mas há 23 anos atrás, projetos de software eram descartados pelo risco de sempre falharem e um dos motivos era tentar encaixar o software como um desenvolvimento padrão  de qualquer engenharia. 

A metodologia ágil é um conjunto genérico de dicas, tipo "beba mais água para melhorar a saúde", porém são características genéricas dos métodos mais famosos de desenvolvimento ágil. Extremming Programming, Scrum e Kanbam. Falarei um pouco mais nos próximos dias.

___

Bom, esse foi um resumo do meu estudo no desafio de 100 dias de código. Eu estudei pelo livro [Engenharia de software moderna](https://amzn.to/3VYNMLe) do Professor Marco Tulio Valente. É um ótimo livro introdutório para assuntos corriqueiros no dia-a-dia de desenvolvimento de software.  


> [1/100] dias de código