como entender ticket como dev junior sem sair codando errado
O primeiro ticket real como dev junior parece simples até você abrir e perceber que ele tem três linhas, um print antigo, um título vago e um comentário de alguém dizendo “só ajustar a regra”.
Você quer mostrar velocidade. Quer provar que merece a vaga. Quer pegar a tarefa, codar logo e abrir PR antes que alguém pense que você está perdido.
Respira.
Ticket não é sempre especificação. Muitas vezes ele é só um lembrete público de uma conversa que aconteceu antes de você chegar. Pode faltar regra de negócio, critério de aceite, prioridade, contexto histórico, ambiente, dado de teste, risco e definição do que fica fora. Se você sai codando nesse escuro, o problema não é esforço. É direção.
Dev junior confiável não é quem entende tudo de primeira. É quem transforma tarefa nebulosa em recorte claro antes de mexer no código.
Este guia é para ler ticket, issue, card de Jira, Linear, Trello, GitHub ou qualquer demanda interna sem virar pessoa que pergunta “o que é para fazer?” a cada cinco minutos e sem abrir PR gigante fora de escopo.
Se você ainda está aterrissando no time, comece pelo roteiro de primeira semana como dev junior e pelo plano de primeiros 30 dias como dev junior. Quando o ticket virar código, use o guia de primeiro pull request como dev junior para abrir uma mudança pequena e revisável.
primeiro, separe título de problema
Título de ticket costuma ser atalho, não diagnóstico.
Exemplos:
Corrigir erro no cadastro
Ajustar validação de telefone
Melhorar tela de pagamento
Botão não funciona
Esses títulos dizem onde olhar, mas não dizem o problema real. Antes de abrir editor, escreva com suas palavras:
Minha leitura:
- usuário tenta cadastrar telefone sem DDD.
- sistema aceita o valor e depois falha na integração.
- esperado: bloquear no formulário com mensagem clara.
Se você não consegue escrever esse resumo, ainda não entendeu a tarefa. Isso não é vergonha. É sinal para buscar contexto.
Pergunta boa:
Minha leitura é que o problema é aceitar telefone sem DDD no cadastro, antes de enviar para a API externa. É isso mesmo ou o erro está em outro ponto do fluxo?
Pergunta ruim:
Não entendi o ticket. O que é para fazer?
A primeira mostra tentativa. A segunda transfere todo o trabalho mental para outra pessoa.
encontre o comportamento atual antes do comportamento desejado
Antes de perguntar como deve ficar, descubra como está hoje.
Rode o fluxo, leia a tela, procure teste existente, veja log, abra o ticket relacionado, confira comentário antigo. O objetivo não é resolver sozinho. É chegar na conversa com evidência.
Use este bloco:
Comportamento atual:
- ao cadastrar telefone 11999999999, salva normal
- ao cadastrar 999999999, também salva
- depois a integração retorna erro TELEFONE_INVALIDO
Onde vi:
- tela /cadastro
- log da API local
- teste UserSignup.test ainda não cobre sem DDD
Isso muda o nível da discussão. Em vez de “acho que está errado”, você mostra o que viu.
Se você não consegue reproduzir, diga isso com contexto:
Tentei reproduzir no local e em staging com os dados do ticket, mas nos dois casos o cadastro passa. Existe algum usuário ou flag específica para ver o erro?
Não invente certeza para parecer senior. Senior bom também diz “não reproduzi ainda”.
procure critério de aceite
Critério de aceite é a diferença entre “mexi no código” e “resolvi a tarefa”.
Nem todo ticket vem com uma lista bonita. Quando não vem, você pode propor:
Critério de aceite proposto:
- telefone sem DDD mostra mensagem antes de enviar formulário
- telefone com DDD continua cadastrando normalmente
- erro da API externa não aparece mais nesse caso comum
- teste cobre telefone sem DDD
Esse bloco é poderoso porque transforma ambiguidade em contrato pequeno.
Se o time responder “sim”, você tem escopo. Se responder “faltou o caso internacional”, você descobriu antes de abrir PR. Se responder “na verdade isso deve ficar no backend”, você evitou trabalho errado.
Pergunta útil:
Para este ticket, o aceite é bloquear telefone sem DDD no formulário e adicionar teste desse caso? Telefone internacional fica fora por enquanto?
Perceba o detalhe: a pergunta também define o que fica fora. Junior que só pergunta o que entra acaba abraçando o mundo.
identifique risco antes de mexer
Nem toda tarefa pequena é segura. Um texto de botão pode ser simples. Uma validação de pagamento pode afetar receita. Um ajuste em permissão pode abrir dado sensível. Um campo opcional pode quebrar integração antiga.
Antes de codar, marque o risco:
Risco baixo:
- texto, layout pequeno, README, teste, mensagem de erro
Risco médio:
- validação, regra de negócio simples, filtro de listagem, fluxo usado todo dia
Risco alto:
- pagamento, permissão, dado pessoal, migração, produção, segurança, rollback difícil
Se parecer alto, não tente provar autonomia em silêncio.
Mensagem madura:
Esse ticket parece pequeno, mas encosta em permissão de usuário. Antes de implementar, queria validar o caminho e o teste esperado para não abrir brecha.
Isso não diminui você. Aumenta confiança.
O guia de primeiro bug em produção como dev junior fala do depois que algo quebra. Aqui a ideia é reconhecer risco antes.
leia comentários antigos sem virar arqueólogo
Ticket com histórico longo pode assustar. Tem comentário de produto, QA, suporte, cliente, gestor e duas pessoas que nem estão mais na empresa.
Não tente decorar tudo. Procure quatro coisas:
- quem reportou;
- qual usuário ou fluxo foi afetado;
- qual decisão já foi tomada;
- o que ainda está pendente.
Modelo de resumo:
Resumo do histórico:
- suporte reportou erro em cliente do plano Pro.
- produto decidiu manter campo obrigatório.
- backend já retorna código TELEFONE_INVALIDO.
- falta frontend mostrar mensagem específica.
Se existir contradição, não escolha no chute:
Vi dois caminhos no histórico: comentário de produto fala em bloquear no frontend, mas comentário técnico menciona backend. Qual decisão vale para este ticket?
Contradição antiga é comum. O erro é fingir que não viu.
transforme tarefa grande em primeira fatia
Ticket grande demais para junior normalmente mistura investigação, implementação, teste e talvez decisão de produto.
Exemplo ruim para pegar inteiro:
Melhorar fluxo de onboarding de empresas
Isso pode significar formulário, email, pagamento, permissão, painel, métrica e conteúdo.
Fatia melhor:
Primeira fatia:
- mapear etapas atuais do onboarding
- identificar onde usuário abandona
- propor 1 ajuste pequeno antes de codar
Ou:
Primeira fatia:
- corrigir mensagem da etapa 2
- manter campos e regras atuais
- adicionar teste do caso sem CNPJ
Pergunta boa:
Posso começar com a mensagem da etapa 2 e deixar mudanças de fluxo para outro ticket? Assim eu passo pelo PR com menor risco.
Isso conversa direto com pareamento para dev junior: se a fatia ainda estiver nebulosa, peça 20 minutos para validar caminho, não uma aula sobre o sistema inteiro.
confirme dependências e bloqueios
Ticket parado nem sempre está parado por você. Pode faltar acesso, dado, design, decisão, ambiente, permissão, API, seed local ou resposta de outra equipe.
Antes de dizer “estou fazendo”, confira:
- tenho acesso ao repositório certo?
- consigo rodar o fluxo local ou em staging?
- existe dado de teste?
- preciso de layout, texto ou regra de produto?
- alguém já está mexendo no mesmo arquivo?
- existe prazo ou prioridade real?
Update bom:
Peguei o ticket ABC-123.
Já consegui:
- reproduzir o erro localmente
- encontrar o componente do formulário
Bloqueio:
- preciso de usuário de staging com plano Pro para validar o segundo cenário
Enquanto espero:
- vou adicionar teste unitário do mapper de erro
Esse update mostra progresso e bloqueio ao mesmo tempo. Você não some esperando acesso.
escreva uma leitura final antes de codar
Antes do primeiro commit, mande ou registre uma leitura curta. Não precisa pedir permissão para cada linha. Precisa alinhar o que você entendeu.
Modelo:
Vou seguir este recorte:
- problema: telefone sem DDD passa no formulário e quebra depois
- mudança: validar DDD antes do submit e mostrar mensagem específica
- fora do escopo: telefone internacional e mudança na API
- teste: caso sem DDD + caso válido existente continua passando
- risco: baixo/médio porque mexe só no formulário de cadastro
Se ninguém apontar outro caminho, vou implementar assim.
Esse tipo de mensagem evita dois problemas: você pedir confirmação para tudo e você codar no escuro. Ela dá chance de alguém corrigir a rota cedo.
Em times mais rápidos, você pode colocar isso no comentário do ticket em vez de mandar no chat. O formato importa menos que o alinhamento.
quando parar e perguntar
Não use “vou tentar mais um pouco” como desculpa para perder o dia.
Pare e pergunte quando:
- você não consegue reproduzir depois de tentar com contexto;
- o ticket contradiz o comportamento do sistema;
- a mudança cresce para arquivos que não estavam no plano;
- você encontrou risco de permissão, dado, pagamento ou produção;
- falta critério de aceite;
- duas opções parecem possíveis e uma pode gerar retrabalho grande.
Pergunta boa tem quatro partes:
Contexto: estou no ticket ABC-123, validação de telefone.
Tentei: reproduzir local, ler teste X, procurar mapper de erro.
Hipótese: a regra deve ficar no frontend porque backend já retorna código estável.
Pergunta: faz sentido seguir por esse caminho ou o time prefere bloquear no backend?
Essa estrutura também serve para pedir ajuda no canal, no pareamento ou na 1:1.
checklist antes de abrir o editor
Use este checklist quando o ticket parecer simples demais ou confuso demais:
- escrevi o problema com minhas palavras;
- reproduzi ou expliquei por que ainda não reproduzi;
- entendi comportamento atual e esperado;
- propus critério de aceite;
- marquei o que fica fora do escopo;
- identifiquei risco baixo, médio ou alto;
- confirmei acessos, dados e ambiente;
- sei qual teste ou validação vou fazer;
- sei quando parar e perguntar;
- consigo explicar a mudança em uma frase.
Se você marcou quase tudo, pode codar com muito mais calma.
a régua certa para entender ticket
Entender ticket como dev junior não é ter visão completa do produto. É diminuir incerteza suficiente para fazer a menor mudança correta.
Você não precisa parecer a pessoa que sabe tudo. Precisa parecer a pessoa que não transforma dúvida em caos: lê, reproduz, resume, pergunta com contexto, confirma aceite, limita escopo, testa e comunica bloqueio cedo.
Esse comportamento é mais raro do que parece. Muito retrabalho em time de tecnologia nasce antes do código, quando alguém interpreta uma tarefa de qualquer jeito e só descobre no review que resolveu o problema errado.
Se você aprende a alinhar ticket antes de codar, seu primeiro PR fica menor, seu review fica mais leve e seu time passa a confiar em você mais rápido.
No começo da carreira, isso vale ouro: não porque você entrega como pleno, mas porque você reduz risco como profissional.