Ser fullstack está fora de moda

Ser fullstack está fora de moda

Inicio de tudo

Tudo começa nos primórdios da internet no entre os anos 90 e o inicio século 21 em que existia uma pessoa que antes chamávamos de WEBMASTER, basicamente a pessoa que ~faz coisa de computador~.

Era alguém que desenhava, programava e subia um site INTEIRO muitas vezes com super animações em flash, fazia sistema Java ou Delphi, usava Linux e conversava com os amiguinhos internéticos pelo iRC.

Mas o boom mesmo pra web foi quando saiu AJAX pois podíamos fazer REQUISIÇÕES em um SITE. Fazendo com que sistemas, aplicações, lojas ficassem todas online criando uma necessidade cada vez maior de amadurecimento e ferramental para isso. CSS, HTML amadureceram, JS que foi criado pra contador de visitas em blog virou a linguagem mais usada do mundo e não só surgiu HTTP para nos ajudar a fazer essas requisições de forma mais sofisticada como tem gente hoje que faz doideras com ele como o GraphQL.

Desenvolver web não é mais sobre fazer forms ou tocar Crazy in love da Beyonce no seu diário pessoal geocities mas sim sobre fazer coisas sérias e sofisticadas para empresas com muito ferramental, e a necessidade de um aprofundamento no conhecimento especifico.

https://miro.medium.com/max/1238/0*WyEvBcxkul7D1A_p.jpg

Webmaster direto dos anos 90

Se formos analisar, na web sempre foi bem mais comum desenvolvimento de aplicações incluindo mais de uma camada de desenvolvimento, como LAMP/XAMP, que é para subir sites php pelo apache já com banco de dados e tudo ou ASP.NET MVC que faz todas as camadas do site em C#. Django em python por exemplo, foi super revolucionário por fazer uma arquitetura MVT de forma simples.

Só que a complexidade começou a ficar cada vez maior pro desenvolvedor e passamos a separar as coisas em especialidades.Chamamos a pessoa que mexe com interface de *“Front-end” e de **“Back-end” a que mexe com lógica de negócio. Um mexe no HTML, CSS e JS e outro faz API, sobe as coisas, mexe com banco etc. *A pessoa que mexe na lógica de negócio PHP não vai mais mexer no HTML porcamente se não é a especialidade dele. E isso fez sentido!

Não muito tempo depois o mercado notou que talvez o back-end seria mais produtivo se não se preocupasse com infra, deploy e o que diabos é a nova coisa maneira de integração continua e criou o titulo de “Devops”, o mesmo sobre talvez o front-end não precisar saber sobre design ou como usar o photoshop, e talvez não tenha tempo pra pesquisar qual a melhor forma de interface e se preocupar com consistência, ou na melhor experiência do usuário e ai veio o UX, UI dentre outras vagas relacionadas com design e produto.

Com o crescimento da complexidade surge a necessidade de novos títulos com mais especialização de conhecimento. Pois é OBVIO que ninguém vai conseguir ser especialista em tudo não é?

O FullStack(ou o que isso deveria significar)

Em não hipstêres o full-stack pode ser mais conhecido como “pau-pra toda obra que é algo que define muito bem alguém que consegue suprimir todas as areas. Trabalha com infra, mexe com banco, faz API, poe botão no React, arquiteta, documenta, faz teste, faz scrum, cafézinho, compra cerveja pro happy hour etc etc.

E especialistas com certeza ficaram bravos: “Certamente o desenvolvedor “não-especialista” deve ser movido a gambiarra! E ainda está ganhando mais!”

O ponto é que em teoria cada um fica no seu quadrado mas em produção a merda é de todos. Se tem um bug o produto está cagado independente do que você mexeu ou não nisso. Se a interface é um lixo e uma requisição demora 10s o usuário vai fechar a janela e não vai ser convertido pro produto independente da arquitetura maravilhosa do back.

Seguindo essa lógica, um mal back-end pode fazer o produto todo ser uma merda. E quem vai querer um desenvolvedor que pode copiar e colar do StackOverFlow um JQuery e colocar dentro do React? Chamar a classe css de “barrinha4”? Faz 50 requisições no banco pra pegar os dados de uma pessoa?

Várias empresas na verdade 😲Existem empresas que não precisam se preocupar tanto com débito técnico como por exemplo: projetos pequenos, agências, consultorias etc que são mais focadas em entrega. Existem startups que além de não terem dinheiro pra contratar querem pessoas capazes de entender melhor do negócio, do cliente e ter controle sobre tudo acontecendo. Existem empresas com times “cross-functional”, ou feature-teams, ou que simplesmente não acham que precisamos ser fadas de código que toda feature vai sair linda como um sonho de princesa e cada um tem sua especialidade.

