Nos últimos anos, grandes empresas abriram o código de suas soluções internas em JavaScript com um grande foco na confiabilidade (reliability), estabilidade e manutenibilidade. No FOSDEM'20, Geertjan Wielenga explicou as razões por trás desse movimento e quais os benefícios disso para a comunidade de desenvolvimento de software.
Geertjan Wielenga, autor do livro "Developer, Advocate!" e desenvolvedor na Oracle trabalhando com NetBeans e Oracle JET, relembrou a evolução dos frameworks e bibliotecas JavaScript ao longo da última década. Dojo (1.x), Mootools, Extjs, jQuery e YUI foram algumas das primeiras bibliotecas a ganharem projeção e ajudaram na construção de diversas aplicações web. Backbone, Knockout, Ember, Angularjs (não confunda com o Angular) apareceram em seguida para resolver alguns dos problemas comuns que existiam na construção de aplicações mais interativas.
Mais adiante, Grunt, Gulp, Brunch e outras ferramentas chegaram ao mundo para auxiliar na gestão da complexidade do desenvolvimento e empacotamento de aplicações web. E nos dias atuais, são 3 os grandes frameworks que ocupam boa parte das discussões do mundo do desenvolvimento de software: Angular, Vue e React.
Cada um desses frameworks passou por seu próprio ciclo de depreciação e também pelas temidas breaking changes (aquelas mudanças críticas que, muita vezes, exigem uma migração de aplicações que utilizam o framework) a medida que trouxeram novas funcionalidades e aumentaram sua complexidade.
Wielenga reuniu os frameworks e bibliotecas mencionadas em um conjunto que chamou de primeira geração, apontando que essas soluções sofrem de 3 sérios problemas. O primeiro de todos é que grande parte desses frameworks são caracterizados por um alto nível de uma rotatividade tecnológica, o que faz com que quem os utilize tenha que estar sempre lidando com essas "novidades". A medida que um framework muda, todo o ecossistema ao seu redor também muda, deixando ainda mais evidente essa questão da rotatividade.
O segundo problema, ainda em desenvolvimento nas palavras de Wielenga, é definido pela incompatibilidade de stacks customizadas:
Se você utiliza Vue, você utiliza outras sete coisas além de Vue. (...) Se você precisa de uma biblioteca de componentes, (...) você procura por essa biblioteca em um local e você vai a um terceiro local para, de fato, construir sua aplicação. Tão logo você tem um problema. você busca por informações no Stack Overflow e encontra uma solução, o que parece ser uma ótima solução. Por outro lado, você descobre que não está utilizando duas ou três coisas que são específicas para aquela solução.
A especialização de profissionais do desenvolvimento é o terceiro grande problema destacado. Segundo Wielenga, infelizmente, não há mais profissionais JavaScript, e sim profissionais de uma solução específica:
Pela primeira vez na história nós temos pessoas que se identificam com um framework ao invés da linguagem. (...) Pessoas se identificando com um framework é uma tragédia.
Ao mesmo tempo que esse fenômeno acontece, grandes empresas começaram a utilizar JavaScript para o desenvolvimento de soluções front-end. Essa tendência se justifica pela ubiquidade dos navegadores de internet (browsers) como plataforma de distribuição (JavaScript se tornou o padrão como linguagem de programação para navegadores), pelas possibilidades trazidas com os dispositivos móveis e pelo grande número de profissionais que finalizam sua formação profissional com conhecimentos em JavaScript.
No entanto, esse movimento de grandes empresas veio acompanhado de algumas tensões na perspectiva de Wielenga:
Grandes empresas estão adotando JavaScript (...) para criar aplicações reais e robustas. (...) Porém, no mundo corporativo, as decisões não são tomadas pelas tecnologias mais novas ou mais legais. As decisões são tomadas com base em estabilidade, confiabilidade (...) e a manutenibilidade no longo prazo.
A alta demanda por profissionais, somada ao aumento da adoção de JavaScript, acabou sendo um incentivo para que grandes empresas abrissem o código de suas soluções, na expectativa de conseguirem atrair mais pessoas para suas posições. Na explicação de Wielenga:
Se você desenvolve software, você pode trabalhar em um local onde existem tecnologias abertas e os aprendizados adquiridos podem ser levados para um outro local, ou você pode trabalhar em um local onde você investirá seu tempo aprendendo algo proprietário e específico para aquele contexto particular. (...) Simplesmente para atrair mais profissionais, as empresas estão sendo forçadas a abrirem seus códigos para o mundo criando, dessa forma, uma stack mais atrativa para essas pessoas.
Isso nos leva ao que Wielenga chama de a segunda geração de frameworks e bibliotecas JavaScript. Essa segunda geração encaminha, basicamente, os grandes requisitos do mundo corporativo. Dentre esses requisitos estão um conjunto de soluções estáveis e comprovadamente funcionais, design responsivo, acessibilidade e internacionalização, recursos para visualização de dados (ponto chave para os mercados de logística, saúde e financeiro), segurança, otimizações de performance, conformidade com novos padrões (como os componentes web), empoderamento de pessoas de negócio, documentação e suporte.
Isso pode significar que essas soluções não incluem as mais recentes, as mais legais e as mais inovadoras tecnologias, mas que são estáveis. Essas são soluções te possibilitam evitar o uso de frameworks sendo possível focar mais em conjuntos de ferramentas (toolkits), enfatizam a flexibilidade, modularidade e facilidade de evoluir o software, e são aderentes aos padrões que, muito provavelmente, ainda estarão vigentes na próxima década. Um grande número de profissionais do mundo corporativo está vindo de plataformas como Java ou .NET e estão utilizando JavaScript pela primeira vez. É preciso que essa transição de universos seja suave e contenha soluções já prontas para resolverem problemas. Wielenga afirma:
Você não quer que todas as pessoas em sua empresa descubram, por conta própria, qual stack deverá ser utilizada.
Grandes empresas como Oracle, SAP ou Microsoft, assim como outras grandes empresas que empregam profissionais do desenvolvimento, estão participando do desenvolvimento dessa segunda geração de bibliotecas de uma forma bastante natural. Na perspectiva de Wielenga, todas as grandes empresas estão se tornando empresas de TI. Paypal, Walmart, Uber, AirbnB, Financial Times, dentre outras empresas, também estão abrindo o código de parte de sua stack.
Fonte: Palestra do FOSDEM'20.
Por fim, Wielenga concluiu sua apresentação encorajando profissionais do desenvolvimento de software a mudar sua postura, deixando de ficar comparando Angular, React e Vue, e passar a procurar por soluções suportadas pelo mundo corporativo. Além disso, Wielenga sugere que se escolha uma dessas soluções e que se comece a contribuir ativamente com sua evolução.
O vídeo completo da apresentação, em inglês, está disponível no site do FOSDEM'20 e contém informações adicionais. O FOSDEM'20 aconteceu em Bruxelas, na Bélgica, nos dias 01 e 02 de fevereiro de 2020.