[Dúvida] Experiência com Microservices é Essencial para um Backend Pleno/Sênior com Base no Que o Mercado Exige?

Ultimamente, tenho participado de processos seletivos e entrevistas técnicas para vagas de desenvolvedor backend pleno/sênior, com o objetivo de analisar o mercado, identificar as tecnologias mais utilizadas e entender quais conceitos estão sendo mais requisitados. Durante essa observação, percebi um fato: não encontrei sequer uma vaga ou processo seletivo que não exigisse experiência e conhecimento em microservices.

Isso me leva a uma reflexão: será que experiência com microservices realmente se tornou o mínimo necessário para um desenvolvedor backend pleno/sênior nos dias de hoje?

Não, até porque quase ninguém precisa disto. Muita gente acha que precisa só porque não quer se sentir excluído aí cria algo complexo sem necessidade.

E é verdade que em alguns casos não fica tão complexo assim, a pessoa é tão sem noção que ela fala que faz microsserviços, mas não faz, ela sequer sabe o que é.

Para aprender microsserviços de verade, na prática você não consegue. Cada vez mais eu vejo a pessoa falando que sabe e ela fez tudo sozinha, então ela não aprendeu a fazer, ela só decorou umas coisas que leu em algum livro ou outro local e reproduziu algo muito simples que indicaram. Isso não está nem perto de fazer microsserviços. E é o mesmo que dizer que você aprendeu construir um carro, você só saberá em equipe ou de um jeito tão artesanal que não tem valor algum.

Você já ouviu a expressão "vagas arrombadas"? Então, é o que está achando, estão pedindo por via das dúvidas, ou para fazer as pessoas mais fracas desistir ou ainda querem mesmo mexer com isso mesmo sem a menor noção do rolo que estão se metendo, portanto é um lugar ruim de se trabalhar.

De qualquer forma eu vejo tantas vagas que não pede isso, sei lá o que acontece.

Inclusive os lugares que realmente precisam (e olhe lá) que eu conheço tem uma equipe que precisa saber mesmo, poucas pessoas que cuidam disso, o resto, uns 98% da equipe faz sua parte sem precisar saber nada disso mesmo rodando tudo em microsserviços, ou seja, pelo menos é quem sabe o que está fazendo. Basta saber fazer direito, modularizado, usando técnicas adequadas para qualquer software complexo e depois aprender alguns mecanismos específicos do ambiente, que você só terá experiência lá dentro.

Se você quiser entrar nessas vagas, aí faz o que elas acham que é o certo, e torce para encaixar. Eu gastaria meu tempo com vagas melhores, mas só você sabe o que é bom para você.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

Sobre o pessoal não saber usar ou não usar corretamente, isso é algo comum, mesmo com outras arquiteturas, design patterns, ferramentas e linguagens. Sempre aconteceu na nossa área. A questão é que algo pode se tornar um conhecimento exigido pelo mercado, mesmo que não faça sentido algum. Se esse for realmente o caso, cabe a nós apenas conhecer e estudar para estar preparados. Estou acompanhando vagas para backend sênior, e um amigo meu está olhando para backend pleno no LinkedIn e GeekHunter. Por enquanto, foi o que apareceu. Ainda não fiz uma análise de dados mais profunda, mas escrevi um script em Python para coletar centenas de vagas e filtrar as palavras que mais aparecem. Algumas que surgiram com frequência foram Kubernetes e microservices. Nos processos seletivos que eu e ele fizemos, o conhecimento nesses temas foi praticamente obrigatório, incluindo experiência prática. No entanto, minha amostragem ainda é limitada e pode ser enviesada. Talvez valha a pena analisar melhor.
Não existe conhecer microsserviços sem prática forte, e a prática você só obtém fazendo em uma equipe grande, então essas vagas, se fizerem certo, só serão preenchidas por quem está trabalhando com isso e quer trocar de emprego.
Faz sentido. Microsserviços sem prática real são difíceis, ainda mais porque exigem experiência em ambientes grandes. Essas vagas acabam sendo mais para quem já trabalha com isso e quer trocar de empresa. Mas conhecer os conceitos ajuda a entrar nesse mundo mais facilmente e a responder perguntas teóricas na entrevista de emprego, o que pode aumentar as chances de ser selecionado.

Experiência? Não, saber o que é e em quais situações é adequado usar com certeza. Pleno/sênior não precisa só saber apertar parafuso, mas saber qual tipo é mais adequado para cada situação. Eu creio que padrões arquiteturais são sim conhecimentos essenciais para quem quer deixar de ser júnior

Faz sentido mesmo, é difícil cobrar experiência, já que nem toda empresa usa isso, e a pessoa pode ser um profissional super capacitado, mas nunca ter trabalhado com essa arquitetura. No entanto, conhecer é outra coisa – ter um leque de ferramentas e arquiteturas disponíveis para aplicar no melhor cenário possível, faz parte de ser um senior mesmo.

