Ir para o conteúdo
SkillCort

8 min · 8 stepsTutorial de criação de testes

Como criar um teste de programação

Os melhores testes de programação parecem um pedaço pequeno e honesto do trabalho — não um puzzle de quadro branco que um programador viu pela última vez na escola. Este tutorial mostra como construir um na SkillCort: uma tarefa realista no tipo de item de código, uma grelha que pontua mais do que a correção e controlos de integridade dimensionados ao risco.

What you'll need

  • Um espaço de trabalho SkillCort (ou uma demonstração)
  • Um exemplo real do código que a sua equipa escreve — um erro, uma pequena funcionalidade, uma refactorização
  • Um engenheiro sénior para definir a tarefa e a grelha
  • Uma decisão sobre que linguagens vai aceitar

Step 1: Escolha uma tarefa realista em vez de um puzzle de algoritmos

Veja o último mês de pull requests e escolha uma tarefa com a forma das que se repetem: corrigir um erro a partir de um comportamento defeituoso, estender uma pequena função para tratar um novo caso, refactorizar um bloco confuso ou escrever uma transformação de dados. Estas predizem o desempenho do dia a dia muito melhor do que inverter uma árvore binária.

Dimensione-a para 30–45 minutos de trabalho concentrado de uma contratação competente. Um puzzle recompensa quem o ensaiou; uma pequena tarefa realista recompensa quem consegue ler a intenção existente, fazer uma alteração sólida e manter o código compreensível — que é para isso que está a contratar.

Retire o conhecimento específico de frameworks e da empresa, a menos que a função o exija mesmo, e forneça dentro do próprio enunciado todo o contexto de que a tarefa precisa. Um bom engenheiro que nunca tocou na sua stack deve ainda assim conseguir mostrar-lhe um juízo sólido. Teste a capacidade, não a familiaridade com as curiosidades do seu código.

  • Repete-se no seu código real, não nos livros de preparação para entrevistas
  • Tem mais do que uma solução razoável
  • Cabe em 30–45 minutos sem heroicidades
  • Legível por um avaliador em menos de dez minutos

Step 2: Crie o item de código na biblioteca de itens

Crie uma pasta para a função — Engenheiro de Backend, por exemplo — com etiquetas para a área de capacidade e a dificuldade, e depois crie um item com o tipo de item de código. Os candidatos escrevem e editam código diretamente na área de resposta, e os avaliadores revêem-no depois no mesmo sítio.

Prepare o item com código inicial em vez de um editor em branco. Uma função curta com um erro descrito, ou um esboço com um contrato claro, ancora todos os candidatos ao mesmo ponto de partida e torna as suas alterações diretamente comparáveis. O trabalho real quase nunca começa num ficheiro vazio, e o teste também não deve começar.

Step 3: Escreva o enunciado ao lado do editor

Use a disposição de estímulo lado a lado: o enunciado, os requisitos e os exemplos de entradas e saídas de um lado, o editor de código ao lado. O candidato nunca se afasta da especificação para escrever a solução — a mesma forma que trabalhar a partir de um ticket num IDE.

Escreva o enunciado como se lê um bom ticket: comportamento atual, comportamento esperado, restrições e dois ou três exemplos concretos. Indique explicitamente o que lhe interessa — «primeiro código a funcionar; também lemos em busca de clareza» — para que os candidatos otimizem aquilo que vai de facto pontuar. A ambiguidade no enunciado torna-se ruído nos resultados.

Step 4: Construa uma grelha que pontue mais do que a correção

O resultado correto é necessário, não suficiente. Construa uma grelha matricial por níveis com três ou quatro critérios — tipicamente correção, legibilidade e abordagem, opcionalmente o tratamento de casos-limite — cada um com descrições ancoradas do que é código forte, aceitável e fraco. «Os nomes revelam a intenção, não há código morto» é pontuável; «código limpo» não é.

Pondere a correção com o maior peso, mas mantenha os outros critérios reais: uma solução que mal funciona e que ninguém consegue manter não é um bom sinal de contratação. Quando associa a grelha, esta congela num instantâneo, pelo que todos os candidatos da execução são revistos segundo a mesma norma, mesmo que a versão do banco evolua mais tarde.

Step 5: Monte e limite o tempo no builder

Crie a avaliação em secções, páginas e blocos e importe o item de código através da janela de seleção. Muitas equipas acrescentam uma primeira secção curta de perguntas rápidas de juízo — ler um diff, detetar o erro num excerto, colado rapidamente como escolha múltipla — e colocam a tarefa de programação na sua própria secção.

Defina o limite de tempo total com folga para ler e pensar e use um limite por página na página de programação, para que a tarefa não engula a tentativa inteira. Pondere a secção de programação com o maior peso (por exemplo ×3), para que a adequação à função no Decision Board reflita o trabalho e não o aquecimento. Escreva instruções que indiquem as linguagens permitidas e o que acontece se o tempo acabar.

