O super-herói que todas as empresas buscam. Imagem: Freepik

Back, front e full? As tribos do desenvolvimento na formação das equipes

Venho atuando profissionalmente como desenvolvedor pelos últimos 9 anos. Quando comecei parecia mais simples escolher uma área de atuação, na verdade, você começava como desenvolvedor… e fazia de tudo um pouco.

Atualmente as possibilidades são muito grandes, há novos mercados surgindo a cada dia. Para atender à demanda, os profissionais precisam se reciclar, reaprender e se especializar em novos conceitos (como machine learning, voice user interfaces, IA — que estão em voga atualmente).

Novas posições que surgiram e/ou se popularizaram nos últimos anos foram: UX designer, data analyst, product owner, SEO analyst, android/iOS developer… e a lista segue. Tudo isso ocorre graças ao crescimento exponencial e o impacto que a tecnologia causa nas relações e atividades de sociedades e empresas.

Mas venho para falar especificamente da área de desenvolvimento de aplicações web, que também tem sofrido grandes mudanças, que mudam a forma que os desenvolvedores trabalham e até suas funções. Venho para falar dos termos que muitos devem ver nas vagas do LinkedIn: back-end developer, front-end developer e full-stack developer.


Apesar de não serem conceitos tão novos e você provavelmente saber quais as responsabilidades de cada um desses profissionais, as funções não são assim tão preto no branco.

O cenário

Basicamente, o desenvolvedor back-end trabalha na camada de negócio da aplicação, é ele que é responsável por garantir a integridade das informações, a validação de regras de negócio, a manipulação de consultas e banco de dados, por exemplo — ou seja, algo muito mais lógico do que visual. Geralmente esse profissional tem mais facilidade para abstrair soluções e trabalhar com algoritmos complexos, já que sua camada de atuação é menos “visual”. Como ferramentas, geralmente utiliza linguagens como .NET, Java, PHP, Python, NodeJS, e bancos dados dados como MySQL, MongoDB, entre outras.

O desenvolvedor back-end trabalha bastante nas “telinhas pretas de codificação”. Mais foco nas regras de negócio e integridade dos dados. Imagem: Freepik

Já o desenvolvedor front-end trabalha na camada visual da aplicação — onde o usuário final vai inserir e ver as informações que o sistema processa. Esse desenvolvedor também deve garantir integridade das informações, fornecer validações de dados e facilitar a utilização do sistema e entendimento das informações (por exemplo, ao invés de pedir que o usuário digite uma data, a aplicação pode fornecer um calendário para selecionar uma data) evitando erros e dados que podem ir errados para o back-end da aplicação. Esse profissional geralmente tem um “pézinho” em áreas de design, se preocupando com usabilidade, layout e tem mais facilidade para compreender o uso final da aplicação através da interface. Como ferramentas, precisa ter no mínimo um bom conhecimento de HTML, CSS e Javascript (frameworks como Angular, React, Vue, etc são todos baseados nessas tecnologias e podem ser facilmente aprendidos quando já se tem essa bagagem).

O desenvolvedor front-end também codifica, mas com mais foco na parte visual, na interação da aplicação com o usuário. Imagem: Freepik

E o tal do full-stack? É o cara que manja de tudo isso (back-end + front-end)… pelo menos na visão das empresas que buscam esses profissionais.

O problema

Esse profissional, o full-stack developer, está muito na moda. Todos querem ele, é o pop-star. Mas vamos pensar um pouco…

O back-end faz o desenvolvedor ter uma visão mais abstrata, analítica e lógica. O front-end faz o desenvolvedor ter uma visão mais abrangente, usando recursos visuais e pensando no uso da aplicação. Um profissional que tem esses dois lados muito bem desenvolvidos é O CARA.

Não dizendo que eles não existem. Mas são raros, muito raros. São super-homens e mulheres maravilha da programação.

O que existem hoje são desenvolvedores front-end com alguns conhecimentos em tecnologias back-end, e vice-e-versa. O(a) sujeito(a) possui um foco, uma área de domínio, mas sabe atuar numa profundidade menor na outra área… Talvez esse seja o full-stack? Talvez sim, mas muitos possuem a visão errada de que esse “super homem” ou “mulher maravilha” sabe tudo dos dois lados profundamente.

Eu trabalho como desenvolvedor front-end há alguns anos. Tenho experiência no desenvolvimento back-end em algumas linguagens como .NET, PHP e NodeJS e alguns bancos de dados. Porém meu maior domínio (e gosto) sempre foi a parte visual da aplicação e é onde me sinto confortável em atuar. Caso necessário consigo fazer pequenas modificações no back-end, mas se me pedirem um algoritmo complexo vou levar bastante tempo e gastar muitos neurônios até atingir um bom resultado.

Isso é muito positivo, pois por experiência própria, ter um conhecimento na área que não é meu domínio me permite ter uma interface muito rica com meus companheiros de equipe. Posso discutir a arquitetura do back-end sem parecer um “noob”. Assim como ter conhecimentos em design e UX me ajudam a conversar com os designers da equipe com um bom nível de troca.

Uma boa equipe é aquela que se integra, como peças de um quebra-cabeças encaixadas, mesmo que cada um com um foco — cada um cuidando de uma peça do produto final que se encaixam da forma mais harmoniosa possível. Cabeças diferentes geram ideias mais ricas e produtos mais diversos. Esse deve ser o objetivo e não encontrar a “equipe de um homem só”.

Saber trocar experiências faz a equipe se tornar melhor, tornar o produto melhor. O front deve saber um pouco de back, um pouco de design e assim com todos da equipe. Formar uma equipe integrada deve ser o objetivo e não encontrar o profissional que faça tudo. Imagem: Freepik

Quer dizer então que full-stacks não existem? Não.

Quem se diz full-stack é ruim então? Também não.

O que acontece é que o tal do full-stack provavelmente vai ter mais domínio em uma das duas áreas… tirando o caso raro dos super-heróis que manjam muito de tudo.

É comum alguém que começa na carreira fazer um pouco dos dois papéis, mas conforme ele vai avançando na área de desenvolvimento, acaba focando em uma das duas.

O erro está em esperar (e cobrar) que o desenvolvedor se especialize nas duas áreas já que cada uma demanda características específicas de métodos de trabalho e formas de pensamento.

Concorda? Discorda? Você é um “super homem” ou “mulher maravilha”? Deixe suas opiniões nos comentários!