Desafio prático para contratar dev Magento: o que ele precisa medir

A entrevista técnica com grade de respostas mostra se a pessoa entende as decisões da plataforma. O teste mostra se ela transforma isso em código que compila, passa no deploy e pode ser mantido por outra pessoa. Uso os dois, nessa ordem, e só aplico o teste nos finalistas.

Para ser justo e comparável, o desafio precisa ser parecido com o trabalho real, fechado (o enunciado diz o que conta ponto), corrigível por critério objetivo e separado da loja: nada de produção, banco real ou tarefa que você pretende usar.

O enunciado: módulo Vendor_PrazoExtra

Pode enviar como está, ajustando os prazos se quiser:

Desafio: módulo Vendor_PrazoExtra para Magento Open Source 2.4.9

A loja quer mostrar na página de produto o prazo de envio em dias úteis: um prazo de manuseio configurado por website somado a um prazo extra informado em cada produto.

  1. Crie o módulo Vendor_PrazoExtra, instalável em app/code.
  2. Em Stores > Configuration, o campo “Dias de manuseio”, editável no escopo padrão e por website, protegido por recurso de ACL próprio.
  3. Atributo de produto prazo_extra (inteiro, opcional), criado por data patch.
  4. Na página de produto, a frase “Envio em N dias úteis”, com N igual ao manuseio do website mais o prazo extra do produto. Sem prazo extra, vale só o manuseio.
  5. Na API REST, GET /V1/products/:sku devolve o valor calculado no extension attribute prazo_envio_dias.
  6. Pelo menos um teste unitário da regra de cálculo.
  7. README com instalação, decisões e o que ficou de fora.

Tempo: até 4 horas de trabalho, entregues em até 5 dias corridos, num repositório git privado. Pode deixar partes de fora se o README explicar: uma parte bem feita vale mais que tudo pela metade. Pode usar ferramenta de IA, dizendo no README onde usou.

Cada peça mede uma coisa. O campo por website mostra se a pessoa lê a configuração no escopo certo. O data patch mostra se ela muda o banco de um jeito que sobrevive ao deploy. A frase na página testa template com escape. A API testa extension attribute, que a documentação da Adobe manda preencher com plugin after nos métodos save, get e getList do repositório de produtos. O teste unitário mostra se a regra ficou numa classe própria ou espalhada pelo template.

Para conferir se o enunciado fecha, escrevi a parte de back-end (classe de cálculo, data patch, plugin e teste) sobre o código de uma loja 2.4.8-p4: o teste unitário passou no PHPUnit do projeto e o phpcs com o padrão Magento2 não apontou nenhum ERROR. O tempo total não medi em cronômetro; as 4 horas são estimativa minha, e por isso o enunciado permite deixar partes de fora.

Critérios de correção de teste Magento: o gabarito de 100 pontos

CritérioPontosComo conferir
Estrutura: registration.php, module.xml e composer.json coerentes15setup:upgrade e setup:di:compile terminam sem erro
Injeção de dependência: tudo pelo construtor, sem ObjectManager e sem lógica no construtor15Busca por ObjectManager; diretriz técnica 2.3 da Adobe
Escopo: campo com showInWebsite e leitura no escopo de website15Valor diferente em dois websites muda só a página do website certo
Data patch: classe que implementa DataPatchInterface, sem SQL solto15Atributo criado no setup:upgrade e patch registrado na tabela patch_list
Template: saída passando por $escaper10phpcs com o padrão Magento2 sem ERROR (na versão 41 do padrão, saída sem escape já é ERROR)
API: extension_attributes.xml e plugin after em get e getList10Chamada REST devolve prazo_envio_dias em extension_attributes
Teste unitário: roda, cobre produto com e sem prazo extra, sem ObjectManager10PHPUnit verde; diretriz 11.2.2 da Adobe proíbe ObjectManager em teste unitário
README e commits: instalação, decisões, limites, commits pequenos10Leitura

A minha nota de corte é 70, com duas condições eliminatórias: compilação sem erro e nenhum problema de segurança, como saída sem escape. Para ler o código com mais profundidade, use o checklist de code review de módulo Magento; aqui o foco é comparar candidatos com a mesma régua.

O que não pedir num teste técnico e como aplicar sem dar acesso à loja

  • Tarefa que vai para produção. Se o resultado entra na sua loja, é trabalho e se contrata como tal.
  • Acesso à loja, ao banco ou ao servidor. Candidato ainda não tem contrato nem usuário próprio.
  • Cópia do banco da loja. Dado de cliente não sai para avaliar ninguém.
  • Algoritmo genérico sem relação com Magento: mede outra habilidade.
  • Teste de vários dias ou “um tema inteiro” sem pagamento.

Para aplicar sem acesso à loja, o candidato monta o próprio ambiente local com Magento Open Source e dados de exemplo, no Docker ou no DDEV, que tem guia de instalação para Magento 2. A instalação pelo Composer pede as chaves de acesso do repositório da Adobe, geradas na conta do próprio candidato. Você recebe só o link do repositório.

Teste técnico pago ou gratuito?

Minha regra: desafio de 4 horas é pago para quem entrega, aprovado ou não. Profissional de Magento com agenda cheia tende a recusar teste longo de graça, e você corre o risco de escolher só entre quem tem tempo sobrando.

Exemplo de conta, com números hipotéticos: três finalistas, 4 horas cada, a um valor-hora combinado de R$ 150, dão R$ 1.800. Se a correção for terceirizada, 1 hora por entrega ao mesmo valor soma R$ 450, e o processo fica em R$ 2.250. Compare com o custo de descobrir no segundo mês de contrato que o dev escolhido não sabe usar escopo de configuração. Para calibrar o valor-hora, veja o que mexe na hora de programador Magento.

Perguntas frequentes

Devo pagar pelo teste técnico de desenvolvedor Magento?

Eu pago quando o desafio passa de uma ou duas horas, e este, de cerca de 4 horas, é pago. Pagar atrai quem está ocupado com clientes, mostra que o tempo do candidato tem valor e dá base para cobrar prazo e README. Combine o valor antes de enviar o enunciado, sem depender da aprovação.

Posso usar o código do teste técnico na minha loja?

Não sem contratar e combinar por escrito. Usar o código de um teste sem acordo vira trabalho não pago. Além disso, um desafio feito para avaliação não passou por especificação, homologação nem garantia. Se gostou da solução, contrate o desenvolvimento e acerte a propriedade do código no contrato.

E se o candidato usar IA no teste técnico?

O enunciado permite, desde que ele diga onde usou. A correção continua a mesma: compilação, escopo certo, patch, escape, teste e README. Na conversa depois da entrega, peça para ele explicar duas decisões do código. Quem entregou algo que não entende aparece nessa hora.

Quem não programa consegue corrigir o teste técnico?

Consegue uma parte: conferir se o README explica instalação e decisões, se os commits contam a história do trabalho e se a API devolve o campo pedido. Compilação, escopo, patch e escape pedem alguém que programe em Magento; nesse caso, pague uma correção externa usando este gabarito.

Fontes oficiais

  1. Adding extension attributes to entity (Adobe Commerce Developer)
  2. Develop data and schema patches (Adobe Commerce Developer)
  3. Dependency injection (Adobe Commerce Developer)
  4. Technical guidelines (Adobe Commerce Developer)
  5. Cross-site scripting (XSS) (Adobe Commerce Developer)
  6. PHP unit testing (Adobe Commerce Developer)
  7. CMS Quickstarts (Magento 2) (DDEV)

Outros artigos

Ver todos os artigos

Precisa de um orçamento? Ficarei feliz em ajudar. Clique aqui