Mentorizar desarrolladores Go en todos los niveles de experiencia
Enseñar concurrencia, errores y pruebas de manera efectiva.
Busca en todas las páginas de la documentación
Enseñar concurrencia, errores y pruebas de manera efectiva.
La mentoría en equipos Go es cómo los modismos sobreviven a cualquier contratación senior individual.
Los planes estructurados superan los consejos ad hoc: los juniors necesitan bases seguras, los mid-levels necesitan fluidez en concurrencia, los seniors necesitan propiedad del diseño y los candidatos a staff necesitan apalancamiento de enseñanza multi-equipo.
Una mentoría eficaz adapta los ejercicios a las expectativas de nivel.
Los juniors practican gofmt, pruebas de tabla y devoluciones explícitas de errores.
Los ingenieros de nivel medio trabajan en pares en context, canales y límites de interfaz.
Los seniors co-gestionan revisiones de diseño y borradores de ADR.
Los ingenieros en la vía de staff demuestran patrones entre paquetes a través de PRs de referencia y calibración de revisiones.
Cada nivel se beneficia de artefactos — PRs fusionados, archivos de prueba, notas de documentación — no de promesas verbales de mejora.
Tarjeta de receta de referencia rápida — lista para copiar y pegar.
## Plan de mentoría - <nombre> - <nivel>
Objetivo trimestral:
Semana 1-4: <habilidad> -> PR de artefacto
Semana 5-8: <habilidad> -> PR de artefacto
Temas de revisión a observar: errores, concurrencia, exportaciones de API
Rotación de compañeros: <ingeniero> para la semana 6Cuándo usar esto:
El mentor guía a un ingeniero de nivel medio a través de la concurrencia en un consumidor de cola 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")
}
}// El mentor pide al autor que añada -race en el comentario del trabajo de CI en el PR
// go test -race ./internal/worker/...Lo que esto demuestra:
context es verificable en pruebas unitarias.| Nivel | Énfasis | Artefacto de ejemplo |
|---|---|---|
| Junior | Herramientas, pruebas de tabla, devoluciones de errores | PR de documentación + prueba primero |
| Mid | context, interfaces en el consumidor, -race | PR de trabajador o manejador |
| Senior | Aporte de diseño, borrador de ADR, enseñanza de revisiones | Comentarios RFC + ADR |
| Vía de staff | Biblioteca entre equipos, calibración de revisiones | PR de middleware compartido |
// Laboratorio de errores: el aprendiz refactoriza a %w y añade pruebas de 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 su base de código.errgroup antes de la orquestación de canales en bruto para la mayoría del código de servicio.go test -race en los paquetes tocados; explicar una carrera pasada encontrada en producción si está disponible.net/http, context y testing antes de las excepciones de chi/gin.| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| Programación en grupo (Mob programming) | Cambio complejo de concurrencia | El aprendiz necesita practicar la propiedad individual |
| Taller externo | Refrescamiento de Effective Go para todo el equipo | Brecha individual en su base de código |
| Ruta de lectura auto-gestionada | El contratado se autogestiona | La concurrencia/errores necesitan retroalimentación en vivo |
| Presupuesto de formación formal | La empresa ofrece cursos de Go | Sin aplicación posterior de PR |
Aproximadamente 2-4 horas por semana entre planes y emparejamientos; escalar la propiedad de las características en consecuencia.
Vincular la colaboración a plazos concretos de PR y evidencia de nivel; escalar al gerente si la evitación persiste.
Centrarse en el contexto de la organización: ADRs, restricciones de despliegue, patrones de guardia — aprender de sus modismos mientras se proporciona conocimiento del sistema.
A veces para enseñar, pero rotar los aprobadores para que la barra de revisión refleje las normas del equipo, no una sola voz.
Reducir el alcance a un ejercicio del tamaño de una biblioteca, requerir que pase las pruebas de -race y un segundo revisor en los próximos tres PRs concurrentes.
No. Las 1:1 del gerente cubren la carrera y la retroalimentación; las sesiones de mentoría son técnicas con agendas y artefactos.
Nota trimestral: enlaces a PRs, habilidades demostradas, lagunas para el próximo trimestre — alimenta los paquetes de promoción.
Sí, en documentación, pruebas y herramientas que han dominado — fortalece la habilidad de enseñanza sin gestionar la revisión de concurrencia.
Effective Go y su índice interno de ADR superan a los blogs aleatorios; asignar bloques de lectura con PRs de ejercicios.
Comentarios de revisión asíncronos más resúmenes de emparejamiento grabados; mantener la hora en vivo superpuesta para temas complejos.
Cuando los artefactos acordados no cumplen los plazos repetidamente después de ajustar el alcance — involucrar al gerente con evidencia.
Modelar RFCs entre equipos, calibrar el tono de revisión y co-facilitar sesiones de desacuerdo.
Versiones de Stack: Esta página fue escrita para Go 1.26.x (GC predeterminado Green Tea, go fix modernizers - verificar parche en la compilación), chi (última versión - verificar en la compilación), gin (última versión - verificar en la compilación), echo (última versión - verificar en la compilación), google.golang.org/grpc (última versión - verificar en la compilación), sigs.k8s.io/controller-runtime (última versión - verificar en la compilación), kubebuilder (última versión - verificar en la compilación), tinygo (última versión - verificar objetivos de placa en la compilación), wazero (última versión - verificar en la compilación) y golangci-lint (última versión - verificar conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 16 jul 2026