O termo desenvolvedor full-stack é um tanto polêmico na comunidade de tecnologia, enquanto muitos refutam a existência de tal nomenclatura, muitos defendem. Full stack se vem do inglês de “pilha completa”, ou melhor, “todas as camadas”, então primeiro precisamos entender que esse termo veio adaptando seu significado. Lembro que quando comecei a trabalhar com tecnologia, há mais de 10 anos, muitos usavam essa definição para pessoas que entendiam de todas as camadas do desenvolvimento web, incluindo frontend, backend e infraestrutura/banco de dados. Atualmente quando alguém se refere a full stack, provavelmente está se referindo a um desenvolvedor que atua nas duas camadas: Frontend e Backend.
Existe a brincadeira de se referir a um desenvolvedor full stack como o desenvolvedor pato. Porque o pato nada, anda e voa, mas não faz nenhum direito. Eu acho que é possível sim um desenvolvedor ser bom em tudo que faz, mas com certeza a grande maioria que se intitula full stack não é. Se vocês olharem meu blog ou até mesmo meu linkedin, vão ver que eu utilizo o termo full stack, embora não goste muito, é mais pelo fato do termo ser usado por pessoas e recrutadores na hora de te encontrar. No final do artigo falarei um pouco mais do porque não acho que esse termo é o ideal para ser utilizado hoje em dia.
Entendendo as Camadas
Uma aplicação web possui camadas de tecnologia, resumindo podemos elencar duas principais: Frontend (Client Side / Lado do Client); Backend (Server Side / Lado do Servidor);
O Desenvolvedor full stack atualmente tem que estar apto para atuar nessas duas camadas, conseguir desenvolver a regra de negócio no backend e desenvolver o front. Então se o desenvolvedor consegue programar em PHP, que é uma linguagem backend e sabe montar uma estrutura básica em HTML/CSS/Javascript, teoricamente ele já pode se intitular full stack.
Polêmica do Desenvolvedor Pato
Nos dias de hoje eu acho muito genérico e talvez um tanto soberbo se intitular full stack, todas as camadas evoluíram de mais e hoje você possui divisões internas em frontend e backend. Antigamente frontend era quem sabia mexer com HTML, CSS e Javascript, hoje encontramos desenvolvedores frontend que sabem apenas Javascript, ou apenas HTML e CSS. Essa especialização veio graças aos avanços dos frameworks de front, que se tornaram estruturas complexas devido à demanda dos usuários por interfaces mais interativas e com usabilidade melhor. O mesmo cenário se aplica para backend e até infraestrutura. Na minha visão, não podemos considerar o termo desenvolvedor full stack totalmente correto porque, afinal, todas as pilhas deveriam ser incluídas: temos o ambiente cloud (GCP, AWS, Azure), infraestrutura (Linux, Windows), mobile (iOS, Android, Híbridos), e por aí vai… Então se todas essas camadas fazem parte da aplicação, o desenvolvedor full stack, teoricamente, deveria saber mexer mesmo que pouco em todas elas. A stack cresceu demais, se aprofundou muito, por isso acho improvável nos dias de hoje existir um desenvolvedor realmente 100% full stack. Essa é a minha posição em relação à teoria por trás da nomenclatura (e dai né?). A discussão é longa, mas não vale perder o tempo, apenas entender que quando alguém se refere como full stack, provavelmente ele está se referindo a front e back. Não julgo quem utiliza o termo, como expliquei no começo do artigo eu mesmo ainda utilizo por motivos de referência, e no final do dia tanto faz, afinal, no mundo de TI todo mundo consegue virar até engenheiro.