Executando verificação de segurança...
1

Por que a comunidade de rails parece sempre querer reinventar a roda

Nos últimos quatro anos atuei como desenvolvedor fullstack, trabalhando com stacks como React, React Native, Angular no frontend e Rails/Python no backend. Mesmo nos projetos mais bagunçados ou mal otimizados, havia uma certa disciplina em respeitar os padrões da stack utilizada. A estrutura de componentes, os contratos REST, a escolha das bibliotecas, ainda que às vezes desatualizadas ou pouco populares, costumavam seguir uma documentação razoável e uma lógica compartilhada.

Recentemente, fui contratado como desenvolvedor pleno para trabalhar exclusivamente com aplicações Rails fullstack. Confesso que abandonar o ecossistema SPA foi estranho no começo, mas durante a fase de onboarding consegui me reacostumar com conceitos como MVC tradicional e SSR com erb.

O que me surpreendeu, porém, foi a completa falta de coesão técnica no projeto, mesmo com uma equipe experiente e sênior. A configuração do Tailwind, por exemplo, simplesmente não compila sem ajustes manuais constantes. Os View Components foram implementados com uma stack alternativa e pouco popular, escolhida unicamente porque o tech lead "preferia assim". Há uma abstração excessiva das lógicas de negócio que, apesar de evitar reescrita de código, gera um efeito colateral: quando uma pequena parte precisa mudar, é necessário alterar toda a estrutura base para acomodar isso, o que claramente não escala.

Fico com a impressão de que há uma certa soberba técnica na comunidade Rails. Existe um discurso comum de evitar frameworks frontend modernos como forma de simplificar, mas ao mesmo tempo surgem soluções caseiras que tentam replicar funcionalidades já resolvidas, de forma inconsistente e pesada.

Essa tendência de querer reinventar tudo dentro da própria bolha é recorrente. Ao invés de integrar soluções consolidadas do ecossistema web, há sempre um esforço para criar uma versão "Rails way", mesmo que menos eficiente ou madura. Seja com Hotwire tentando substituir o que React e Vue já fazem de forma estável há anos, ou com ferramentas como Stimulus tentando ocupar o espaço de bibliotecas JS que já lidam com interatividade de maneira mais robusta, parece haver uma necessidade constante de provar que dá para fazer tudo sem sair do universo Rails.

Desde a polêmica decisão do DHH de remover TypeScript do Turbo, sinto que o foco da comunidade deixou de ser resolver problemas reais de forma pragmática e passou a ser reinventar a roda com a própria assinatura, mesmo que isso sacrifique qualidade e clareza. A justificativa quase sempre é evitar "complexidade", mas o resultado é uma complexidade disfarçada de simplicidade. Parece mais um exercício de ego do que de engenharia.

Curiosamente, não vejo esse comportamento em ecossistemas como Node.js ou ASP.NET, onde há um foco maior em interoperabilidade e uso de padrões consolidados da indústria. No Rails, por outro lado, parece haver um esforço constante em reinventar o que já está resolvido, como se qualquer dependência externa fosse uma ameaça à identidade do framework.

Carregando publicação patrocinada...
2

Curiosamente, não vejo esse comportamento em ecossistemas como Node.js ou ASP.NET

Sinceramente seu ponto de vista está biasado pelo projeto que participou.

Você está generalisando a comunidade inteira por conta de experiências ruins que você teve.

Mas o real problema está aqui:

O que me surpreendeu, porém, foi a completa falta de coesão técnica no projeto
escolhida unicamente porque o tech lead "preferia assim"

São decisões de projeto que escolhem ir para o caminho errado. que a princípio parece ser o mais fácil.

E sim, já tive esses problemas em equipes que rtabalhavam com PHP, .NET e Node.JS

Engraçado que a experiência que eu tive com NodeJS eu pedi demissão no segundo dia!

O projeto era tão mal feito e tão problemático que simplesmente não compensava eu estar nele.

há sempre um esforço para criar uma versão "Rails way"

Dê uma olhadinha no Laravel Livewire e no Razor Pages. São tecnologias que tentam imitar o que o React faz trazendo para sua stack. Todas as comunidades tem isso.

Conteúdo excluído
2

Concordo que reinventar é importante, é isso que impulsiona a evolução da tecnologia. Mas o que me incomoda no caso do Rails é que essa reinvenção muitas vezes não parece surgir da necessidade de resolver um problema de forma melhor, e sim de uma postura meio egocêntrica ou até estratégica, buscando destacar o "Rails way" a qualquer custo.
O resultado disso raramente é mais clareza, simplicidade ou desempenho. Na prática, o que vejo são soluções paralelas, que ignoram ferramentas já consolidadas e acabam criando atrito sem agregar valor real. Reinventar por si só não é um problema. O problema é quando se reinventa só por identidade ou ideologia, sem entregar algo que realmente funcione melhor.