Do back ao mobile: de onde surgiu a programação fullstack

Conhecimento e domínio das stacks são recursos fundamentais para toda pessoa programadora na web

O mercado da programação é bastante exigente no que se refere às novas tecnologias e conhecimentos em termos de carreiras e experiências. A comunidade é extremamente apaixonada no que faz e precisa, constantemente, se manter atualizada nas tendências do mercado.

Basta acessar blogs ou comunidades de programadores pela internet que você vai ver tópicos com discussões ferrenhas,de devs defendendo algum ponto de vista — seja para provar qual a tecnologia do momento ou para definir um termo que ainda não é consenso.

Tudo isso é relevante, inclusive é o que define, de fato, as decisões do mercado de trabalho. Por exemplo: nos últimos dez anos a comunidade beirou a loucura para definir o que é, afinal, um programador fullstack. “O que fazem, de onde vieram e o que comem?”

É uma discussão que surgiu nessa última década. Seria até uma grande ousadia afirmar que existe qualquer tipo de consenso surgido da noite para o dia. Mas existem algumas coisas importantes a saber, até porque é bastante comum encontrar vagas de emprego que exigem essa habilidade nos currículos.

Pilhas completas de informação e desempenho

A tradução literal de fullstack para português significa pilha completa e, na programação, está relacionada à quantidade de informações reunidas que o programador consegue manipular no código ao desenvolver qualquer aplicação.

Como em um jogo — pegamos o Jenga, por exemplo — uma peça, uma linha, uma informação, estão direta e indiretamente ligadas entre si: se uma delas deixa de funcionar, o sistema inteiro pode desabar.

Na programação web esse empilhamento é dividido nas stacks (pilhas) front end e back end. E ainda podemos incluir o mobile na lista.

O front é definido pelo que é aparente no produto final, é a parte frontal do sistema. A superfície do negócio, os primeiros blocos que removemos do Jenga. Geralmente a sua construção está ligada ao design da aplicação, à experiência do usuário (UX) com o que foi desenvolvido. Basicamente é o que permite o fluxo e a interação das pessoas com as informações disponíveis.

Mas o front não opera sozinho.

É o back end que constrói a estrutura do sistema por trás dos panos. Nele são criadas soluções relacionadas ao servidor (server side). Por exemplo: o armazenamento de dados e informações complexas. Se o seu site, fórum ou comunidade favorita saiu do ar por algumas horas, pode ter certeza que um grupo de programadores ficou por trás das cortinas, no back end, procurando alguma solução entre as linhas de código.

E é aqui que entra o dev fullstack. Na definição mais simples do termo, é basicamente a pessoa responsável em desenvolver soluções ponta-a-ponta (end-to-end) de um sistema. Desde a experiência inicial do usuário no front end, até a manipulação do código no back end para garantir estabilidade no sistema.

Para isso, ele precisa dominar a stack completa e as tecnologias de operação.


Uma história por trás do termo

Lá atrás — agora vamos para a década de 70 e 80 na era pré-web — desenvolver qualquer sistema de ponta-a-ponta era a premissa de qualquer programador ou engenheiro de sistemas.

Não existiam termos ou funções específicas para os programadores. Se você sabia codar, já era considerado fullstack teoricamente. Essa foi a norma até chegarmos na década atual.

A separação entre front end e back end só foi começar a existir a partir de 2008*, com o desenvolvimento acelerado da web e a popularização de novas tecnologias, como redes sociais e smartphones. Segundo o Google Trends, as buscas por front-end development, back-end development e fullstack development eram praticamente obsoletas antes de 2010.

💡
*Curiosidade: em 2008 esse blog falava sobre programação fullstack e o que significava naquele contexto. Alguns blogs consideram essa referência como a primeira citação da palavra fullstack para definir as habilidades de um programador. Apesar das mudanças tecnológicas que aconteceram na última década, o uso do termo foi ganhando popularidade a partir deste ponto.

A demanda do mercado por profissionais especializados em cada área é o que explica essa segmentação. A construção da web exigiu que os processos de desenvolvimento se tornassem mais práticos e ágeis, mobilizando equipes maiores de programadores divididos em núcleos, stacks.

Quanto mais bagagem e conhecimento os programadores possuem de uma determinada área, quanto mais ele domina a sua stack e se dedica a ela, mais precisas são as informações do sistema e melhor será o desempenho do produto final.

No entanto, enquanto a demanda por devs qualificados continua em alta na tecnologia, se torna cada vez mais comum programadores ganharem o título de fullstack, muitas vezes responsáveis por programar e manter sistemas inteiros na web.

A complexidade do trabalho, o intenso treinamento para obter o título e sua validade no mercado de trabalho foi tema de um de nossos podcasts com o Diego Fernandes.

Afinal, vale a pena ser fullstack?

Quem sabe programar acredita que aprender uma linguagem nova ou dominar uma tecnologia diferente podem ser desafios extremamente complexos que exigem tempo de estudo, foco e objetivos alinhados com o mercado de trabalho. Tanto que um dos poucos consensos que temos nesse universo é que aprender a programar não é uma tarefa fácil.

A programação fullstack é uma tendência no mercado de trabalho. Segundo o HackerRank de 2018, cerca de 24,1% dos devs se consideram fullstack, sendo a ocupação mais popular entre programadores.

De acordo com o blog Indeed, citado pela HackerRank, a demanda por programadores fullstacks cresceu cerca de 198% em 2018, sendo considerada uma das melhores profissões pela alta remuneração anual (cerca de U$100 mil).

Não existem atalhos para ser um programador fullstack. O que existe são experiências que você adquire na prática, seja em longas horas de estudo ou no trabalho. Muitos programadores aprendem uma nova linguagem, ou caminham para outra especialização, de acordo com o fluxo do mercado de trabalho determinadas naquele momento.

O desenvolvimento de sistemas demanda do programador conhecimento e aprendizado constante.

A resposta é sim, é importante você ter conhecimento de todas as stacks e aprender a programar em todas as camadas de um sistema. Mesmo que você não seja um perito em todas as áreas — o que é muito difícil de ser — você terá conhecimento geral para, por exemplo, trabalhar em grupo com mais agilidade e produtividade.