Executando verificação de segurança...
1

Em busca da primeira vaga remota para o exterior

Salve galera! Só na boa? Como o título diz, estou procurando minha primeira vaga remota pra gringa, como backend. Mas gostaria de entender melhor o processo, por isso resolvi criar esse post aqui com o intuito de discutirmos sobre e ajudar até outras pessoas futuramente (imagino que já existam outros posts como esse, mas sei que podem surgir cada vez mais novas dicas que ajudarão a mim e outros colegas).

Então começando sobre oque eu já reuni de informação até agora, primeiro, um colega comentou que ter um projeto/produto como portfólio ajuda bem, mas todos lugares que trabalhei os projetos são privados ou de um nicho onde o recruiter precisaria ser cliente pra acessar. Faz sentido bolar um side project pra ter meu código aberto ao publico?

Segundo, sou backend e minha stack é Node.js (com js ou ts), domino bem SQL e NoSQL, tenho experiência como microserviços, serverless APIs e afins, mas para não criar um curriculo aqui, li algumas materias falando que é interessante seguir algumas estratégias para aumentar o SSI do linkedin para se tornar mais visível, onde explicam como fazer, mas isso é de fato relevante? Pergunto porque algums sites de vagas pedem apenas o currículo e por mais que esteja com uma descrição semelhante ao linkedin, oque poderia fazer para me destacar em meio a tantos candidatos?

Por fim, sei que a economia mundial não ta lá essas coisas oque deixa as empresas apreensivas acaba fazendo com que a maior parte das vagas remotas sejam country-based. Mesmo já tendo me candidatado a umas 30 vagas em uns 10 sites diferentes, as vagas liberadas pra qualquer timezone precisam de um tempo de busca maior, tem mais uns 30 sites ainda pra dar uma garimpada. Se puderem também, comentar como foi o processo de vcs, gostaria de ter um norte pra saber se to fazendo do jeito certo e/ou oque preciso melhorar.

Já vi uns 3 ou 4 anúncios no instagram sobre "cursos" de como ajustar o linkedin para ser mais relevante pro bot e ter mais atenção dos recruiters. Confesso que isso me pareceu golpe mas fiquei com algumas dúvidas:

Existe de fato alguma config pro perfil no linkedin para ser mais visível pro bot?

Existe um formato X de editar o CV para ser mais relevante nos sites de vagas?

E, oque os recruiters gostam de/esperam ver num CV e usam como critério para seleção e/ou desempate?

Atualmente estou focando em aprender melhor algorítmos e ED pra resolução de desafios a la leetcode, existe algum outro ponto técnico pra prestar atenção nas entrevistas e desafios das vagas?

Desde já, agradeço a atenção e paciência com esse post, fiquem à vontade para discutirmos, direcionar pra algum post com discussão mais completa, artigos de fora, etc..

Carregando publicação patrocinada...
1

"me conta, no detalhe, um problema complexo que vc precisou resolver e como resolveu, me fala no passo a passo"

essa é uma pergunta feita no processo seletivo da empresa que trabalho. o que vc traz pra mesa? vc que puxou o problema pra resolver ou entregaram o problema pra vc?

1

po, baita pergunta essa, vou formalizar como se estivesse respondendo pra um recruiter:

Com certeza o maior desafio que precisei resolver foi a remodelagem de uma das tabelas principais do core da aplicação, pra melhorar a performance e adequar com uma nova regra de negócio que havia sido validada com o cliente.
Essa tabela (A) reunia informações sensíveis, dentro da aplicação, de cada usuário, haviam diversos "JOINs" para poder condensar tudo e retornar ao front um "extrato" dos dados que o usuário precisava ver.

A complexidade dessa funcionalidade começou quando algumas validações de data e outros campos opcionais que o usuário poderia ter surgiram, assim como, um tipo de perfil específico do qual o usuário pertencia, junto com a possibilidade de "acumular" saldos totais de contas diferentes mas com o mesmo "tipo-de-conta". Porém, na nossa modelagem inicial o perfil do usuário não estava presente em nenhuma das tabelas onde a tabela A consultava para montar o "extrato", então, adicionamos esse campo na tabela A e seguimos o desenvolvimento.

E o desafio ficou ainda maior quando vimos que após alguns testes de carga realizados pela equipe de CS junto com os QAs os "JOINs" estavam detonando a performance fazendo com que estourasse o tempo de execução da função na AWS (Lambda), como cada usuário poderia ter facilmente mais de 5 contas, com mais de centenas de registros em cada, o número de itens por conta por usuário começou a gerar um gargalo. E ai começamos um trabalho extenso de remodelagem de cada tabela relacionada à esse processo (e posteriormente todas as tabelas da aplicação), por se tratar de um banco não-relacional optei por replicar dados da tabela X na tabela A afim de evitar JOINs (ou populates) e também melhoria na lógica de aplicação de filtros para tornar as queries mais eficientes, estudos sobre algorítmo e ED pra ajudar a identificar formas de melhorar processos de inserção e atualização entre outras medidas que foram tomadas. No fim conseguimos reduzir em 20s o processamento dos usuários de teste com dados em grande quantidade oque nos deu segurança de saber que não teríamos timeout no serverless nem em processos de atualização do banco.

Esse problema foi identificado primeiramente pelo meu PO na época e depois levado a testes pela equipe de CS junto aos QAs, e ja que se tratava de uma atividade que eu havia desenvolvido do 0 e já estava entregue, fui o responsável por adequar as queries e a lógica de inserção/atualização junto às melhorias necessárias nas models que esse processo utilizava. Mas como se tratava de um problema que iria impactar em outras partes do produto, nosso tech-lead e o CTO elaboraram um projeto de remodelagem para todo o software onde delegaram as tarefas para os responsáveis ou quem possuía maior conhecimento em partes específicas, tudo aconteceu em paralelo então eu diria que ajudei a identificar o problema a gestão das equipes comunicou oque eu deveria fazer.

1

o que senti falta:
-que banco de dados era esse?
-como eram esses testes de carta? que ferramentas usou?
-qual era o numero total de dados que consultava? 5 contas x algumas centenas não deveria ser problema para um banco nosql.
-qual o tempo de execução da lambda e o timeout? (pergunto para servir de parametro pra entender se os 20 segundos que reduziram é 20 em 30 ou 20 sec em 5 minutos)

está no caminho!

1

Boa! valeu pelos toques, vou prestar atenção nisso e dar uma "ensaiada" na resposta pra entrevistas futuras.

Mas pra esclarecer, utilizamos MongoDB, os testes de carga eram realizados percorrendo todo o caminho que um usuário faria dentro da plataforma, desde criar o login até a função real do produto (que não posso comentar aqui... kkk), mas os dados das contas dos usuarios eram inseridos "na mão" via JSONs gigantescos gerados de forma automatizada pelo CS e importados pra dentro do banco.

Dificil te dar um número fechado mas sei que eram mais de 20k de usuários e cada um deles com pelo menos 50-70 registros em cada conta e por volta de 3 ou 4 contas, um número "realista" de acordo com os POs e CS. As queries também foram bem otimizadas no momento de aplicar os filtros.

E concordo contigo, não era pra dar gargalo, a questão é que a modelagem inicial não contemplava referência extendida quando foi criada bem antes de eu entrar no projeto, oque nos levou a usar muitos lookups e populates, e ai o tempo de requisições ia pro espaço.

Por fim, o timeout era justamente como deu o exemplo, depois 30s aguardando a lambda caía, e ai baixamos pra 10s.