O que é OVERENGINEERING e por que ele ACABA com o seu código
Sobre este curso
Entenda o que é overengineering, como ele surge pela tendência de criar soluções complexas, e por que ele pode ser um problema para a manutenção do seu software.
Este vídeo aborda o conceito de "overengineering" (ou "super engenharia"), a tendência que desenvolvedores têm de querer aplicar soluções complexas a problemas que, muitas vezes, são simples [00:00:11], [00:07:16]. O instrutor, Andre Okazaki, discute o equilíbrio necessário entre a prioridade de entregar um software que funciona e a necessidade de criar um código bem estruturado para manutenção [00:01:03].
O que você vai aprender
- O que é overengineering: superestimar a engenharia ou arquitetura do software, aplicando soluções mirabolantes onde não são necessárias [00:07:16].
- A ordem de prioridade: Entregar código que funciona é a primeira prioridade; a boa estrutura vem em seguida para garantir a manutenção [00:01:25], [00:04:17], [00:29:08].
- O "antídoto" para o overengineering: Primeiro, faça funcionar. Depois, refatore e melhore [00:18:12].
- A importância do contexto: A solução (simples ou complexa) depende do cenário (ex: um script pessoal vs. um software corporativo de longo prazo) [00:02:50], [00:05:07].
- O segredo da arquitetura: Aprender a "adiar decisões". Ou seja, tomar decisões complexas apenas quando a complexidade realmente se fizer necessária [00:18:45], [00:21:02].
- As 5 separações básicas (que não são overengineering): Controllers/Views, Fluxos de Negócio, Regras de Negócio, Acesso a Dados e Acesso a Tecnologias (APIs, rede) [00:25:08], [00:26:14].
- Como estruturas muito complexas (muitos projetos, pastas, etc.) podem, paradoxalmente, dificultar a manutenção se a complexidade não for justificada [00:08:34], [00:09:52].
Pré-requisitos
- Conhecimento em programação.
- Interesse em boas práticas e arquitetura de software.
Para quem é este curso
Desenvolvedores que buscam entender o equilíbrio entre criar um código simples e funcional versus uma arquitetura complexa e robusta, e que querem evitar a armadilha de complicar desnecessariamente seus projetos.