Os dois front-ends: designer e engineer — Parte 1 : Uma breve história
O perfil do desenvolvedor front-end mudou e se transformou em dois (talvez mais) perfis diferentes. Entenda como tudo começou e saiba em qual perfil você se encaixa mais.
Escrevi ouvindo essa música. Recomendo para a leitura:
The Little Things That Give You Away — U2
O menino do HTML. Essa era a visão padrão que o mercado web tinha do front-end por um simples motivo: front-end não tinha responsabilidades importantes. Pelo menos era o que o Designer, o Back-end e os clientes (resumindo: o mundo) achavam.
O designer e o back-end detinham as grandes responsabilidades de um projeto. Enquanto um definia o layout, fluxo do sistema e como seria o comportamento do usuário no projeto, o outro fazia tudo isso funcionar. Ele era o cara que manjava de servidor, modelagem de banco de dados, linguagens de servidor e tudo quanto era mandinga.
Por sua vez, o front-end não se encaixava em nenhum dos dois extremos. Ele fazia código, mas o código não funcionava sozinho, sem linguagem de servidor envolvida. Ele transformava o layout para código HTML/CSS/JS, mas o layout não era ele que tinha feito. Junte isso com o fato de que NINGUÉM sabia exatamente o que era desenvolvimento para internet e pronto, um homem foi jogado ao mar.
Era uma época infeliz.
Mas hoje vivemos nos tempos modernos. Vivemos num momento onde a tecnologia parece não ter fronteiras e que o desenvolvimento web vive numa evolução contínua de ferramentas e novos padrões, transformando a Web numa plataforma real para o futuro (há controversas).
MVC: Quem determinou até onde vai o front-end e onde começa o back-end?
Essa coisa de limites entre back-end e front-end sempre foi uma polêmica.
Em todos os projetos, de todos os tamanhos, era necessário haver uma conversa entre os desenvolvedores e os front-ends — sim, as pessoas separavam os devs "verdadeiros" dos front-ends… briguei muito com isso nas empresas que eu trabalhei — para combinar até onde o back-end iria, para que o front-end pudesse implementar o layout.
Em uma época não muito distante, todo mundo trabalhava ou queria trabalhar em projetos com estrutura MVC. Você pode saber o que é a estrutura MVC aqui.
Alguns times preferiam que o back-end fosse até a camada de Model. O Front-end era o responsável então por montar as Controllers para então manipular as Views. Em outros times, os front-ends preferiam que os back-ends fossem até as Controllers para que eles ficassem responsáveis apenas pela View.
Nem preciso dizer que era uma grande confusão, pois se você ir pela lógica, o front-end só mexe no client-side. A Controller é a área cinza. É na Controller que intermediamos o Model (só dados, faz sentido ficar com back-end) e a View (totalmente client-side, faz sentido ficar com front-end).
Tinha outros times que combinavam que todo mundo podia mexer na Controller. Obviamente não dava certo.
Até que veio a era das APIs e o início da depressão
Quando todo mundo começou a trabalhar com APIs, microserviços, webservices e todas as outras tecnologias relacionadas, foi aí que a coisa começou a se organizar.
Com a criação de APIs havia um limite claro entre back-end e front-end: o back-end criava os endpoints e o front-end lia as informações contidas nesses endpoints e fazia o que tinha de ser feito. O único acordo que as duas partes deveriam fazer era como a estrutura desses dados seria exposto: o famoso contrato.
As APIs ajudaram a demarcar um limite de atuação dos back-ends e front-ends. A briga entre os dois lados cessou um pouco e a coisa começou a andar decentemente.
Com isso, a briga entre os dois mundos acabou. Mas infelizmente nem tudo são flores. Com a vinda das APIs, uma série de complexidades foram criadas para o lado do front-end. Alguma da lógica e da regra de negócio começou a ficar do lado de front-end. Agora não era só exibir informação na interface do layout, alguém gerir os estados de componentes, lidar rotas, gerenciar tokens de acesso, segurança e tudo o mais.
Foi aqui que centenas de frameworks e bibliotecas JS surgiram (e morreram) da noite pro dia, tentando resolver os problemas que antes eram de back-end, no client-side.
Todo mundo ficou desconfortável, mas a coisa andou
No meio dessa mudança toda, muitos front-ends não estavam acostumados a lidar com lógica e regras de negócio que agora estavam transbordando para o lado do client-side, exatamente por que a praia deles era escrever CSS e Javascript para interface.
Nessa revolução, houve um breve momento onde o Javascript ganhou MUITA visibilidade. E aí os front-ends que sabiam MUITO Javascript se destacaram. Isso era bom e ruim. Os front-ends que não gostavam ou não sabiam trabalhar com programação pesada de JS, acabaram se decepcionando. Houve uma momento onde era até vergonhoso dizer que não manjava de JS, e só sabia trabalhar com JS para interface.
Aí aconteceu de tudo um pouco: vários devs não se consideravam mais devs, exatamente porque eles só sabiam CSS e HTML com um pouco de JS para interface e achavam que não tinham competência para fazer toda essa coisa nova. Outros simplesmente não gostavam de lidar com lógica, mas adoravam a parte visual.
Em paralelo o mercado mudou de vez: teve front-end que virou back-end. Teve back-end que virou front-end. Teve front-end que saiu da área. Teve empresa que demitiu back-end pra contratar front-end, dado que o trabalho de integrar API na Interface se tornou maior que fazer APIs. Uma revolução total na era.
Mas desse balaio saiu uma reformulação do perfil do desenvolvedor front-end.
Dois perfis de profissionais ficaram bem claros no mercado:
- Um dev que manjava MUITO de interface. Que dominava CSS como ninguém e todos os truques de JS para manipular elementos no DOM com CSS, além de conseguir lidar com o designer discutindo soluções de layout;
- E outro profissional que tinha uma grande facilidade para a parte funcional da coisa. Ele não era um back-end, mas consegue discutir soluções funcionais de igual para igual.
No próximo artigo, quero falar um pouco sobre cada um desses perfis e como eles se encaixam no desenvolvimento de software atual.
Bônus para quem está começando agora.
Abaixo, segue uma imagem muito interessante que o Kamran Ahmed fez no seu artigo Modern Frontend Developer, mostrando uma opção de caminho que geralmente alguém toma para se tornar um front-end. Fique como referência, mas não como verdade. Talvez o início pode acontecer igual para todo mundo, mas no meio do caminho pode haver algumas mudanças de pessoa para pessoa. Mesmo assim é uma grande referência.