Não é tão super impossível assim debuggar algo um pouco fora da sua zona de conforto e descobrir qual o problema. Não deveria ser tão difícil assim fazer uma feature um ferramental novo ou arrumar um botão no app só sabendo mais ou menos como as coisas funcionam. Se a empresa tem um bom code review e as pessoas tem um pouco de capricho isso deveria ser no mínimo de boas.

Ok, é chato e custoso sair da sua zona de conforto ou area de especialidade e ninguém na real precisa fazer isso mas a gente tem uma ideia errada de achar que precisamos ser mestres de tudo para sermos produtivo. É ok ser um mal back-end e fazer um css glorioso e isso não deveria te impedir de fazer e aprender back-end.

E é por isso que mesmo com pouquíssima experiência de trabalho botei no meu linked-in que eu era fullstack(a principio como zueira rs) pois eu tinha alinhado um botão bootstrap e fiquei assustada sobre como começaram a chover pessoas me oferecendo vagas. Dai vi que empresas na real só querem pessoas versáteis que entreguem. E isso só prova que debito técnico não é o fim do mundo(e é mais barato a curto prazo kk) assim como nós somos humanos com conhecimentos diversos e experiências diversas em tecnologia e that's ok

Títulos são merda

Ainda não existem vagas de “back-end que é surpreendentemente bom em CSS e é fera no photoshop” ou “front que aprendeu kubernets”. E talvez a mina que está louca pra mexer com React está presa no back ou o cara que é ama DBs está mexendo no Angular e that’s ok. Pessoas são pessoas independente de jargão, pessoas aprendem, se especializam, mudam de area, empresa e projeto.

Até a ideia de junior e senior é completamente torta e difere de empresa pra empresa. Medimos expertise por conhecimento ou por tempo de trabalho? e isso se refere uma ferramenta em especifico ou conhecimento geral de desenvolvimento? O senior é senior por trabalhar a 10 anos na area ou por saber muito bem x ferramenta? E ele é senior pois sabe liderar um time ou é mais tecnicamente?

Tipo, cada um experiência e aprende de formas diferentes e o seu tempo de mercado não metrificam ninguém. Metrificar salários e experiência em cima de skillset ou ferramentas especificas é cada vez mais complicado principalmente na area que mais muda e fica relativo de acordo com as necessidades de cada empresa. É impossível colocar pessoas em só um título pois pessoas são um pouco mais complexas que isso.

No final das contas o cargo não define o que a pessoa faz ou é capaz de fazer.

Minha sugestão

Pessoas não deveriam se limitar a uma ou duas camadas de conhecimento com perguntas tipo “Ah, o que eu preciso aprender pra ser front-end pleno”.

Talvez deveríamos repensar recrutamento e como declarar o que sabemos. Talvez deveríamos repensar responsabilidades dentro do desenvolvimento de software.Talvez deveríamos repensar como remuneramos pessoas e como medir produtividade a curto e longo e prazo

E PRINCIPALMENTE Talvez deveríamos repensar como construir times que não se prendem em caixinhas e que ao invés de esperar o perfeito de cada pessoa deveriamos aceitar erros e aprendizados como UM TIME se olhando e se ajudando. A empresa não é feita de heróis mas de pessoas juntas entregando coisas e certamente uma boa colaboração é melhor forma de fazer isso.

Da minha experiência como pseudo-fullStack

Se você tem o titulo de full-stack e uma empresa te contrata você não sabe exatamente qual responsabilidade esperar e qual ferramental vai mexer. E certamente vai mexer em um projeto de cada vez.Só que se você não quer mexer com alguma framework ou lang especifica, tipo, “Ah, não gosto de mexer com CSS em especifico” ou “Mexo no front mas prefiro back”, vai ser BEEEM chato ficar em um projeto de MESES fazendo o que você não queria. Além disso você implicitamente não tem tanto poder de escolha de mudanças técnicas por não ser especialista.

Já que por agora no mercado a maioria das contrações funcionam de forma padrão talvez faça sentido você colocar no seu linked-in como Back-end se você quer trabalhar com com ferramentas mais especificas de back-end e como pleno se responsabilidades tidas comumente como pleno faz mais match com o que você sabe sobre x ferramenta atualmente.Não pelas empresas mas sim pq é mais fácil filtrar as vagas que você quer sendo mais específico.

Já vi juniors eternos que tão sempre migrando de camada de conhecimento.e se salário é o problema já vi pessoas seniors de uma ferramenta só. Juniors com salário de 5 dígitos e seniors ganhando 2k PJ em startupinha.

Fica o questionamento ai paras pessoas desenvolvedoras sobre o que elas podem passar a esperar de empresas e deixar de esperar de si mesmas e o que as empresas podem pensar em mudar.

— — — — — — — — — — — — — — — —

Enfim, Espero que você tenha gostado do artigo 💙💚❤️🧡💛

Já tinha escrito esse artigo faz tempo, só postei agora rs

Quem gostou bate palminha pra que essa mensagem alcance outros amiguinhos.👏 👏 👏 👏 👏 👏 👏 👏 👏