Para quem é este guia?
Estudantes de Engenharia de Software, Análise e Desenvolvimento de Sistemas e Sistemas de Informação que querem se tornar Desenvolvedores Fullstack produtivos e especialistas em uma área. A filosofia aqui é o perfil T-shaped: você conhece tudo um pouco, mas domina de verdade uma área.
Este post foi baseado na minha Stack principal JS/TS então vou falar sobre o caminho que eu entendo e tenho propriedade.
O que é a Filosofia T-Shaped Developer
A ideia é simples: você entende o sistema como um todo, consegue atuar em qualquer camada, mas tem uma área onde você é referência na empresa.
Os 4 Níveis de Carreira Técnico
| Nível | Tempo estimado | O que define |
|---|---|---|
| Estagiário | 0 – 12 meses | Aprende executando tarefas supervisionadas |
| Júnior | 1 – 2 anos | Entrega com autonomia em tarefas bem definidas |
| Pleno | 2 – 5 anos | Resolve problemas complexos e guia júniores |
| Sênior | 5+ anos | Define arquitetura, antecipa problemas, influencia time |
Obs.: Após estes níveis ainda temos o especialista que não entra nesse post. Se quiser saber um pouco sobre carreira em Y segue um conteúdo publicado na TOTVS veja aqui
FASE 0 — Fundamentos Universais
Todos os níveis precisam dominar isso antes de escolher uma especialização.
Lógica e Programação
- Lógica de programação e algoritmos
- Estruturas de dados (arrays, listas, filas, pilhas, árvores, grafos)
- Complexidade de algoritmos (Big O notation)
- Paradigmas: OOP, funcional, procedural
Ferramentas de Desenvolvimento
- Git — controle de versão (branching, merge, rebase, pull requests)
- Terminal / linha de comando (bash/zsh)
- VS Code e extensões essenciais (IDE)
- Figma — leitura e interpretação de protótipos (todo dev precisa saber ler um design)
Fundamentos Web
- HTTP/HTTPS — verbos, status codes, headers
- DNS, domínios e como a internet funciona
- APIs REST — o que são, como consumir e criar
- JSON e serialização de dados
- Autenticação: cookies, sessions, JWT, OAuth2
Metodologias
- Scrum — sprints, cerimônias, artefatos (product backlog, sprint backlog, DoD)
- Kanban básico
- Gitflow ou trunk-based development
TRILHA 1 — Frontend
Stack de referência: React · Next.js · SCSS
Estagiário → Júnior
HTML & CSS
- HTML semântico (acessibilidade, SEO básico)
- CSS Flexbox e Grid
- SCSS/Sass — variáveis, mixins, nesting, @extend
- Responsividade e mobile-first
- Design System: tokens de cor, tipografia, espaçamento
JavaScript Fundamental
- ES6+ (arrow functions, destructuring, spread, modules)
- Promises, async/await
- Manipulação do DOM
- Fetch API e consumo de APIs REST
React
- Componentes funcionais e JSX
- Props e state (
useState,useEffect) - Componentização e reutilização
- React Router (rotas básicas)
- Formulários controlados e validação
Júnior → Pleno
React Avançado
- Hooks avançados:
useCallback,useMemo,useRef,useContext - Custom Hooks
- Gerenciamento de estado global: Zustand ou Redux Toolkit
- React Query / TanStack Query (cache e sincronização de dados)
- Error Boundaries
Next.js
- Pages Router vs App Router
- SSR, SSG, ISR — quando usar cada um
- API Routes no Next.js
- Middleware e autenticação com NextAuth
- Otimização de imagens, fontes e performance (Core Web Vitals)
- SEO: meta tags, Open Graph, sitemap
Qualidade e Testes
- TypeScript no React
- Testes com Jest + React Testing Library
- Storybook para documentação de componentes
- Acessibilidade (WCAG, ARIA)
Pleno → Sênior (Especialização Frontend)
- Micro-frontends (Module Federation)
- Design Systems do zero (Tokens, Theming, multi-brand)
- Performance avançada: code splitting, lazy loading, bundle analysis
- Web Vitals e monitoramento com Real User Monitoring (RUM)
- Arquitetura de componentes escalável (Atomic Design, Feature Sliced Design)
- Server Components (React 18+) e Streaming SSR
- Internacionalização (i18n) com next-intl
- Segurança no frontend: XSS, CSRF, Content Security Policy
- Figma to Code avançado — documentar e criar handoffs profissionais
TRILHA 2 — Backend 💘
Stack de referência: NestJS · PostgreSQL · Redis · RabbitMQ
Estagiário → Júnior
Node.js & TypeScript
- Node.js: event loop, módulos, npm/yarn
- TypeScript: tipos, interfaces, generics, decorators
- Express.js para entender o básico de HTTP servers
NestJS
- Arquitetura: Modules, Controllers, Services, Providers
- Injeção de dependências
- DTOs e validação com
class-validator - Guards, Interceptors, Pipes, Filters
- Autenticação com JWT e Passport
Banco de Dados
- PostgreSQL: DDL/DML, JOINs, índices básicos, constraints
- ORM com TypeORM ou Prisma
- Migrations e Seeding
Júnior → Pleno
NestJS Avançado
- Módulos dinâmicos e configuração por ambiente (.env)
- Microserviços com RabbitMQ (producers, consumers, fanout, direct)
- WebSockets com NestJS
- Caching com Redis (cache-aside, TTL, invalidação)
- Upload de arquivos e integração com S3 (AWS)
- Documentação com Swagger/OpenAPI
PostgreSQL Avançado
- Window functions, CTEs, subqueries
- Índices (B-tree, GIN, GiST) e EXPLAIN ANALYZE
- Transactions e controle de concorrência (MVCC)
- Full-text search nativo
Qualidade
- Testes unitários com Jest
- Testes de integração e e2e com Supertest
- Clean Code e SOLID na prática
- Domain-Driven Design (DDD) básico
Pleno → Sênior (Especialização Backend)
- Arquitetura de microsserviços — comunicação síncrona vs assíncrona
- Event-Driven Architecture com RabbitMQ / Kafka
- CQRS e Event Sourcing
- API Gateway e BFF (Backend for Frontend)
- Rate limiting, throttling e resiliência (circuit breaker, retry, bulkhead)
- Observabilidade: logs estruturados, métricas, tracing distribuído (OpenTelemetry)
- Segurança avançada: OWASP Top 10, SQL Injection, validações
- Design de APIs escaláveis (versioning, pagination, HATEOAS)
TRILHA 3 — Mobile
Stack de referência: React Native
Estagiário → Júnior
React Native Fundamentos
- Diferenças entre React e React Native
- Componentes nativos: View, Text, Image, ScrollView, FlatList
- StyleSheet e Flexbox no React Native
- Navegação com React Navigation (Stack, Tab, Drawer)
- Expo vs React Native CLI — quando usar cada
- Consumo de APIs REST no mobile
Júnior → Pleno
React Native Intermediário
- Armazenamento local: AsyncStorage, MMKV
- Câmera, localização e permissões
- Push notifications com Firebase (FCM)
- Animações com Reanimated 2
- Deep linking e Universal Links
- Gerenciamento de estado: Zustand ou Redux Toolkit
- TypeScript no React Native
Qualidade e Deploy
- Testes com Jest + React Native Testing Library
- Build e publicação na App Store e Google Play
- CI/CD para mobile (Fastlane, EAS Build)
Pleno → Sênior (Especialização Mobile)
- New Architecture do React Native (Fabric, JSI, TurboModules)
- Native Modules em Swift/Kotlin quando necessário
- Desempenho: hermes engine, bundle splitting, profiling
- Offline-first com sync strategy
- A/B testing e feature flags no mobile
- Monitoramento: Crashlytics, Sentry, Performance monitoring
- App Store Optimization (ASO) e processo de review
TRILHA 4 — DBA (Database Administrator / Data Engineer)
Stack de referência: PostgreSQL · Redis
Estagiário → Júnior
- Modelagem relacional: entidades, atributos, relacionamentos
- Normalização (1NF, 2NF, 3NF, BCNF)
- SQL completo: SELECT, INSERT, UPDATE, DELETE, JOINs, GROUP BY, HAVING
- Constraints: PK, FK, UNIQUE, NOT NULL, CHECK
- PostgreSQL: instalação, psql, pgAdmin
- Redis: estruturas de dados (strings, hashes, lists, sets, sorted sets)
Júnior → Pleno
- Índices: tipos, criação, quando usar e quando não usar
- EXPLAIN / EXPLAIN ANALYZE — leitura de query plans
- Transactions: BEGIN, COMMIT, ROLLBACK, SAVEPOINT
- Stored Procedures e Functions no PostgreSQL
- Views, Materialized Views e Triggers
- Backup e restore (pg_dump, pg_restore)
- Redis: pub/sub, Lua scripting, TTL e eviction policies
- Redis como session store e cache distribuído
Pleno → Sênior (Especialização DBA)
- Replicação (streaming replication, logical replication)
- High Availability: Patroni, pgBouncer (connection pooling)
- Particionamento de tabelas (range, list, hash)
- Vacuuming, autovacuum e bloat management
- Monitoramento com pgstat*, pgBadger
- Tuning de PostgreSQL (work_mem, shared_buffers, autovacuum)
- NoSQL: diferenças, quando usar cada paradigma
- Data Warehousing básico e conceitos OLAP vs OLTP
- Segurança: roles, row-level security, criptografia em repouso
TRILHA 5 — DevOps
Stack de referência: AWS · Docker · GitHub Actions
Estagiário → Júnior
- Linux: comandos essenciais, permissões, processos, systemd
- Redes: TCP/IP, DNS, HTTP, portas, firewalls
- Docker: imagens, containers, Dockerfile, docker-compose
- Variáveis de ambiente e gerenciamento de segredos
- AWS básico: IAM, EC2, S3, RDS, VPC
- CI/CD básico com GitHub Actions (build, test, deploy)
Júnior → Pleno
- Docker avançado: multi-stage builds, otimização de imagens
- Kubernetes: pods, deployments, services, ingress
- Helm Charts básicos
- AWS intermediário: ECS/EKS, Lambda, CloudFront, Route53, SQS, SNS
- Infrastructure as Code com Terraform
- Monitoramento: CloudWatch, Grafana + Prometheus
- Logs centralizados: ELK Stack ou CloudWatch Logs
- Segurança: IAM roles, security groups, secrets manager
Pleno → Sênior (Especialização DevOps / SRE)
- GitOps com ArgoCD ou Flux
- Service Mesh (Istio)
- FinOps: otimização de custos na nuvem
- SRE: SLO, SLI, SLA, error budgets
- Chaos Engineering
- Multi-region e disaster recovery
- Platform Engineering: criação de developer portals internos
- Segurança DevSecOps: SAST, DAST, triagem de vulnerabilidades
- RabbitMQ em produção: clustering, HA, dead letter queues, monitoramento
TRILHA 6 — Gestão de Projetos / Tech Lead
Stack de referência: Scrum · PMBOK
Estagiário → Júnior
- Scrum completo: papéis (PO, SM, Time), eventos, artefatos
- Escrita de User Stories (Como… quero… para…)
- Critérios de aceite e Definition of Done
- Ferramentas: Jira, Trello, Notion, Linear
- Comunicação assíncrona eficaz (Slack, documentação)
Júnior → Pleno
- PMBOK fundamentos: grupos de processo, áreas de conhecimento
- Gestão de riscos: identificação, análise, plano de resposta
- Estimativas: Planning Poker, T-shirt sizing, story points
- OKRs e alinhamento estratégico
- Facilitação de reuniões e cerimônias Agile
- Gestão de stakeholders e comunicação com não-técnicos
- Métricas Agile: velocity, lead time, cycle time, throughput
Pleno → Sênior (Especialização Tech Lead / PM)
- Arquitetura de decisão: ADRs (Architecture Decision Records)
- Gestão de dívida técnica
- Roadmap de produto e priorização (RICE, MoSCoW, Kano)
- Discovery e técnicas UX: entrevistas de usuário, jobs to be done
- Liderança técnica sem autoridade formal
- Mentoria e desenvolvimento de time
- Gestão de contratos e fornecedores
- PMI-ACP e/ou PSM — certificações recomendadas
Como Escolher Sua Especialização
Responda com honestidade:
| Pergunta | Aponta para |
|---|---|
| Você fica animado resolvendo problemas de UX e visual? | Frontend |
| Você curte desenhar sistemas e fluxos de dados? | Backend |
| Você quer ver seu app na mão das pessoas? | Mobile |
| Dados e performance de queries te fascinam? | DBA |
| Você quer garantir que tudo funciona em produção? | DevOps |
| Você gosta de organizar times e projetos? | Gestão |
Dica: Não espere terminar todas as trilhas para escolher. A especialização começa a se revelar naturalmente pelos problemas que você escolhe resolver.
Plano de Estudos por Semana
Semana tipo para quem está estudando fora do trabalho:
| Dia | Foco |
|---|---|
| Segunda | Fundamentos / Teoria da especialização |
| Terça | Prática: projeto pessoal |
| Quarta | Trilha fullstack (área diferente da especialização) |
| Quinta | Prática: projeto pessoal |
| Sexta | Conteúdo: artigos, vídeos, podcasts da área |
| Sábado | Projeto pessoal ou contribuição open source |
| Domingo | Revisão e planejamento da semana |
Projetos Práticos por Nível
Estagiário
- To-do list com React + API fake (json-server)
- CRUD simples com NestJS + PostgreSQL
- Tela de login com React Native
Júnior
- Blog com Next.js (SSG + SSR)
- API RESTful com autenticação JWT (NestJS + PostgreSQL)
- App mobile com autenticação + listagem de dados reais
Pleno
- Sistema SaaS multi-tenant (Next.js + NestJS + PostgreSQL)
- Worker com RabbitMQ + Redis para processamento assíncrono
- App mobile com offline-first e sincronização
Sênior
- Plataforma com microserviços comunicando via RabbitMQ
- Pipeline CI/CD completo com GitHub Actions + ECS/EKS (AWS)
- Design System publicado no npm
- Dashboard de monitoramento com Grafana + PostgreSQL
Recursos de Estudo Recomendados
Documentações Oficiais (leitura obrigatória)
- react.dev | nextjs.org | docs.nestjs.com
- postgresql.org/docs | redis.io/docs
- docs.aws.amazon.com | docs.docker.com
Livros Essenciais
- Clean Code — Robert C. Martin
- Clean Architecture — Robert C. Martin
- Domain-Driven Design — Eric Evans
- Accelerate — Nicole Forsgren (DevOps)
- The Pragmatic Programmer — Hunt & Thomas
- Scrum: A Arte de Fazer o Dobro do Trabalho na Metade do Tempo — Jeff Sutherland
Canais e Comunidades
- YouTube: Fireship, Traversy Media, Rocketseat, Full Cycle, Frontend Masters
- Newsletter: Bytes.dev, JavaScript Weekly, Node Weekly
Marcos de Conquista por Nível
Estagiário — você está pronto para ser Júnior quando
- Consegue clonar um repo, criar uma branch e abrir um PR sem ajuda
- Entende e executa tarefas bem definidas com orientação
- Lê código de outros e entende o que está acontecendo
- Consumiu e criou ao menos uma API REST completa
Júnior — você está pronto para ser Pleno quando
- Entrega funcionalidades completas de ponta a ponta sem supervisão constante
- Identifica e resolve bugs por conta própria
- Escreve testes automatizados
- Faz code review com comentários construtivos
Pleno — você está pronto para ser Sênior quando
- Define a solução técnica antes de codificar
- Antecipa problemas de performance e escalabilidade
- Guia desenvolvedores júniores e plenos ativamente
- Participa de decisões de arquitetura
- Documenta decisões e comunica tradeoffs
Sênior — sinais que você chegou lá
- O time vem até você quando há um problema difícil
- Você influencia a cultura técnica da empresa
- Consegue estimar com segurança e defender escolhas técnicas
- Pensa no produto, não só no código
Mensagem Final
"Um desenvolvedor sênior não é alguém que sabe tudo — é alguém que sabe o suficiente para resolver o que não conhece ainda."
A jornada do estágio ao sênior não é linear. Haverá momentos em que você vai se sentir voltando ao começo — isso é aprendizado. O que separa quem chega lá de quem desiste não é talento: é consistência, curiosidade e disposição para errar em público.
Escolha uma especialização, aprofunde com intenção, e construa a base fullstack aos poucos. O mercado precisa de pessoas que entendem o todo e dominam uma parte.
Bons estudos e Até +.