Devo começar como Front-End, Back-End ou Full Stack?
Devo começar como Front-End, Back-End ou Full Stack? – Muitos programadores no começo de suas carreiras acabam encontrando os termos Front-End, Back-End e Full Stack quando vão se candidatar a vagas de emprego. Então surgem as seguintes dúvidas: “o que devo seguir?”, “qual a mais difícil e qual a mais fácil?”, “qual paga melhor?”, etc.
Todos possuem vantagens e desvantagens. Vamos ver os pontos base sobre cada um.
Front-End
Necessidades
O desenvolvedor Front-End terá que desenvolver as telas da aplicação que foram projetadas pelo Arquiteto e Designer, normalmente com HTML, CSS e JavaScript.
Este desenvolvedor também terá que saber analisar o trabalho do designer para poder seguir o que ele projetou, portanto também pode ser necessário saber o básico de softwares como PhotoShop, Illustrator, Adobe XD e Sketch.
Você não precisa saber sobre experiência de usuário e design, mas há empresas em que o próprio desenvolvedor Front-End precisa desempenhar os papéis de arquiteto e designer, tornando esses conhecimentos um diferencial deste profissional.
Há empresas que também vão querer um desenvolvedor Front-End para criar um site/blog feito com WordPress, então também pode ser interessante saber um pouco de PHP.
Desvantagens
O código feito por um Front-End é executado no cliente. Porém, não sabemos se o usuário está em um smartphone, tablet, notebook ou desktop. Será que o usuário está usando um bom Wi-Fi ou está com uma Internet móvel bem lenta?
Também não sabemos o sistema operacional, qual navegador, versão, etc. Um desenvolvedor Front-End precisa desenvolver um código que possibilite que a maioria dos usuários possam utilizar a aplicação sem problemas. Portanto, é necessário muitos testes em diversos ambientes.
Como estará em contato direto com o usuário, deverá entregar uma boa experiência, e isso se inicia no tempo de carregamento da aplicação. Portanto, também é preciso se preocupar com a otimização dos arquivos HTML, CSS, JS, imagens, etc.
Vantagens
Um Front-End tem como principal linguagem de programação o JavaScript, que está crescendo muito. Você pode ver mais no post O que se pode fazer com JavaScript hoje em dia?.
Além da web, este profissional pode aprender facilmente a criar aplicações desktop e mobile, desenvolver jogos e começar a trabalhar com Back-End utilizando apenas JavaScript.
Ele também não precisa se preocupar com performance do processamento feito no servidor e nem com o Banco de Dados.
Todas as empresas precisam de um Front-End, permitindo que você envie currículo para qualquer empresa.
Outro ponto é que o resultado do seu trabalho pode ser visto em ação (sistemas, aplicativos, sites, etc), permitindo deixar o seu currículo mais interessante.
Como normalmente as regras de negócio ficam no servidor, o Front-End pode ser um pouco mais amigável para quem não tem tanta lógica de programação (isso não significa que lógica é dispensável).
Hoje em dia as empresas estão valorizando cada vez mais o JavaScript, fazendo a demanda e o salário oferecido aumentarem, já que ainda há poucos Front-Ends de qualidade se comparar com a quantidade de desenvolvedores Back-End.
Back-End
Necessidades
O desenvolvedor Back-End é aquele que responderá às requisições do cliente. Ele precisa saber alguma linguagem de programação, ter uma boa lógica para programar as regras de negócio do sistema, se conectar ao banco de dados para recuperar ou gravar dados, etc.
O banco de dados pode ser de responsabilidade de um profissional especializado, mas muitas vezes ele fica por conta do próprio desenvolvedor Back-End, fazendo da otimização de banco de dados algo interessante de se saber. Independente disso, o Back-End precisa saber mexer com banco de dados.
Além disso, este desenvolvedor também precisará saber publicar a aplicação, podendo ser necessário conhecimento em serviços como AWS ou Azure e a criação de contêineres como o Docker. Para saber mais sobre o que é Docker, veja nosso post: No final das contas: o que é o Docker e como ele funciona?
Hoje em dia, dependendo do sistema, pode ser necessário que este profissional saiba lidar com Internet das Coisas (IoT), Aprendizado de Máquina (Machine Learning), Mineração de Dados (Data Mining), etc. Algumas destas habilidades será um grande diferencial deste profissional.
Desvantagens
Normalmente desenvolvedores Back-End tem mais familiaridade apenas com uma linguagem de programação, o que ilmita os lugares para onde podem enviar currículos. Então entra a questão: “devo estudar outra linguagem ou me especializar no que já sei?”
Se um Front-End pode enviar currículo para qualquer lugar, um desenvolvedor Back-End especializado em Java dificilmente será chamado por uma empresa que só trabalhar com Python, por exemplo.
Como lidam diretamente com a regra de negócio, precisam ser os mais atentos a cada detalhe, inclusive os dados enviados pelo Front-End, pois o cliente pode dar um jeito de burlar as regras do Front.
Devem estar atentos a vários casos de teste e lidar com a segurança do servidor para evitar ataques aos dados. Um pequeno problema aos dados e toda a empresa pode ter sérios problemas. Front e Back precisam estar atentos, mas erros no servidor podem ser muito mais graves.
Outro ponto é que a velocidade do Front-End muitas vezes vai depender das respostas do servidor, então também devem saber otimizar o banco e o código. Todos os usuários estarão acessando o seu servidor, então é preciso saber como escalar a sua aplicação para que ela não caia em um momento de grande quantidade de acessos.
Vantagens
O Back-End não precisa se preocupar com o dispositivo ou versão do navegador do cliente, pois seu código estará rodando em apenas uma única máquina a qual você mesmo pode configurar.
Um Front-End precisa saber logo de início HTML, CSS, JavaScript, deixar as telas funcionando em todos os tamanhos de dispositivos, etc, enquanto o Back-End precisará de uma linguagem de programação e um banco de dados, podendo o Back-End ser um pouco mais amigável para alguns iniciantes, principalmente os que tem boa lógica de programação e/ou aqueles que não se dão muito bem com as partes mais visuais de um sistema.
Além disso, hoje em dia ainda é muito comum que empresas paguem salários maiores para desenvolvedores Back-End, principalmente por sua alta responsabilidade com os dados da aplicação.
Full Stack
Necessidades
O NINJA! O Full Stack é o desenvolvedor que faz tanto Front quanto Back. Então tudo o que foi dito aqui são necessidades para que alguém seja considerado um verdadeiro Full Stack.
Mas deve-se tomar cuidado! Há desenvolvedores Back-End que só por saberem se virar com JavaScript e um pouco de CSS se consideram Full Stack (precisa mais que isso para ser Front), do mesmo jeito que muitos Front-Ends, por saberem como fazer uma API e salvar algo no Banco de Dados (precisa mais que isso para ser back), já se consideram Full Stack também.
Um verdadeiro Full Stack deve estar bem familiarizado com ambos os lados. Por esses motivos, muitos acreditam que um verdadeiro Full Stack é algo que não existe, como um ser mitológico. Porém, isto não te impede de ser Full Stack.
Há empresas que apenas esperam que uma mesma pessoa pegue dados do banco e exiba em uma tela, e depois pegue os dados da tela e salve no banco. Conseguir fazer o fluxo completo com qualidade já pode qualificar este profissional como Full Stack, mas é preciso se dedicar muito para fazer tudo isso com qualidade.
Desvantagens
As tecnologias estão sempre evoluindo, e é muito difícil se manter atualizado em várias coisas ao mesmo tempo, o que seria o ideal para quem quer se manter como Front e Back ao mesmo tempo.
Não confunda Full Stack (sabe bem Front e Back) com um generalista (sabe um pouco de tudo).
Vantagens
Possibilidade de enviar currículos para mais lugares e poder encontrar empresas que ofereçam salários maiores. Além disso, pode se oferecer para trabalhar apenas como Back ou apenas como Front.
Conclusão
Cada caminho possui vantagens e desvantagens. O melhor é analisar sua realidade, necessidade e objetivos para fazer a melhor escolha. E não se preocupe em ter que escolher certo de primeira, pois se não gostar da sua escolha sempre haverá tempo de recomeçar com algo diferente.
Leia também: “NPM”