Step 6: Pré-visualize, cumpra a lista de verificação e publique

Use o Preview as candidate e faça você mesmo a tarefa ou, melhor ainda, peça a um engenheiro que não a escreveu que a faça sem preparação. Se terminar em dez minutos, é demasiado fácil; se não conseguir terminar dentro do limite, alargue o âmbito ou o relógio. Corrija o enunciado onde quer que tenha hesitado.

Depois cumpra a lista de verificação de publicação — ela bloqueia Publish até a pontuação, os tempos e as instruções estarem completos. Um teste de programação sem grelha ou com um limite de tempo por testar nunca deve chegar a um candidato, e a lista de verificação faz com que não chegue.

Step 7: Defina controlos de integridade proporcionais ao risco

Crie a aplicação com um nome e uma janela temporal e escolha depois os interruptores de segurança de forma deliberada. Para uma triagem normal de contratação, o bloqueio de copiar/colar e o bloqueio de ecrã inteiro com um limite de infrações sensato costumam bastar. A gravação de webcam, a gravação de ecrã, a deteção de segundo ecrã e as verificações de identidade existem para execuções de risco verdadeiramente elevado — certificações, rondas finais —, não como predefinições.

Tudo o que ativar é comunicado no ecrã de consentimento e de verificação prévia antes de o candidato começar. Os sinais de integridade são sinalizações para uma pessoa rever em contexto, nunca fundamento para rejeição automática — uma saída de ecrã inteiro pode ser uma notificação, não uma fraude. A proporcionalidade evita que bons candidatos desistam perante uma rede de vigilância.

Step 8: Reveja o código com a grelha, com a IA como apoio

Os avaliadores revêem cada submissão segundo a grelha partilhada, clicando no cartão de nível que corresponde ao código em cada critério — correção, legibilidade, abordagem. Colocar dois revisores nos casos limítrofes ou de risco elevado mantém a norma honesta e, como toda a gente pontua segundo o mesmo instantâneo congelado da grelha, as discordâncias surgem como lacunas concretas num critério, e não como diferenças vagas de intuição.

A IA pode esboçar um resumo da submissão e sugerir pontuações ao nível do critério — uma primeira passagem genuinamente útil sobre código, com o modelo e a versão registados para memória futura. Mas é um engenheiro identificado pelo nome que confirma ou substitui todas as pontuações. Aqui a IA é apoio à decisão, nunca quem decide: o juízo responsável sobre o código de um candidato é sempre humano.

Pro tips

  • Roube a tarefa do seu próprio backlog — um erro real do último trimestre vale mais do que qualquer exercício inventado.
  • O código inicial torna as submissões comparáveis; os editores em branco tornam-nas um caos.
  • Indique no enunciado exatamente o que a grelha recompensa e os candidatos mostrar-lhe-ão o seu melhor.
  • Dois avaliadores nos casos renhidos custam minutos e evitam contratações erradas.
  • Retire uma tarefa depois de ela correr durante alguns ciclos; a pasta torna a rotação barata.

Perguntas frequentes

Porque não usar simplesmente puzzles de algoritmos?
Os puzzles medem a prática de puzzles. A maioria das funções precisa de alguém que consiga ler código existente, fazer uma alteração sólida e mantê-la sustentável — e uma pequena tarefa realista observa exatamente isso. Guarde a profundidade algorítmica para funções em que ela seja mesmo o trabalho.
E se um candidato usar IA para escrever a sua solução?
Desenhe o teste a contar com isso, em vez de fingir que não existe. Mantenha a tarefa suficientemente específica para que o discernimento transpareça, mantenha os controlos proporcionais ao risco e reveja as sinalizações como pessoa — em contexto, nunca como rejeição automática. Para funções séniores, uma conversa curta de seguimento sobre as suas escolhas verifica rapidamente a compreensão.
A SkillCort corrige o código automaticamente?
A avaliação assenta em grelhas e pertence a pessoas. A IA pode esboçar resumos e sugerir pontuações ao nível do critério, com o modelo e a versão registados, mas é um avaliador identificado pelo nome que confirma ou substitui cada uma. A consistência vem do instantâneo congelado da grelha, não de retirar as pessoas.
Quanto deve durar um teste de programação?
Cerca de 45–60 minutos no total: um aquecimento curto de juízo mais uma tarefa de 30–45 minutos. As tarefas para fazer em casa mais longas filtram por noites livres em vez de capacidade e prejudicam de forma mensurável a conclusão — se precisar de mais profundidade, realize uma segunda fase, mais curta, para os finalistas.

For hiring teams

Veja um teste de programação construído a partir do seu backlog

Marque uma demonstração de 30 minutos e traga um erro ou funcionalidade reais — transformamo-los numa tarefa de programação pontuada e sustentada por uma grelha enquanto assiste.

Como Criar um Teste de Programação | SkillCort