Quando comecei a trabalhar com programação web, em 2007, não existia este termo full stack. Ou se existia, eu não havia sido apresentado e as empresas que passei dessa época até 2014 aproximadamente, não usavam-no.
Nós éramos simplesmente programadores.
Claro, sempre existiu quem gostasse mais da arquitetura, do front-end, do back-end, etc. E sempre vai existir.
Mas missão dada era missão cumprida, éramos (e ainda somos) pagos enquanto desenvolvedores para entregar soluções e não arquivos de texto cheios de comandos.
Ok, mas o que esse desabafo tem a ver com desenvolvimento full stack?
Um desenvolvedor full stack é aquele que possui a CAPACIDADE de entregar uma solução técnica para um desafio de negócio, de ponta a ponta.
Ponto.
Em linhas gerais, é isso aí e o restante deste artigo serve para dissertar sobre este assunto em mais detalhes e abrir a sua cabeça para a viabilidade e as oportunidades de uma carreira full stack.
Se preferir, pode assistir ao primeiro de três vídeos sobre desenvolvimento full stack abaixo.
Full Stack…Mas o que é stack?
Stack no contexto de carreira com programação é o conjunto de tecnologias na qual você se especializa para entregar soluções técnicas para problemas de negócio.
Por exemplo, uma stack muito popular é PHP com MySQL ou ASP.NET com MS SQL Server. Eu mesmo trabalhei por quase uma década usando a stack Microsoft que nasce com ASP.NET + MS SQL Server mas engloba muitas outras tecnologias, como por exemplo o servidor web IIS e o provedor em nuvem Azure.
Não existe stack melhor ou pior, universalmente falando, embora em determinados contextos sim, você terá melhores resultados com a stack A vs a B.
Uma stack é adotada por uma empresa justamente por se adequar às suas necessidades, que podem ser tão variadas como:
- tipo de problema;
- ambiente da empresa;
- disponibilidade de profissionais;
- custo total;
- produtividade;
- tendências
- e muito mais!
Se o seu problema de negócio necessita de um app para Android que vai trafegar informações em realtime, processá-las e gerar relatórios de negócio poderosos, a empresa adotará uma stack como Android SDK + Firebase + ELK, por exemplo, e precisará de profissionais para atuar com estas tecnologias.
Esta é a stack completa (full) dessa solução. Neste cenário, um desenvolvedor full stack seria aquele que consegue atuar com todas elas.
Mas…isso é possível?
Existe dev full stack?
Sim e não.
Em um contexto universal, alguém que entregue soluções de qualquer tamanho, complexidade e tecnologias? Não.
Em um contexto específico (banking, por exemplo), que entregue soluções pequenas sozinho ou grandes/complexas em time, com um conjunto de tecnologias (mobile, por exemplo)? Sim.
Que faça tudo sozinho com a melhor qualidade possível e rapidamente, não importe a demanda? Não.
Que trabalhe em equipe, atuando com outras profissionais tanto full stack quanto especialistas, para construção ágil e eficiente de soluções variadas, unindo os conhecimentos de cada um? Sim.
Está entendendo onde quero chegar?
Sim, full stack existe e não, não são Super-Homens e Mulheres Maravilha.
São profissionais que seguem carreiras em T, onde estudam de maneira generalista todas as camadas de uma stack e especializam-se geralmente em uma delas.
Assim, temos devs como eu, que consigo sim entregar soluções de ponta a ponta com JavaScript, por exemplo, mas cuja fortaleza é back-end. Precisa construir uma página em ReactJS? Tô dentro. Precisa fazer o deploy da aplicação na AWS? Tô dentro. Mas o que eu gosto mesmo, onde entrego o maior valor possível? Back-end.
Mas nenhum time em que eu estive vai ficar impedido de avançar em um projeto por falta de front-end ou deploy, por exemplo.
E eu não estou sozinho, conheço muitos outros desenvolvedores que pensam e atuam da mesma forma. E tenho amigos especialistas também, em uma única camada da stack, como front-end, back-end ou infraestrutura, sem problema.
Mas o que vale mais a pena? Full Stack ou Especialista?
Full Stack vale a pena?
Para as empresas? Muito.
Entenda que a imensa maior parte das empresas do país são micro e pequenas. Mesmo as empresas médias não dispõem de tantos recursos para investir em tecnologia como gostariam.
Para estas empresas, contratar um especialista em um único aspecto da solução é um luxo. Só o fazem em caso de extrema necessidade e geralmente esta pessoa será única na empresa, não há verba para montar um time de especialistas.
Já em empresas maiores e, principalmente, com projetos grandes e complexos, a balança é mais equilibrada. Full Stacks ainda têm o seu valor mas dependem e muito dos especialistas para conseguir alcançar os resultados esperados, tirando o máximo possível das tecnologias da stack adotada, que muitas vezes é igualmente grande e variada.
Eu trabalhei em dois bancos digitais e, em um deles, havia uma solução que estávamos construindo que dependia de 32 times diferentes para ser entregue. Não era nem apenas pelo tamanho do escopo, mas pela complexidade das diferentes stacks que compunham a solução.
Nesse cenário completo, é IMPOSSÍVEL ser full stack, mas dentro da responsabilidade de cada time, sim.
Já em duas empresas de cloud que trabalhei, uma pequena e outra média, as soluções eram bem menos complexas e em cima de uma única stack. Aliás, em ambas era stack Microsoft. Assim, era muito mais comum a presença de full stacks nos times para ganhar celeridade nas entregas e a presença de alguns poucos especialistas para corrigir o “prumo”, apertar os parafusos certos e orientar a galera.
Se full stack vale a pena para você?
Vai muito da sua estratégia de carreira. Apostar todas as fichas em uma camada e se tornar especialista nela ou apostar em uma carreira em T, tendo mais possibilidades de atuação e menos risco.
Te adianto que não há certo ou errado aqui.
Minha sugestão é que se foque em uma stack específica (JavaScript, por exemplo) e aprenda ela de ponta a ponta, para ter acesso a mais oportunidades, ao menos no começo.
Se é algo que faz sentido para as empresas, a tendência é aparecer cada vez mais vagas deste tipo e, se estiver preparado, a tendência é ter mais oportunidades em que você se enquadre.
Mas qual stack escolher?
Full Stack JS
Tenho recomendado tem algum tempo que meus alunos dominem a stack JavaScript.
Isso porque, diferente das outras stacks, você consegue programar de ponta a ponta usando uma única linguagem e programação, o que lhe permite aprender mais rapidamente, ir mais a fundo nela e ser mais produtivo codando.
Mas que partes compõem a stack JavaScript?
Existem diferentes combinações, mas a que recomendo é:
ReactJS ou React Native para front-end.
Hoje, aplicações web profissionais estão completamente desacopladas do back-end e é comum a utilização de frameworks JS reativos como ReactJS, Angular e VUE.js.
Minha sugestão do ReactJS sobre estes outros dois é devido à sua popularidade, tamanho da comunidade, atualizações constantes, quantidade de material e vagas de emprego. Não é uma decisão puramente técnica.
Além disso, se você está atuando ou pretende atuar com mobile também, temos o React Native, versão mobile do mesmo framework JS que permite programar para Android e iOS, gerando apps nativos. Aqui sim, é uma decisão técnica.
Ou seja, uma biblioteca, uma linguagem, ambientes completamente diferentes: wbe e mobile. Duplo ganho.
Node.js para back-end.
Quem acompanha aqui o blog há algum tempo sabe da minha paixão por Node.js que começou em 2016.
Node.js foi a tecnologia que permitiu levar o JavaScript para o back-end e que acabou empurrando essa linguagem de programação para muitos ambientes como servidores, desktops, mobile e mais.
Aprender Node.js é se inserir em uma comunidade gigante e uma conjunto quase infinito de possibilidades de atuação.
MongoDB para banco de dados.
Eu sei, este item aqui é mais polêmico e MongoDB não tem fit universal (nenhum banco de dados tem, na verdade) com todas aplicações.
Mas se quiser continuar usando JavaScript até mesmo no banco de dados, ao invés de SQL, MongoDB é o caminho.
Ainda assim, tendo um back-end em Node.js não lhe restringe a esse banco, tendo outras opções como MySQL e MS SQL Server, por exemplo. No vídeo abaixo mostro como usar com MySQL.
AWS para nuvem.
Aqui não tem nada a ver com JavaScript, mas todo full stack que se preze também conhece como fazer deploy, no mínimo de soluções com a sua stack e recomendo a AWS para este fim.
Desde a invenção do Lightsail que se tornou extremamente mais fácil de aprender a operar este cloud provider, então não reclame de barriga cheia, quando comecei com AWS era muito pior, hahaha.
Enfim, espero ter lhe dado uma luz sobre este tema e alguns insights valiosos. Querendo aprender a ser um desenvolvedor web full stack, conheça o meu curso clicando no banner abaixo.
Quer uma ferramenta para ajudar nos seus estudos para se tornar fullstack? Dá uma olhada no vídeo abaixo.
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.