O que significa ser um desenvolvedor full stack?

Ultimamente, quando falo sobre desenvolvimento full stack, muitas pessoas relatam seu ceticismo sobre o assunto - dizendo que desenvolvedores full stack não existem ou que a maioria dos desenvolvedores, se não todos, é adequada apenas para trabalho de back-end ou front-end.

As críticas se resumem principalmente a duas questões:

  • Ninguém pode ser especialista em front-end e back-end, então é melhor se especializar em uma área;
  • A maioria das pessoas é adequada apenas para trabalho de front-end ou back-end.

Essas críticas fogem completamente do que significa ser um desenvolvedor full stack. 

Full stack não tem a ver com código, mas com propriedade

Full stack não se trata de quais linguagens você conhece ou quais tecnologias você domina: trata-se de ter as ferramentas e a autoridade para lidar com uma tarefa do início ao fim e se livrar de obstáculos.

Dividir uma única tarefa em responsabilidades diferentes e entregá-las a pessoas distintas cria um distanciamento desnecessário, adiciona coordenação supérflua e, muitas vezes, pode impedir soluções simples com abordagens cross-layer. 

Vamos considerar uma tarefa comum de desenvolvimento web que requer uma nova API simples de um desenvolvedor back-end e um pouco mais de trabalho do desenvolvedor front-end - por exemplo, para mostrar um gráfico de alguma nova métrica ou atividade.

O cronograma para o desenvolvimento de tal recurso geralmente se parece com este:

O que significa ser um desenvolvedor full stack? 1

Quando mudanças de escopo acontecem ou novos conhecimentos sobre a tarefa vêm à tona, ajustes precisam ser feitos na arquitetura original, e um desenvolvedor se torna um gargalo para o outro - impedindo o trabalho contínuo, adicionando pressão a cada lado e causando mudanças dolorosas de contexto, que podem às vezes levar a ressentimentos e conflitos.

Como a maior parte do trabalho é sequencial por natureza (no exemplo ilustrado, o dev front-end requer que a API funcione) até que uma tarefa de pré-requisito seja realizada, um dos desenvolvedores deve esperar ou contar com soluções alternativas (no caso ilustrado - usando uma API simulada).

E, acima de tudo, muitas vezes um problema difícil em uma camada tem uma solução simples em uma camada diferente. E quando um desenvolvedor é apenas front-end ou apenas back-end, ele geralmente ignora soluções para problemas que estão fora do seu próprio domínio. 

Vantagens de fazer desenvolvimento full stack 

Sem gargalos - Não ter que esperar por outra pessoa antes de continuar trabalhando.

Iteração mais rápida - A capacidade de alterar a API e ver os resultados no cliente, alterar a UI e ver como ela lida com a nova API, fazendo isso continuamente.

Visibilidade para e das partes interessadas - Mostrar o progresso e se comunicar usando a parte visual da aplicação ajuda a conectar e se relacionar melhor com as partes interessadas (stakeholders). 

Propriedade - Tornar-se um único ponto de contato para as partes interessadas (stakeholders, QA, produto, gerenciamento) torna a comunicação e o gerenciamento mais fáceis e fornece um senso de responsabilidade.

Qualquer um pode ser full stack

Para responder à crítica de que nem todos podem ser full stack, gostaria de salientar que o que consideramos front-end era back-end há apenas alguns anos, especialmente as partes difíceis – roteamento, gerenciamento de estado, armazenamento em cache e até mesmo a lógica de negócios agora são feitos rotineiramente no front-end.

A maioria dos problemas de front-end não exige conhecimento detalhado de linguagens de design, desempenho da interface do usuário ou compatibilidade do navegador - geralmente é apenas adicionar alguns divs e alterar alguns valores CSS (assumindo que seu cliente é web-based).

Da mesma forma, a maioria dos problemas de back-end não requer conhecimento detalhado de modelos de concorrência, manipulação de bytecode ou ORM de controle interno - geralmente consiste apenas em adicionar um novo campo ao banco de dados ou modelo de API.

Ser um desenvolvedor full stack não significa ser um especialista em todas as coisas, não significa fazer tudo sozinho. Possuir e desenvolver um recurso em uma área em que você é menos forte não significa que não possa obter ajuda; você definitivamente deve pedir orientação e instruções àqueles que são mais experientes e especializados na área.

Você ainda pode se especializar enquanto faz desenvolvimento full stack 

Ser um full stack não significa que você não possa se especializar ou se tornar um especialista em um tópico.

Dizer que não se pode dominar o front-end e o back-end implica que, se você se concentrar em apenas uma camada, poderá dominá-la. Isso é um absurdo! Há tantas áreas no front-end e no back-end que é impossível se tornar um especialista em todos os aspectos do desenvolvimento em uma camada.

  • Você pode ser um desenvolvedor full stack e um especialista no uso de bibliotecas de gráficos.
  • Você pode ser um desenvolvedor full stack e um especialista no uso de ORMs.

Assim como qualquer outro desenvolvedor, o full stack acabará desenvolvendo experiência em certas áreas, portanto, é natural atribuir as tarefas mais complexas a desenvolvedores que se especializam. 

Não divida seus desenvolvedores por camadas.

O full stack é mais do que apenas back-end e front-end

Full stack não é apenas back-end ou front-end. Full stack é uma maneira de trabalhar onde um desenvolvedor possui seu código e pode remover todos os obstáculos para completar uma tarefa por conta própria.

A mesma maneira de trabalhar se aplica a todo stack - um desenvolvedor de back-end não deve ter que esperar que um DBA aprove um script SQL em um banco de dados ou que o DevOps adicione seu recurso ao CI. Ao fazer o trabalho de front-end, você não deve esperar que um designer de UI recorte uma imagem para você.

Full stack é sempre aplicável

Como todas as coisas no desenvolvimento de software, nenhum processo é uma bala de prata. Há anos que as pessoas dividem o desenvolvimento em camadas diferentes, e isso tem valor.

Se o seu processo de desenvolvimento envolve muito planejamento e suas especificações são rígidas, há benefícios em ter pessoas diferentes fazendo tarefas diferentes.

Alguns setores têm regulamentações pesadas ou processos de certificação que tornam problemático fazer o desenvolvimento full stack em todas as equipes.

O full stack também não precisa existir em toda a organização. No entanto, se você estiver fazendo desenvolvimento web com processos ágeis, provavelmente ganhará muito ao mudar para um processo mais orientado a full stack. 

Notas de rodapé

Uma vez que este artigo provavelmente será controverso para muitas pessoas, tentarei evitar algumas críticas:

  • Embora muitos dos exemplos neste artigo se concentrem no front-end, os benefícios do desenvolvimento full stack não tornam apenas o trabalho de front-end mais fácil. O desenvolvimento de back-end também sofre dos mesmos problemas e desfruta dos mesmos benefícios com a abordagem full stack. 
  • Você pode ficar com a impressão de que nunca deve dividir suas tarefas. Não é exatamente nisso que estou querendo chegar - você realmente deve dividir suas tarefas em etapas gerenciáveis ​​- mas divida-as por recurso e função, e não por camadas.

Este é um artigo traduzido, você pode acessar a versão original em inglês aqui. Todos os créditos para o autor: Alon Bar David


Conheça o Gama Experience - formação em Desenvolvedor Full Stack

twitterfacebooklinkedinyoutube-playinstagram