Voltar ao Blog
Career15 de novembro de 202510 min de leitura

O Que Uma Década em TI Me Ensinou Sobre Mudar de Stack

DR

Doug Ribeiro

10 min de leitura

A maior parte do conselho sobre mudar de stack trata o tema como um problema técnico: aprenda a sintaxe nova, as APIs novas, o tooling novo. Essa é a parte fácil. A parte difícil é saber quando uma mudança de stack vale o investimento de tempo, como se comprometer de verdade para você ir fundo em vez de ficar em cima do muro, e no que você deve confiar que se transfere mesmo quando o churn de frameworks parece total. Depois de mais de dez anos e três grandes mudanças de stack (de jQuery e AngularJS para React, de React para Angular, e de Angular para a era de signals dele com back-ends em Python), esse é o modelo de decisão que eu uso.

Muda a cada stackSintaxe e APIsPadrões do frameworkFerramental e sistemas de buildConvenções da comunidadePosicionamento no mercadoPermanece igualDecomposição de problemasLer documentação rápidoMetodologia de debugComunicação sob pressãoSaber quando não usar a ferrame…VS

Comecei com jQuery, Bootstrap, JavaScript vanilla e AngularJS. Mais de uma década depois estou escrevendo componentes TypeScript para a plataforma Angular de um grande banco enterprise e construindo meu próprio SaaS em Angular baseado em signals. A distância entre esses dois pontos é enorme. Não apenas tecnicamente, mas profissional e filosoficamente. Quero falar sobre como naveguei essa distância, o que errei ao longo do caminho, e o que a experiência me ensinou sobre aprender novas tecnologias sem perder o chão.

A Evolução da Stack, Honestamente

Aqui está um mapa aproximado de como minha stack evoluiu:

  • 2014-2015: HTML/CSS, JavaScript, jQuery e Bootstrap. Sites responsivos para uma plataforma de empregos com milhões de currículos. Foi aqui que aprendi a realmente construir coisas que funcionavam, e onde dei minha primeira palestra sobre HTML semântico e design responsivo.
  • 2015-2017: React emergiu como vencedor claro da indústria e tomei uma decisão deliberada de aprendê-lo, construindo uma plataforma de viagens em grupo com ele. Conflitava com meu cérebro de designer (JSX me pareceu errado no início) mas aprendi a apreciar sua composabilidade.
  • 2017-2019: Angular 2+ tomou conta, motivado pelos projetos que estavam na minha frente: uma plataforma de check-up de saúde, dashboards de trading em tempo real com D3.js e WebSockets, apps jQuery legados migrados para Angular e um portal de ativação de seguros. TypeScript veio junto e nunca mais saiu.
  • 2020-2021: Um período pesado em design. Dashboards de dados durante um diploma em análise de dados e o estágio que rodou junto, depois liderando o redesign de uma plataforma de saúde mental como UX lead. Angular continuou em dia em paralelo, não em produção.
  • 2022-presente: Angular em escala. Um PWA de cartão de crédito migrado do Angular 13 para o 15 em um monorepo, a plataforma de solicitação de empréstimo de um banco construída sobre micro-frontends na qual acabei de entrar, e meu próprio SaaS com um front end Angular baseado em signals e um back-end em Python. É onde estou agora.

Essa progressão parece limpa em retrospecto. No momento era mais bagunçada. Houve anos em que eu estava montado em duas ou três stacks simultaneamente, não expert em nenhuma, tentando me manter empregável e ao mesmo tempo são.

O Que Muda a Cada Stack

Quando você muda de stack, obviamente a sintaxe muda. O ferramental muda. Os idiomas e padrões mudam. Se você sai de React para Angular, não está apenas aprendendo nomes de funções diferentes. Está aprendendo um modelo mental diferente de como uma aplicação é organizada. Angular é centrado em módulos (ou centrado em componentes com standalone), opinativo, pesado em convenções. React é não opinativo, flexível, deixa decisões de arquitetura para você.

O ecossistema muda. A comunidade muda. A linguagem do mercado de trabalho muda. Desenvolvedores Angular e desenvolvedores React estão pescando em pools parcialmente sobrepostos mas significativamente diferentes quando se trata de vagas, equipes e conversas.

A carga cognitiva de mudar é real e subestimada. Lembro dos meus primeiros meses fazendo Angular sério depois de React. Ficava buscando padrões React instintivamente e batendo em uma parede. A tentação de escrever código estilo React em Angular é forte e produz Angular ruim. Você precisa se comprometer a aprender o novo paradigma nos seus próprios termos, não como tradução do antigo.

O Que Permanece Igual

