A diferença entre paradigmas front e back-end

Conforme a minha experiência, programação front-end segue um paradigma totalmente diferente do que é esperado por aqueles que estão acostumados a programar no back-end. Além de mim, outros programadores partilham do mesmo desconforto ao votar no back-end como paradigma preferencial.

A simple Slack poll showing that 51 out of 63 respondents identify more with the backend stack rather than the frontend

Fonte: O autor

Por qual motivo isso acontece? Muito simples, o código que executa no servidor é totalmente linear e previsível, existe um enredo (começo, meio e fim) e não há efeitos colaterais indesejados. A orientação a objeto mantém as instruções encapsuladas, não existe concorrência numa mesma linha de código e o resultado é facílimo de reproduzir.

A simple diagram showing that a simple request is following by processing and response steps respectively

Fonte: O autor

O front, por outro lado, não segue um enredo, o código tem um começo, mas não tem um fim, tudo é orientado a eventos e o programador não consegue antecipar o próximo passo da execução. Todas as coisas dependem da ação do usuário e devido à natureza do navegador muitas coisas podem ser executadas simultaneamente. Um único programa pode despachar diversos trabalhos assíncronos em segundo plano com efeitos colaterais imprevisíveis, canceláveis e irreproduzíveis.

A diagram showing how a simple user action can trigger a cascade of operations with unpredictable results

Fonte: O autor

Ironicamente, a mesma equipe de programadores que declarou ter preferência pelo back também declara que possui proficiência com promessas em JavaScript.

Simple poll in a slack conversation history showing that 16 out of 25 respondents are comfortable with JavaScript promises

Fonte: O autor

Então de onde vem essa preferência por back-end? Posso responder com base na minha própria experiência. O back-end é:

Essas são características que tornam o back-end mais cômodo de se trabalhar, você lê um trecho de código e sabe exatamente acontecendo, a tipagem forte das linguagens como o PHP e Java tornam a execução mais previsível, pois você consegue olhar para cada variável e função e saber exatamente o que está acontecendo na memória. Já a simplicidade diz respeito aos pontos de entrada na execução do back-end, uma rota de uma API, um trabalho assíncrono, tudo no back é bem definido, tudo possui um fim, nada pode te levar a um lugar desconhecido, pois o back não lida com interações do usuário diretamente, lida com clientes de front-ends.

Portanto, se alguém me perguntar por que não curto trabalhar com front-end, a resposta é esta: a programação front-end é um ecossistema onde cada ação do usuário pode disparar uma cascata de atualizações na interface. Gerenciar essa dinâmica imprevisível exige não apenas lidar com concorrência, mas também garantir que o estado da aplicação esteja sempre sincronizado com a tela, sendo difícil para desenvolvedores que pensam de maneira linear.