Gabriel / Ramos

⟨ pintor de pixel ⟩

  • Blog
  • Diferenças de perspectiva após a mudança de área

Diferenças de perspectiva após a mudança de área

Um pouco sobre minhas experiências, reflexões e opiniões após o primeiro ano totalmente focado em aplicações back-end

7 min. de leitura

Foto por Sébastien Goldberg

Se você me conhece sabe que boa parte da minha bagagem foi relacionada ao front-end. Não que eu nunca tenha trabalhado com back-end, muito pelo contrário, já tive algumas experiências variadas.

Já trabalhei em empresa com um modelo mais de "agência" tendo liberdade de fazer tanto o front-end como o back-end. Em outras, onde o time de front-end também possui uma camada de back-end (o famoso "BFF", back-end for frontend ou back-end para o front-end) e diversos outros cenários. Além disso, já trabalhei com algumas aplicações voltadas mais pra ferramental (ou tooling) e processos de build e também tive algumas experiências de linha de comando aqui e ali.

No entanto, hoje faz exatamente 1 ano que eu abracei uma oportunidade de realmente me aprofundar em back-end (inclusive, essa mudança de modelo de contratação já até foi tópico de outro post por aqui) e a cada dia tenho aprendido uma coisa nova e acho que posso compartilhar um pouco das semelhanças e diferenças de cada um desses cenários.

Não tenho certeza se podemos chamar isso de "transição" já que ambas as vertentes são em torno de tecnologia e desenvolvimento, mas tenho a sensação de que sim.

#Quem diz que "é tudo código" até que não é mentira

E eu concordo bastante com essa afirmação.

No fim do dia todo mundo que escreve código, escreve pra resolver alguma dor de outra pessoa que tá do outro lado da tela (ou de algum dispositivo).

Seja no front-end ou no back-end, existem muitos pontos em comum.

#Teste e qualidade de código

Teste e qualidade de código vai ser assunto independente da camada que você tiver trabalhando.

Seja no front-end e precisando testar seus componentes de interface, ou no back-end testando os endpoints da sua API, inevitavelmente você vai realizar testes. Você vai precisar de ferramentas e de uma cultura de qualidade que possa reduzir a fricção das falhas do seu código com quem vai utilizá-lo em produção.

O "como" testar vai ser bem parecido.

<propaganda>

Inclusive, caso você não saiba eu tenho um livro exatamente sobre isso. Cobrindo diversos fundamentos e projetos práticos.

Se você tiver interesse, dá uma olhada lá no https://javascriptassertivo.com.br/ 🤗

</propaganda>

#Estado, armazenamento e persistência

Embora sejam feitas de forma diferente, é algo em comum também.

No front-end você vai construir seus componentes de interface, consultar algum dado externo, realizar alguma persistência local (se necessário) e deixá-la disponível para uso de quem acessa seus sistema.

Isso não é muito diferente do back-end. A forma como essa consulta e disponibilização vai mudar bastante, mas o processo de criação e de desenvolvimento é bem parecido.

#Documentação e reuso

Independente de qual sistema você trabalha, você (muito provavelmente rs) vai precisar deixar uma boa documentação que deixe claro como seu projeto funciona e deve ser executado.

Seja uma documentação mais genérica com seus arquivos em markdown ou até algo mais profundo voltado à implementação. Seja um componente no Storybook ou seus endpoints em Swagger.

#Arquitetura

Tanto no front-end quanto no back-end você vai precisar se preocupar com arquitetura. Ela pode até ser aplicada e ter uma visão ligeiramente diferente, mas vai ser mais um tópico comum em qualquer uma das camadas que você for trabalhar.

#E quais as diferenças entre cada vertente?

Claro que elas vão ter muitas diferenças também e é justamente por isso que eu tenho alguns sentimentos mistos com termos como "full-stack" (mas isso é papo pra outra hora).

#O tempo de vida, consumo e disponibilidade de uma aplicação

Vamos pensar em uma aplicação front-end, que simplesmente é executada no navegador após um conteúdo estático ser baixado. Vamos pensar também em um serviço back-end que fica rodando disponível para ser consumido em um servidor qualquer. Ambas as aplicações não são nada rebuscadas e bem comuns de encontrar no dia-a-dia.

O tempo de vida das duas aplicações é bem diferente, principalmente se consideramos a forma como elas são utilizadas e disponibilizadas.

Enquanto um processo deve ficar sendo executado no(s) servidor(es) de maneira contínua pra diversos clientes consumirem seu serviço back-end, uma aplicação front-end, geralmente, tem um ciclo de vida mais reduzido, onde quem acessa seu conteúdo interage, realiza algumas operações e fecha sua tela quando acaba.

