A lenda do fullstack
Índice
Sempre que perguntamos para uma pessoa desenvolvedora, a maioria se considerá “desenvolvedor(a) full-stack”; um perfil intrinsecamente senior, com vasto conhecimento e com alta demanda no mercado.
Uma pessoa desenvolvedora capaz de projetar e implementar projetos, tanto do lado do servidor (backend) quanto do cliente (frontend), o que significa conhecer os pontos fortes e fracos de cada tecnologia e manter-se atualizado à medida que evoluem.
Com a constante e rápida evolução, manter-se atualizado no frontend e backend é cada vez mais complicado. React, Vue, Svelte, Angular, SASS, LESS, e as contantes (e boas) evoluções do ECMAScript (o querido Javascript) já tornam uma tarefa difícil ser atualizado no universo frontend. Se você considerar que programar (em uma das milhares de linguagens) no backend é uma pequena fração da responsabilidade, precisamos questionar se atender a essas expectativas é mais um mito do que uma realidade.
A origem do FullStack
Quando essa nomenclatura começou a ser usada para esse perfil, no início dos anos 2000, as tecnologias eram claramente menos complexas e as opções eram menos numerosas:
- Havia poucos servidores, encarregados de manter o estado, a lógica e o frontend. As linguagens podiam mudar mas o modelo, os padrões de desenvolvimento e as técnicas utilizadas eram semelhantes.
- Todos os bancos de dados seguiam o modelo relacional, com linguagens de consulta SQL. Não havia grandes dificuldades ao mudar de banco de dados.
- O frontend utilizava um Javascript simples e um DOM baseado em HTML4/CSS2, orientado apenas para exibir documentos em desktops com telas de resoluções semelhantes. Não havia complexidades como responsividade e mobile first.
A evolução das tecnologias
Ser fullstack agora significa que você consegue: criar frontends, escrever backends, lidar com devops, iniciar um podcadas, curar uma newsletter, rachar um ovo com uma mão só e animar um filme da pixar
A evolução das tecnologias de front e back-end tem sido considerável, desde então:
- Houve uma mudança de paradigma fundamental sobre o estado de um aplicativo, que migrou do back-end para o front-end.
- Essa mudança de paradigma também modificou o centro de gravidade do conhecimento do desenvolvedor de full-stack, que deixou de ser, no início, um especialista em back-end com conhecimento de front, para ser agora mais um especialista em front-end.
- O Javascript foi aprimorado e sofisticado (ECMAScript 5, 6 e 7) a ponto de rivalizar soluções de engenharia de software em um nível do C# ou Java.
Here comes a new challenger
O mundo mobile
Tanto o iOS quanto o Android exigem conhecer bem seu rico e complexo ecossistema, se você deseja oferecer soluções nativas e, apenas no caso de usar tecnologias híbridas baseadas no DOM do navegador (Reactive Native, por exemplo), é possível tornar essa árdua tarefa mais simples, embora com contrapartes de desempenho.
Front-end
As possibilidades de layout agora são muito mais maiores. O CSS e o DOM permitem layouts muito sofisticados, necessários para se adaptar a vários clientes: mobile/desktop, diferentes tamanhos e densidades de tela, interfaces de toque, etc. E são padrões que continuam a crescer (CSS3, FlexBox), não apenas em 2D , mas também em 3D (WebGL).
O mundo backend já não é mais o mesmo, Charles
No back-end, os bancos de dados não seguem exclusivamente o modelo relacional. Os “NoSQL” chegaram para ficar. Dynamo, Mongo e muitos outros, cada um com suas particularidades.
No back-end, os bancos de dados não seguem exclusivamente o modelo relacional. Os “NoSQL” chegaram para ficar. Dynamo, Mongo e muitos outros, cada um com suas particularidades.
Os monolitos estão migrando para arquiteturas mais distribuídas, baseadas em microsserviços, muito mais escaláveis e em muitos casos, baratos para manter. Esse novo paradigma traz diversas vantagens, mas não é uma bala de prata e há muitas desvantagens que precisam ser ponderadas ao avaliar uma solução.
Um espécime quase extinto
Mesmo com esse amplo panorama de tecnologias, o desenvolvedor com uma vocação full-stack ainda tem alguma possibilidade. Um exemplo disso é que, escolhendo bem a stack, a mesma linguagem agora pode ser usado em todos os contextos: Javascript na web (DOM), no mobile (Cordova, React Native), no servidor (Node.js) e no DB (MongoDB).
E, no entanto, esperar que a mesma pessoa possa escolher as tecnologias ideais em todas as circunstâncias, desenvolver backend e frontend com alta produtividade e em um período de tempo razoável, parece algo cada vez menos realista.
Mesmo que existam casos em que uma startup é criada em torno de uma stack específica ou em projetos menores, não devemos definitivamente aposentar esse perfil como o conhecemos?