Olá, esse é o segundo post da série "Trabalho Remoto" (leia o primeiro aqui ), e dessa vez vou trazer algumas dicas relacionadas aos sites de code challenge.
Como falei no post anterior, em 2017 comecei a fazer entrevistas em inglês para tentar trabalhos no exterior, fossem eles remotos ou presenciais. E na maioria dessas entrevistas, quando eu conseguia passar para o teste técnico, recebia um e-mail com um link para um site onde o teste seria validado de forma automática e com um tempo pré-determinado para finalização. Também conhecidos como code challenges.
Esse tipo de teste se diferencia um pouco dos demais pela automação que mencionei acima, e também por exigir um pouco mais de conhecimento na parte de conceitos, como por exemplo: estrutura de dados, resolução de problemas, sistemas distribuídos, algoritmos, matemática, etc.
Para quem é acostumado apenas com o dia a dia de um software mexendo com requests, responses, ORM e afins, vai penar bastante como eu penei. Apesar de ter estudado muitos desses temas na faculdade, não aplico com frequência no dia a dia e o conhecimento acaba escapando com o tempo.
Alguns destes testes são bem pragmáticos, do tipo "faça isso" e se compilar, passou. Já outros mandam um breafing, vocẽ tem que criar uma feature, criar testes unitários, e no final a plataforma ainda rodar os próprios testes para verificar a assertividade do código. (e depois de passar em todos esses testes, a empresa ainda te retorna dizendo que você não foi aprovado para a próxima fase, vai entender)
Bom, com o tempo a gente vai pegando o jeito e melhorando nosso rendimento nesses challenges. Mas, claro, precisamos estudar e pegar dicas que irão nos ajudar nesse processo. Então, vou listar abaixo o meu processo de aprendizado para essa finalidade:
30 Days of Code - Hackerrank : o Hackerrank é uma dessas plataformas utilizadas pelas empresas para avaliar seu conhecimento através dos code challenges. Mas, um dos grandes diferenciais dela é que você tem à disposição uma lista de challenges para fazer na hora que você quiser. São organizados por linguagem, conceito, nível de dificuldade, etc. E para começar do zero, recomendo demais o 30 Days of Code que vai explicando desde um simples "Hello World" até temas mais complexos como filas, pilhas, árvores binárias, etc.
Codility : o Codility tem o mesmo propósito do anterior, mas sua parte de aprendizado é um pouco menor, além de ter um foco bem forte em algoritmos. Nos exercícios a gente encontra o algoritmo de Euclides, Fibonacci, Crivo de Eratóstenes, etc.
Livro Estrutura de Dados e Algoritmos em Javascript : esse livro é, de longe, a melhor referência do assunto em língua portuguesa. Apesar de ser focado em uma linguagem (Javascript), a autora aborda o tema de uma forma tão ditática e simples, que mesmo quem não conhece Javascript, terá facilidade com o conteúdo aqui apresentado.
Essas foram as dicas de hoje. Se você conhecer mais alguma plataforma e/ou livro que possa ajudar nessa jornada, compartilhe conosco. :)