Esta é a lista mais importante. Aqui está o que foi verdade em toda stack em que trabalhei, ao longo de mais de uma década:

  • Pensamento em componentes. Quebrar uma UI em peças com responsabilidades claras. É universal. A sintaxe difere, os nomes dos métodos de lifecycle diferem, mas a habilidade de decomposição se transfere completamente.
  • Pensamento em gerenciamento de estado. Local vs compartilhado, síncrono vs assíncrono, derivado vs fonte-da-verdade. É idêntico entre frameworks. NgRx e Redux são filosoficamente a mesma coisa com roupas diferentes.
  • Intuição de performance. Entender reflows e repaints, o custo de over-rendering, o valor da memoização. Se aplica em todos os lugares e só se aprofunda.
  • TypeScript e pensamento em tipos. Uma vez que você desenvolve uma mentalidade genuína de types-first, ela te segue para qualquer lugar. TypeScript agora é tão pervasivo que isso é quase uma habilidade universal.
  • Princípios de teste. Isolamento, assertions significativas, testar comportamento não implementação. Não mudam. A biblioteca de teste muda mas a disciplina não.
  • Ler documentação e ler código-fonte. Essa habilidade compõe massivamente. Depois de mais de dez anos consigo navegar o código-fonte de um framework desconhecido mais rápido do que a maioria dos devs junior consegue ler sua documentação.
  • Comunicação. Como escrever uma descrição de PR clara. Como explicar uma decisão técnica para um stakeholder não técnico. Como resistir a uma spec sem criar conflito. Isso nunca deprecia.

Como Avaliar Se Vale Investir em Uma Nova Tecnologia

Essa é a pergunta que mais recebo de desenvolvedores na metade da carreira: como você decide quando fazer um grande investimento em algo novo? Aqui está meu framework honesto:

1. Isso está sendo adotado por organizações como aquelas em que você quer trabalhar?

Este é o filtro mais prático. Adoção de tecnologia segue padrões da indústria. Se você quer trabalhar em finanças enterprise, certas tecnologias (Angular, Java, .NET) têm raízes profundas. Se quer trabalhar em startups de produto, a stack é diferente. Pesquise como são as vagas reais no seu segmento alvo. O que está sendo pedido consistentemente? É onde o ROI de aprendizado é mais alto.

2. Resolve um problema real que você tem, ou é apenas novo?

Sempre tem um framework novo. Svelte, Solid, Qwik, Astro. Todos são genuinamente interessantes. Alguns resolvem problemas reais. Mas se você está trabalhando com Angular e Angular resolve bem seu problema, o ROI de mudar para Svelte é baixo. Eu invisto em nova tecnologia quando ela resolve algo com que estou realmente lutando. Caso contrário, aprendo superficialmente para me manter informado e sigo em frente.

3. Qual é o custo de oportunidade?

Aprender um novo framework leva tempo real. Tempo gasto aprendendo Svelte é tempo não gasto aprofundando em Angular, que é pelo que me pagam. Eu rastreio isso conscientemente. Meu orçamento de aprendizado não é infinito, e há retornos decrescentes em amplitude quando você já é generalista.

4. Há sinal de comunidade e longevidade?

Fui queimado no início da carreira por investir em tecnologias que sumiram rapidamente. Agora espero uma segunda onda de adoção antes de me comprometer totalmente com algo. A segunda onda é quando os early adopters encontraram e documentaram os pontos de dor, quando o ecossistema amadureceu o suficiente para suportar uso em produção, e quando organizações começam a publicar vagas para isso. Surfar a primeira onda é empolgante; surfar a segunda é mais produtivo.

A Mentalidade do Generalista Especialista

O termo que passei a usar para o que sou é 'generalista especialista'. Tenho profundidade genuína em áreas específicas. Angular, TypeScript, arquitetura front-end, UX/UI. E tenho alfabetização funcional em uma gama mais ampla de tecnologias. Essa combinação é diferente de ser um generalista puro (raso em muitas coisas) ou um especialista puro (profundo em uma coisa).

O generalista especialista é mais valioso quando os problemas são complexos e cross-funcionais. Quando resolver algo bem requer puxar múltiplas habilidades simultaneamente. Em um time enterprise construindo uma interface bancária complexa, ser capaz de pensar sobre a arquitetura TypeScript, o sistema de design tokens SCSS e o design de interação do usuário simultaneamente é mais valioso que qualquer especialidade única.

O risco do generalista especialista é identidade. No início da carreira eu não tinha certeza de como me descrever e essa incerteza aparecia em entrevistas. Agora sou claro: sou um Desenvolvedor Front-End Sênior com background em UX. Começar pela habilidade primária e nomear a segunda como background posiciona a habilidade secundária como amplificadora da primária, não como diluente.

O Que Eu Diria Para Alguém no Ano 5 da Carreira

Cinco anos é geralmente quando desenvolvedores começam a questionar suas escolhas de stack seriamente. Você sabe o suficiente para ver as limitações do que está usando, e está ciente de que o campo se move rápido. Aqui está meu conselho honesto:

Não mude de stack por ansiedade. Mude quando tiver uma razão clara. Um novo cargo, um problema genuíno resolvido pela nova ferramenta, uma expansão deliberada do seu valor de mercado. Pular de stack por ansiedade produz expertise rasa em todos os lugares e expertise profunda em nenhum.

Quando mudar, se comprometa totalmente. Não escreva sua nova stack nos idiomas da antiga. Aprenda como a nova comunidade pensa, não apenas a sintaxe. Leia o guia de estilo oficial. Estude bases de código reais em produção na nova tecnologia. O caminho mais rápido para a profundidade é imersão deliberada, não experimentação cautelosa.

Toda mudança de stack parece começar do zero. Não é. Você traz tudo aquilo que não tem nome.

Referências

CareerAngularReactLearning