Mentoria de Desenvolvedores Go em Diferentes Níveis de Experiência
Ensinando concorrência, erros e testes de forma eficaz.
Busque em todas as páginas da documentação
Ensinando concorrência, erros e testes de forma eficaz.
A mentoria em equipes Go é como os idiomatismos sobrevivem a qualquer contratação sênior.
Planos estruturados superam conselhos ad hoc: juniores precisam de bases seguras, plenos precisam de fluência em concorrência, seniores precisam de propriedade de design e candidatos a staff precisam de alavancagem de ensino multi-equipe.
Uma mentoria eficaz combina exercícios com as expectativas de nível.
Juniores praticam gofmt, testes de tabela e retornos explícitos de erro.
Engenheiros de nível pleno trabalham em pares em context, canais e limites de interface.
Seniores co-assumem revisões de design e rascunhos de ADRs.
Engenheiros na trilha de staff demonstram padrões entre pacotes através de PRs de referência e calibração de revisões.
Todo nível se beneficia de artefatos - PRs mesclados, arquivos de teste, notas de documentação - não de promessas verbais de melhoria.
Cartão de receita de referência rápida - pronto para copiar e colar.
## Plano de mentoria - <nome> - <nível>
Objetivo trimestral:
Semana 1-4: <habilidade> -> PR de artefato
Semana 5-8: <habilidade> -> PR de artefato
Temas de revisão a observar: erros, concorrência, exportações de API
Rotação de dupla: <engenheiro> até a semana 6Quando usar isso:
O mentor guia um engenheiro de nível pleno através da concorrência em um consumidor de fila real.
func TestWorkerRespectsCancel(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
w := NewWorker(fakeSender{delay: 50 * time.Millisecond})
done := make(chan error, 1)
go func() { done <- w.Run(ctx) }()
time.Sleep(10 * time.Millisecond)
cancel()
select {
case err := <-done:
if !errors.Is(err, context.Canceled) {
t.Fatalf("got %v want cancel", err)
}
case <-time.After(time.Second):
t.Fatal("worker did not stop")
}
}// Mentor pede ao autor para adicionar -race no comentário do job de CI no PR
// go test -race ./internal/worker/...O que isso demonstra:
context é verificável em testes unitários| Nível | Ênfase | Artefato de exemplo |
|---|---|---|
| Júnior | Ferramental, testes de tabela, retornos de erro | PR de documentação + teste primeiro |
| Pleno | context, interfaces no consumidor, -race | PR de worker ou handler |
| Sênior | Entrada de design, rascunho de ADR, ensino de revisão | Comentários de RFC + ADR |
| Trilha Staff | Biblioteca entre equipes, calibração de revisão | PR de middleware compartilhado |
// Laboratório de erros: o aprendiz refatora para %w e adiciona teste errors.Is
var ErrNotFound = errors.New("not found")
func TestIsNotFound(t *testing.T) {
err := fmt.Errorf("load: %w", ErrNotFound)
if !errors.Is(err, ErrNotFound) {
t.Fatal("expected ErrNotFound in chain")
}
}io.Reader de sua base de código.errgroup antes da orquestração bruta de canais para a maioria do código de serviço.go test -race nos pacotes tocados; explique uma corrida passada encontrada em produção, se disponível.net/http, context e testing antes de exceções como chi/gin.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Programação em Mob | Mudança complexa de concorrência | O aprendiz precisa de prática de propriedade solo |
| Workshop externo | Atualização de Effective Go para toda a equipe | Lacuna individual em sua base de código |
| Caminho de leitura auto-guiado | O contratado é autodirigido | Concorrência/erros precisam de feedback ao vivo |
| Orçamento de treinamento formal | A empresa oferece cursos de Go | Nenhuma aplicação de PR de acompanhamento |
Aproximadamente 2-4 horas por semana entre planos e pareamento; reduza a propriedade de recursos de acordo.
Vincule o pareamento a prazos concretos de PR e evidências de nivelamento; escale para o gerente se a evitação persistir.
Concentre-se no contexto da organização: ADRs, restrições de implantação, padrões de plantão - aprenda com seus idiomatismos enquanto fornece conhecimento do sistema.
Às vezes, para ensinar, mas rotacione os aprovadores para que a barra de revisão reflita as normas da equipe, não uma única voz.
Reduza o escopo para um exercício do tamanho de uma biblioteca, exija que passe no -race e um segundo revisor nos próximos três PRs concorrentes.
Não. 1:1s de gerente cobrem carreira e feedback; sessões de mentoria são técnicas com agendas e artefatos.
Nota trimestral: links de PR, habilidades demonstradas, lacunas para o próximo trimestre - alimenta pacotes de promoção.
Sim, em documentação, testes e ferramentas que dominaram - fortalece a habilidade de ensino sem assumir a revisão de concorrência.
Effective Go e seu índice interno de ADR superam blogs aleatórios; atribua blocos de leitura com PRs de exercício.
Comentários de revisão assíncronos mais resumos de pareamento gravados; mantenha a hora ao vivo sobreposta para tópicos complexos.
Quando os artefatos acordados perdem prazos repetidamente após o ajuste do escopo - envolva o gerente com evidências.
Modele RFCs entre equipes, calibre o tom da revisão e co-facilite sessões de discordância.
Versões de Stack: Esta página foi escrita para Go 1.26.x (padrão GC Green Tea, go fix modernizers - verifique o patch na compilação), chi (última versão - verifique na compilação), gin (última versão - verifique na compilação), echo (última versão - verifique na compilação), google.golang.org/grpc (última versão - verifique na compilação), sigs.k8s.io/controller-runtime (última versão - verifique na compilação), kubebuilder (última versão - verifique na compilação), tinygo (última versão - verifique os alvos de placa na compilação), wazero (última versão - verifique na compilação) e golangci-lint (última versão - verifique o conjunto de linters na compilação).
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026