Claro que isso não é uma regra... No cenário de uma aplicação front-end, existem diversas pessoas que ficam com uma aba aberta de algum sistema o dia inteiro, seja um sistema do seu trabalho ou aquela aba fixa do WhatsApp web que eu sei que você também deixa. Mas a questão é que, a grande maioria das aplicações, é consumida somente por um certo intervalo de tempo.

Assim como isso não é 100% verdade em aplicações back-end. Se você estiver em um projeto que só trabalha com lambdas, por exemplo, o tempo de execução e consumo do seu código tende a ser bem mais curto também.

Mas, no geral (e em boa parte dos projetos), a forma como as aplicações ficam disponíveis e são consumidas é um fator bem importante de diferença.

#Seu objeto (e casos de teste) mudam

Embora o "como" testar seja parecido, o "quê" você vai testar é extremamente diferente.

Em um cenário vc precise testar e garantir estabilidade em diferentes navegadores, dispositivos com suas mais variadas telas e também valores e navegação de usuário (e é por isso que a experiência é tão importante). Já no outro, você precisa garantir que seu serviço está respondendo de forma clara e adequada pra garantir qualidade pra quem for consumir.

#Preocupação com usuário final

Mesmo ambos se preocupando com usuário final, a forma como isso vai acontecer é bem diferente.

No front-end você vai, literalmente, dar a cara à tapa pra quem for usar sua aplicação e ter seu código muito mais exposto à feedback de quem vai usar seu produto no fim do dia. A experiência de quem consome seu produto vai estar muito mais "do seu lado" da quadra, inevitavelmente.

Já no back-end você vai se preocupar de outra maneira já que, muito provavelmente, quem irá consumir seu conteúdo serão outros serviços e aplicações.

Como eu costumo brincar com um amigo:

"A diferença é que no back-end não tem inúmeras pessoas clicando no seu botão, mas podem ter inúmeros clientes usando sua API".

#Infraestrutura

Essa parte vai depender bastante da estrutura do seu time e da forma como suas aplicações funcionam mas, geralmente, a forma como front-end e back-end se preocupam com infraestrutura é diferente.

No front-end você muito dificilmente vai precisar se preocupar com temas de infraestrutura que tocam banco de dados e fila, por exmeplo. Mas muito provavelmente vai precisar lidar com questões de CDN e se preocupar e como seu conteúdo é distribuído.


#E ainda tem gente que acha que uma dessas "vertentes" é mais complexa que a outra?

É... Ainda sim. Eu, sinceramente, só fico com pena triste com quem pensa assim.

Infelizmente tem muita gente que acha que back-end é mais complexo, por exemplo. Nunca vi o contrário acontecer, mas seria triste da mesma maneira.

Eu já ouvi bastante coisa por aí. Algumas delas, inclusive, em sessões de feedback e "plano de carreira" rs.

Desde que falas como "front-end não é prioridade" até outras como "agora que você está mexendo com back-end e fazendo coisas complexas [...]" e esse tipo de pensamento sempre me assustou.

O que mais me espanta é simples fato de que a maioria das pessoas que fala esse tipo de besteira é o tipo de gente que (embora tenha ou não uma ótima base sobre computação) não tem o mínimo de empatia pelo trabalho do próximo. Isso sem contar que em 99.9% dos casos essa mesma pessoa não saberia centralizar uma simples <div> na tela.

Ter o trabalho dos outros como fácil sem ter o mínimo de embasamento sobre o que é feito é, no mínimo, uma limitadora e isso, como comentei, é triste. Ninguém quer sentir que seu trabalho é limitado pela visão de uma pessoa "superior", acredito eu.

Nas vezes que presenciei esses discursos e essas atitudes elas sempre surgiram com um viés extremamente egocêntrico, afinal, sempre tem uma pessoa que precisam se sentir superior que as outras, em qualquer camada da estrutura de trabalho.

A web evoluiu, aplicações de todas as vertentes evoluíram. Espero que algumas mentalidades do mercado sigam essa evolução também. Já passou da hora, né?


#E você não sente falta do front-end?

Olha, sendo bem sincero... Muita!

Tem sido muito desafiador e divertido. A quantidade de coisa que eu tenho aprendido dentro do meu time é impossível de descrever, mas eu não fiz essa mudança pelo fato de não gostar de front-end. Eu continuo adorando e tendo muito prazer em escrever HTML, CSS, JS e fazer meus componentes em React.

No entanto, eu estava em busca de algumas coisas diferentes e isso tem sido muito, muito bom pra mim.

Na hora que bate a saudade, fico muito feliz de fazer parte de alguns projetos paralelos e manter minha curiosidade afiada pra não ficar parado no front-end também.


Compartilhe