[Front-end] Uma nova tendência ( não tão nova ) está surgindo?
Galera, faz uns bons 15 anos ou um pouco mais que trabalho com Front-end, e talvez tenha sido um dos privilegiados por ter conhecido a versão mais básica da Web e acompanhado toda a evolução até o cenário que temos hoje.
Uma breve introdução
Então eu vim de uma época onde existia uma complexidade enorme na compatibilidade entre browsers, e não existia : media queries, transition e animation no Css, bordas arredondadas, Promises e a API do DOM era despadronizada, algumas bibliotecas como jQuery salvavam a pele para muitos trabalhos, mas para outros ainda era muito dolorido. Fontes customizadas eram um desafio também, poucos conhecem hoje uma biblioteca que caiu em desuso, a Cufon, que transformava os textos html em fontes customizadas, usando uma biblioteca Js que usava um arquivo Flash para funcionar.
Este era o cenário lá atrás...
Além destas limitações técnicas do browser, ainda tínhamos uma preocupação mais high-level, que era a necessidade de abstrair as partes do todo da nossa aplicação, no contexto do Javascript no client. A partir daí veio o boom de soluções de Frameworks que foram evoluindo durante os anos.
A percepção
Mas não é de hoje que sinto que atingimos o extremo desta "frameworkerização".
Tudo parece estar relativamente mais difícil do que precisaria, já me deparei com uma série de projetos mega complexos com relação à sua estrutura, e extremamente acoplados ao framework.
Acho que é sempre válido se perguntar se o que você acredita de fato faz sentido, pode ser apenas uma alucinação ou um viés com relação à sua experiencia de vida. E este sempre foi meu caminho, mas duas coisas me fizeram acreditar que de fato esta visão que eu estava tendo tinha alguma verdade.
- Uma série de ferramentas / idéias que eu achava desnecessáriamente complicadas começaram a ser revistas e/ou esquecidas. Nesse bolo está: Rxjs, Redux, Flux, Redux Saga, Lifecycles esquisitos:
componentDidMount
,shouldComponentUpdate
, SPA's estão perdendo a importância para uma série de cenários onde SSR e SSG são suficientes ou simplesmente mais performáticos. - Algumas ferramentas e conceitos estão emergindo no mercado, trazendo como principal diferencial estas duas características que parece terem sido perdidas durante estes anos: Simplicidade e ser Agnóstico. Astro, htmx, Alpine.js, Tailwind são alguns exemplos, onde você pode escolher a sua stack no Front e você pode escolher qualquer outra linguagem/stack no Back e de formas relativamente mais simples, em contraste com o modelo atual, onde o framework que escolhe hoje praticamente dita qual será a linguagem no back-end e adiciona ainda uma série de camadas de complexidade a mais, além de te prender no próprio ecossistema.
A minha dor
Eu já tive algumas oportunidades de reescrever alguns projetos que foram desenvolvidos com os frameworks atuais, para versões sem frameworks, usando algumas alternativas mais leves para resolver problemas de UI, usando também o contexto de Islands popularizado pelo time do Astro, e usando uma das inúmeras soluções de gestão de estados agnósticos independente de frameworks. Em todos os casos ficou claro que ficou mais simples, mais rapido principalmente no quesito performance de carregamento.
Então, minha dor é, primeiramente, ver algo que poderia ser mais fácil, mais simples, tomar proporções super complexas a ponto de precisar de um especialista em um framework para poder utilizar as boas práticas (algumas delas muito questionadas entre a própria comunidade).
Além disso, um papel que precisei desempenhar era o de repassar o conhecimento para as novas pessoas começando no Front-end, e estes frameworks acabavam ficando no caminho do que eu acreditava ser super importante para a formação, que eram os fundamentos, seja da linguagem, seja sobre api do browser, além de tornar mais trabalhoso de fato muitas das coisas que precisavamos fazer.
Alguns conceitos com relação à arquitetura, falando de forma agnóstica para mim sempre foram mais importantes, estas de fato ajudariam um sistema a escalar, corroborando com um dos conceitos cunhados pelo Uncle Bob acerca da arquitetura limpa sobre deixar os detalhes da aplicação nas camadas mais externas da sua solução / arquitetura. Porém a escalabilidade por muitas vezes hoje é uma responsabilidade atribuída ao framework, o que soa estranho para mim.
O valor das tendências (novas?)...
Da mesma forma como foi revista a priorização sobre SPA vs SSG/SSR, me parece que estão sendo revistas estas complexidades que temos hoje trazidas pelos frameworks mais modernos. O pensamento no alto acoplamento talvez esteja sendo revisto. Talvez o valor de ser agnóstico esteja novamente sendo discutido.
Talvez tenhamos esquecido que o browser, os bundlers, as linguagens ( HTML, JS e CSS ), as ferramentas e a plataforma, como um todo, evoluíram.
Difícil prever o futuro, estas iniciativas estão cada vez mais ganhando tração, talvez elas não sejam definitivamente saídas que substituirão as atuais, mas sob minha perspectiva, estão fazendo um papel mega importante, que é provar, de maneira empírica, que é possível entregar, para um conjunto grande de problemas, uma solução mais simples.
De maneira tímida no meu pequeno mundo é o que eu tenho tentado fazer já faz alguns bons anos, trazendo um pouco do senso crítico tentando não me apaixonar muito pelas coisas que são amplamente divulgadas ou vendidas, um olhar mais cético nestas soluções silver bullet e praticamente averso à complexidades desnecessárias.
Se esse tipo de pensamento tocou seu coração, sempre publico algo nessa linha, então só me seguir lá no medium.
Um abraço!