Me aplicando recentemente para vagas pleno/sênior, percebi, na prática, que exigem mais o conhecimento sobre o que são e como funcionam do que a aplicação no dia-a-dia. Eu sempre digo que só tive uma experiência com microsserviços, e ainda assim só por fora, como líder técnico, do que pondo a mão na massa. Então diria que o conhecimento do conceito é sim importante, inclusive pra dizer quando não aplicar, mas o conhecimento prático não é obrigatório.

Realmente concordo com você, até porque, nas entrevistas que fiz, não houve testes práticos de desenvolvimento de projetos, e sim uma lista de perguntas conceituais e teóricas. A prática, então, mesmo que seja um diferencial, não foi de fato obrigatória. Inclusive um livro que me ajuda bastante é o "Building Microservices: Designing Fine-Grained Systems"

As vagas por aí são copia e cola e muito recrutador nem sabe direito o que está pedindo, principalmente se for de RH. Micro serviço é algo muito específico e só mesmo se a empresa usar isso no seu dia a dia o que é muito raro.

Foi por isso que achei estranho tantas vagas e processos solicitando isso.

Bom, vou trazer minha visão de recrutador técnico.

A resposta curta é não. Não vejo isso como o mínimo necessário.

Eu julgo mais a capacidade da pessoa em saber resolver problemas. Inclusive, uma das perguntas que eu faço é: qual foi o problema mais difícil que você já resolveu? E como que você resolveu?

A questão é que micro serviços é uma forma de resolver problemas (que muitas vezes nem precisava). A questão é que, de alguma forma, surgiu um hype tão grande em volta disso, que todo mundo acha que deve usar.

Outra coisa que tem que ficar claro, é o seguinte: boa parte dos anúncios de vaga não são feitos por pessoal técnico, mas sim pelo próprio pessoal do RH.

Claro que o pessoal de RH vai perguntar:

  1. Quais são os requisitos da vaga?
  2. Existe algum diferencial que podemos colocar?
  3. Qual a stack que precisa ser divulgada na vaga?

Porém, veja bem, quem monta a vaga, na grande maioria das vezes, é o pessoal de RH.

Agora, se mesmo nas entrevistas técnicas estão solicitando micro serviço, acredito fortemente que se enquadra no que comentei acima: virou moda, e as pessoas acham que precisam.

Mas que fique claro, edta é apenas a minha opinião.

Eu também não veria isso como o mínimo necessário e nem acho que o pessoal mais técnico deveria ver assim, a menos que a empresa viva e respire isso todos os dias e queira alguém que já chegue produzindo e contribuindo. No final, nossa capacidade está em saber aprender. Se eu não conheço um pattern ou uma arquitetura, consigo estudar, me preparar e colocar em prática, mesmo que nunca tenha ouvido falar antes. Mas, sim, eles acabam seguindo um checklist, e o "Sim" ou "Não" conta muito nesse pente fino. No fim do dia, o que importa é resolver problemas e saber se virar. Ótima reflexão de um recrutador técnico! Muito obrigado!

Meus 2 cents:

Meu palpite ? Sim.

Indo contra a mare dos comentarios que vi, acho que sim, no conhecimento de microservicos como diferencial para o desenvolvimento de sistemas modernos. Nao minimo (ainda) - mas um diferencial importante.

Em sistemas compilados (p.ex. Delphi, .NET) - era comum incorporarmos bibliotecas de terceiros para trazer certas funcionalidades, nem se questionava muito isso - era so uma questao de: eh util ? preciso disso ? quanto custa ? incorpore e use.

Microservicos estao se tornando cada vez mais as bibliotecas de ontem - os frameworks e boilerplates trazem a pre-estrutura basica e vamos preenchendo com microservicos que realizam algumas das tarefas que sao necessarias - claro que outras terao de ser desenvolvidas.

Mas preparar os sistemas modernos para usar chamadas (webhooks/API) de terceiros e/ou disponibilizar webhooks/API para terceiros eh algo absolutamente comum - alias, tao comum que quando um sistema nao disponibiliza alguma forma de integracao eh que eh "esquisito".

"Ah, mas microservicos nao sao apenas webhooks/API" - claro, mas sao parte importante deste ecosistema, entao faz parte do processo (p.ex. entender como o processo de integracao eh realizado, autenticacoes, sessoes, etc) entender como eles funcionam.

So para finalizar: estou falando de microservicos nao SaaS - que sao coisas diferentes.

Valeu pelo comentário! Concordo que microserviços já são um diferencial e caminham para se tornar padrão, assim como antes incorporávamos bibliotecas sem pensar duas vezes. Integrações via APIs e webhooks já são esperadas, e quem desenvolve sistemas modernos precisa entender bem esse ecossistema. Não é obrigatório ainda, mas saber como funcionam já faz diferença.