O olhar de um front-end sobre Projetos React, Angular e Design Patterns.
Incômodo
Depois de alguns anos desenvolvendo todo tipo de aplicação front-end, eu senti que estava faltando algo. Todo começo de projeto é a mesma coisa, roda um comando, configura uma coisa ou outra e pronto, pode codar. Porém, eu comecei a sentir falta de uma estrutura ali, parecia que os meus projetos estavam todos bagunçados.
No início todo projeto é lindo e bem estruturado, mas com o passar do tempo, parece que tudo se transformava numa grande bola de neve. Adicionar novas features, manutenção do código, debugar um arquivo de +500 linhas, testes... e uma coisa que poderia ser simples, acabou se tornando uma dor de cabeça. E aí foi quando eu comecei a procurar e me aprofundar melhor sobre a escalabilidade das coisas e junto disso, design pattern.
No React, se você não tem uma boa base de programação, fluxograma e regras de negócios, você pode acabar fazendo uma bomba relógio. Eu nunca tive Tech Leader ou um fluxograma de projeto para me orientar em algumas coisas, então eu iniciava e desenvolvia os projetos do jeito que achava correto ou no mínimo, funcional. E de repente, boom!, virou uma bomba relógio. Código em todos os lugares e de qualquer jeito. O importante é entregar a task. (Só que não).
Quando isso começou a me incomodar, fui atrás de estudar arquitetura de projetos, design pattern e me deparei com Angular:
Angular
Em um artigo desses qualquer, lembro que li um que explicava sobre MVC e como o Angular aplica isso. Eu fiquei muito curioso em saber como um framework aplica um design pattern e então comecei a estudá-lo.
Com algumas horas de estudo você já percebe a diferença do Angular para o React. Eu tive uma chave virada na minha cabeça depois de desenvolver uma simples to-do-list em Angular para pegar a sintaxe. A estrutura do projeto, serviços, injeção de dependência, construção de rotas, formulários, requisições http e mais tantas outras coisas que ainda estou estudando. O Angular disponibiliza tudo isso e de uma forma muito objetiva.
Aprender Angular e aprender React são duas coisas diferentes, mas iguais. Angular tem uma curva de aprendizado maior, por conta da abordagem estruturada. No React a curva de aprendizado é menor, com uma abordagem voltada para componentes, fica mais rápido o aprendizado.
O Angular já oferece uma arquitetura de projeto pra você, isso deixa seu código mais organizado e simplifica a manutencão de projetos de grande escala. O React não oferece isso, é uma lib com arquitetura em componentes e flexível e aí que mora o perigo. NÃO ESTOU DIZENDO QUE NÃO DÁ PARA MANTER UMA ARQUITETURA COM REACT, dá pra manter, mas exige um conhecimento bem mais sólido da área.
Mas não se preocupe, uma base sólida em Javascript é a chave pra entender essas coisas.
A verdade é que eu estou muito maravilhado com o Angular e espero poder trabalhar com ele em algum momento.
E não esqueça de estudar design pattern, uma hora ou outra ele vai servir pra você.