Frameworks JS: Ame-os ou deixe-os
Published: 2020-08-17 13:54:13

Salve pessoal, como estão todos vocês? Bem, eu espero.

Hoje vou tratar de um assunto que gera bastante polêmica na comunidade JS:

Frameworks... usar ou não usar, eis a questão.

## Introdução

Pra quem não sabe do que se trata o termo, em poucas palavras, pode-se dizer que um **framework** é uma solução escrita para resolver um problema genérico. É comumente também relacionado à **libraries** (bibliotecas), uma vez que um framework pode ser também uma library ou um conjunto delas.

No universo Javascript, há uma infinidade dessas funcionalidades genéricas (há rumores que nascem mais frameworks JS por dia do que bebês na China), em sua maior parte de código open source, criadas pela própria comunidade. E há também muita discussão sobre usar ou não esses códigos de terceiros. Esse artigo será divido em duas partes, na primeira vou abordar alguns prós e contras sobre o assunto e na segunda vou trazer um exemplo prático sobre alguns pontos citados.

## Qual a escolha certa?

A primeira coisa que gostaria de falar é que não existe "certo ou errado" quando se trata desse assunto, é muito mais uma questão de "necessidade e escolha". Sendo assim, é extremamente necessário saber qual problema estamos tentando resolver e em que situação para que seja possível escolher a solução mais adequada. Vou tentar listar alguns dos pontos que considero mais importantes nas duas abordagens.

>**Nota**: *Vale ressaltar que nada aqui escrito é uma regra absoluta, mas sim opiniões construídas de acordo com a minhas vivências e experiências e que podem variar de acordo com as experiências de cada um. Também é necessário entender que na maioria dos casos estamos falando sobre frameworks com uma certa relevância, com boas práticas, organização, testes e com bons padrões de qualidade.*

**Pontos fortes de utilizar frameworks:**

- É uma solução utilizada por uma vasta comunidade, consequentemente, há várias pessoas trabalhando em busca da resolução de um mesmo problema, o que traz uma visão coletiva e com diferentes pontos de vista.
- É uma abstração mais simples para algo que pode não ser importante no contexto desejado. Por exemplo, não é necessário saber como funciona todas as engrenagens de um carro para aprender a dirigir e se locomover com mais facilidade.
- Agilidade no desenvolvimento. Não é uma regra, mas geralmente é um ganho, uma vez que as abstrações diminuem o nível de complexidade de algumas soluções.

**Pontos fracos de utilizar frameworks:**

- Customização. Como se trata de uma solução que visa resolver um tipo de problema específico, pode ser que em algum momento você tenha um caso que não se encaixe na mesma.
- Bugs. Pode ser que uma atualização no framework ou uma mudança de versão gere um bug indesejado no seu código e você não tem controle do mesmo para corrigir.
- Dependência. Algo muito comum é o desenvolvimento de um código estar completamente atrelado a um framework, criando uma relação de dependência total. Ou seja, se em algum momento o framework for descontinuado ou não tiver mais manutenção, isso pode ser gerar um grande problema.

**Pontos fortes de não utilizar frameworks:**

- Maior controle sobre o código. Uma vez que você vai desenvolver tudo utilizando a tecnologia nativa, você tem total controle sobre tudo que foi construído.
- Criação de soluções altamente customizáveis
- Menos overload. Quanto menos módulos de terceiros sua aplicação tiver que carregar, ela será mais leve e terá um build mais eficiente.
- Domínio maior da tecnologia nativa.

**Pontos fracos de não utilizar frameworks:**

- Complexidade. Algumas vezes, pode ser complexo e até mesmo desnecessário criar uma solução do zero para todo o problema.
- Padronização. Quando você trabalha em um time grande, dependendo da experiência do mesmo e do tamanho do projeto, pode ser difícil gerenciar o mesmo ao longo do tempo.
- Tempo. Provavelmente você demandará mais tempo desenvolvendo algumas coisas que já estão "prontas".

## Conclusão

Eu, particularmente, acho que os milhares de frameworks JS são uma das coisas mais legais do universo javascript! Me dá a sensação de estar trabalhando o tempo todo com gente do mundo inteiro, além de ter acesso a ótimas soluções que provavelmente eu não teria tempo e capacidade de desenvolver sozinho nem em uma vida inteira. Ainda assim, vez ou outra estou em alguma situação em que a melhor opção é não utilizar. Por exemplo, quando realmente não há um framework que atende totalmente a sua necessidade ou quando por questões de segurança, você opta por não transitar algumas informações sensíveis por libs de terceiros, ou ainda por não poder correr o risco de depender de uma lib externa, dentre outros.

Levando em consideração todos os prós e contras levantados para ambas as situações, percebe-se que não é uma simples questão de "bom ou ruim" ou "gostar ou não gostar", mas de fazer escolhas certas dentro de um determinado contexto. Sendo assim, a dica é fazer um balanço da situação que você se encontra e dos prós e contras de cada abordagem para chegar na melhor solução possível.

## Próximos passos

Apesar de achar o uso dos frameworks super positivo em termos de produtividade, padronização, reuso, dentre outras vantagens, tem algo que vejo no dia-a-dia que considero um ponto negativo. Alguns desenvolvedores estão completamente orientados ao uso de frameworks, ao ponto de não saber como algumas coisas básicas da tecnologia funcionam. Algo que sempre defendo é o bom e velho "do the basics", conhecer bem os conceitos e principais nuances da linguagem ou tecnologia com a qual você trabalha. Então, como citei no início, na **parte 2** desse artigo vou trazer um exemplo prático bem legal sobre esse tema, abordando uma das soluções mais usadas em Node JS.

Por enquanto, é isso. E vocês, o que acham sobre o uso dos frameworks? Deixem suas opiniões, comentários e feedbacks nos comentários.

Um grande abraço, que a força esteja com todos vocês!