Este texto foi escrito por Jaqueline Duque e Marcela Porto, engenheiras de software do Nubank.
Um dos valores que temos no Nubank é “construir times fortes e diversos”. Isso está refletido em tudo o que fazemos, começando pelo nosso processo seletivo. Ele foi desenvolvido não só para encontrarmos os melhores talentos, mas também para que seja uma boa experiência para as pessoas que se candidatam.
Para quem se candidata a uma vaga na área de engenharia de software, em muitos casos a primeira etapa consiste em um exercício técnico realizado em plataformas de contratação. Abaixo, entenda como eles são avaliados e veja algumas dicas para se sair bem nos testes.
Como funcionam os exercícios técnicos da seleção para engenharia de software do Nubank?
Aqui no Nubank, mais do que avaliar a sua proficiência no código, estamos avaliando sua lógica de programação e capacidade de compreender e evoluir as estruturas de dados do problema.
Por isso, nós apresentamos no exercício as estruturas de dados de entrada e as esperadas de saída. A chave que você deve mostrar para quem está avaliando é a evolução dessas estruturas utilizando lógica de programação. A sintaxe e a linguagem escolhida são apenas ferramentas para isso – tanto que deixamos que você escolha a linguagem que se sentir mais confortável.
É importante garantir que seu código seja limpo, organizado, legível e não acrescente mais complexidade do que o necessário.
Quais as principais dicas para resolver um exercício técnico de algoritmos?
Há uma série de boas práticas que podem te ajudar, mas principais delas são:
1. Desenvolva a solução baseada na lógica de programação, sem se ater à linguagem escolhida
Antes de iniciar o código, tente criar um pseudocódigo, onde você vai avaliar tudo o que precisa fazer para que os inputs evoluam para o novo estado esperado. O pseudocódigo te ajuda a colocar as ideias no lugar, garantindo que você se atente a todos os requisitos e te guiando na lógica de programação que você precisa implementar.
2. Evite comentários e explicações em excesso sobre seu processo de pensamento
Exercícios de algoritmos propostos em plataformas online não costumam disponibilizar local para descrição de decisões técnicas. Portanto, não é esperado que você precise explicar seu processo de resolução, ou o que cada parte do código está realizando.
O seu código deve falar por si, então comentários sobre este tipo de descrição devem ser evitados. Alguns exemplos de comentários que, nesse contexto, não contribuem necessariamente para a sua avaliação: explicações detalhadas da solução, de outras soluções que não deram certo, por que um corner case não é contemplado nessa solução, etc.
3. Mantenha as variáveis temporárias e funções bem nomeadas
Dar um nome descritivo ajuda muito na compreensão. Assim, ao ler o nome de uma variável, é possível entender que tipo de informação ela trata, evitando que seja necessário ler um bloco grande apenas para entender a finalidade dela. Exemplo: para uma variável de contador, o nome “contador_da_avaliação” é melhor do que “a”, pois descreve efetivamente a função dela.
O mesmo vale para as funções: o nome deve refletir sua responsabilidade.
4. Funções devem ter responsabilidades bem definidas
Falando em funções, elas devem ter responsabilidades bem definidas. Quando uma função é encarregada de muitas responsabilidades, torna o processo de entendimento muito difícil. Uma solução para isso é “quebrar” a grande função em funções menores, com responsabilidades bem definidas.
5. Não crie interfaces de interação
Especialmente para problemas do HackerRank, você não precisa criar uma interface de interação. Não se preocupe e nem perca tempo com isso!
6. Remova códigos não utilizados
Remova qualquer dead code. Exemplos: prints, tentativas que não deram certo, variáveis e funções não utilizadas. Também avaliamos a limpeza e organização da resolução, e a remoção de dead code é um jeito fácil de garantir que sua solução está atendendo a isso.
7. Evite importar bibliotecas
Importar bibliotecas além das que vêm no exercício pode não funcionar ao seu favor porque elas podem cortar um caminho que esperávamos avaliar na sua lógica de programação.
Ao importá-las, corre-se um grande risco de quem te avalia não conhecer a biblioteca, ou seja, você está deixando de mostrar o seu conhecimento e o avaliador pouco pode avaliá-lo.
8. Valide a solução
Ao final, respire fundo, releia o exercício, e veja se está atendendo todos os requisitos.
Os passos acima são algumas dicas para te ajudar durante a avaliação, mas lembre-se: em todo processo seletivo, o mais importante é você se sentir confiante para conseguir mostrar o máximo das suas habilidades.
Leia também:
12 motivos para trabalhar com engenharia de software no Nubank
Mulheres e tecnologia: conheça a história de 3 engenheiras de software do Nubank