Liderazgo Técnico 🔴
El rol del Tech Lead / Senior Developer
En entrevistas Senior, además de preguntas técnicas, evaluarán tu capacidad para:
- Tomar decisiones técnicas y defenderlas con argumentos
- Mentorear a developers junior/semi-senior
- Comunicar soluciones técnicas a stakeholders no técnicos
- Manejar deuda técnica estratégicamente
- Balancear velocidad vs calidad
Code Review — Buenas prácticas
Qué revisar
✅ Revisar:
- Correctitud: ¿hace lo que dice que hace?
- Seguridad: ¿hay vulnerabilidades?
- Performance: ¿hay cuellos de botella obvios?
- Mantenibilidad: ¿se puede entender en 6 meses?
- Tests: ¿cubren los casos importantes?
- Nombrado: ¿variables y métodos tienen nombres claros?
❌ No obsesionarse con:
- Estilo de código (para eso están los linters)
- Preferencias personales sin justificación
- Reescribir todo porque "yo lo haría diferente"
Cómo dar feedback constructivo
❌ Mal: "Este código es una porquería"
❌ Mal: "¿Por qué harías esto?"
❌ Mal: "Nunca hagas X"
✅ Bien: "Creo que aquí podría haber un bug si [caso]. ¿Consideraste X?"
✅ Bien: "Nit: podría renombrarse a X para ser más descriptivo (opcional)"
✅ Bien: "Sugiero considerar Y porque [razón técnica]. ¿Qué opinas?"
✅ Bien: "¡Gran idea! Pequeña sugerencia: ..."
Manejo de Deuda Técnica
Cuadrante de deuda técnica:
DELIBERADA ACCIDENTAL
┌──────────────┬──────────────────┐
PRUDENTE │ "Sabemos que │ "Ahora entendemos│
│ esto no es │ que debíamos │
│ correcto, │ haberlo hecho │
│ pero lo │ de otra manera" │
│ haremos así │ │
│ por el │ │
│ deadline" │ │
├──────────────┼──────────────────┤
IMPRUDENTE │ "No hay │ "¿Qué es │
│ tiempo para │ diseño?" │
│ el diseño" │ │
└──────────────┴──────────────────┘
Estrategia para manejarla
// 1. Identificar y documentar (no ignorar)
// TODO(tech-debt): Este servicio necesita refactoring cuando tengamos más tests
// Issue #234: Migrar de sync a async
// 2. Priorizar por impacto
// Alta: deuda en código de alta frecuencia, código difícil de cambiar
// Baja: deuda en código legacy que casi nadie toca
// 3. La regla del Boy Scout: "Dejar el código mejor de como lo encontraste"
// No tienes que refactorizar todo, pero mejora algo cada vez que tocas el código
// 4. Negociar con el negocio
// "Si pagamos esta deuda técnica ahora (2 sprints), la próxima feature
// tardará 3 semanas en vez de 3 meses"
Estimación de tareas
Técnicas comunes:
1. STORY POINTS (Fibonacci: 1, 2, 3, 5, 8, 13, 21)
- Mide complejidad relativa, no tiempo
- Calibrar en base a una "tarea de referencia"
- Velocidad del equipo se estabiliza con el tiempo
2. T-SHIRT SIZING (XS, S, M, L, XL)
- Más rápido, menos preciso
- Útil para planning de alto nivel
3. THREE-POINT ESTIMATION
- Optimista + Pesimista + Más probable
- E = (O + 4M + P) / 6
Tips:
- Incluir: desarrollo + tests + code review + deploy + buffer
- Si supera M/L, partir en subtareas
- "No sé" es una respuesta válida, seguida de "necesito investigar X horas"
Architectural Decision Records (ADR)
Documentar decisiones técnicas importantes y su contexto.
# ADR 001: Usar PostgreSQL en vez de SQL Server
## Fecha: 2024-01-15
## Estado: Aceptado
## Contexto
Necesitamos una base de datos relacional para el nuevo proyecto.
El equipo tiene experiencia en SQL Server pero el cliente tiene
restricciones de presupuesto en licencias.
## Decisión
Usar PostgreSQL 16 con EF Core.
## Consecuencias
✅ Costo: open source, sin licencias
✅ Funcionalidades: JSON nativo, full-text search, extensiones
✅ Portabilidad: puede correr en cualquier cloud o on-premise
❌ Curva de aprendizaje: algunos dev solo conocen SQL Server
❌ Diferencias de sintaxis: algunas queries necesitan ajuste
## Alternativas consideradas
- SQL Server: descartado por costo de licencias
- MySQL: descartado por menos funcionalidades avanzadas
- MongoDB: descartado porque los datos son relacionales
Preguntas conductuales (STAR method)
En entrevistas Senior, esperan preguntas conductuales. Responder con STAR:
- Situation: contexto
- Task: cuál era tu responsabilidad
- Action: qué hiciste específicamente
- Result: cuál fue el resultado (con métricas si es posible)
Preguntas frecuentes y cómo prepararlas
"Cuéntame de un sistema que diseñaste y qué cambiarías hoy"
Prepara 1-2 sistemas que hayas diseñado. Menciona las decisiones técnicas, trade-offs, y qué aprendiste. Mostrar humildad técnica ("hoy lo haría diferente porque...") es positivo.
"¿Cómo manejas un desacuerdo técnico con un colega?"
Proceso: escuchar su perspectiva, presentar datos/argumentos, buscar consenso. Si no hay consenso, escalar al tech lead o hacer un spike para validar ambas opciones.
"¿Cómo priorizas cuando todo parece urgente?"
Impacto × Urgencia ÷ Esfuerzo. Comunicar claramente con stakeholders. Decir "no" con contexto técnico cuando es necesario.
"¿Cómo mentorearías a un developer Junior?"
Code reviews constructivos, pair programming, explicar el "por qué" no solo el "qué", dar tareas con ownership progresivo, celebrar sus éxitos.
Preguntas frecuentes de entrevista 🎯
1. ¿Cómo decides entre construir una solución custom vs usar una librería/servicio externo?
Evalúo: ¿cuánto tiempo requiere implementar vs integrar? ¿La librería está activamente mantenida? ¿Es un core business concern (sería una ventaja competitiva construirlo)? ¿Cuál es la complejidad de migración futura? Regla general: no reinventar la rueda para commodities (auth, email, storage). Sí construir lo que es diferenciador del negocio.
2. ¿Cómo comunicarías una decisión técnica compleja a un stakeholder no técnico?
Con analogías del mundo real, focalizando en el impacto de negocio (tiempo, dinero, riesgo), evitando jerga técnica, presentando opciones con trade-offs claros. Ejemplo: "Migrar la base de datos es como remodelar los cimientos de un edificio: requiere 2 semanas de trabajo, pero sin hacerlo el edificio no puede crecer más allá de 3 pisos."
3. ¿Cuánto código es "suficiente" testear?
El 100% de cobertura no significa 0 bugs. Priorizar: lógica de negocio crítica, edge cases conocidos, regresiones de bugs previos. No testear: código trivial (getters/setters), código generado. El objetivo es confianza para hacer cambios, no un número.
Onboarding Técnico — Primeros 90 días
Como Tech Lead, eres responsable de que los nuevos integrantes sean productivos rápido y se integren bien.
Semana 1: Orientación
□ Setup del entorno de desarrollo (documentado, idealmente automatizado)
□ Primera PR pequeña el día 2-3 (aunque sea de docs o un bug trivial)
□ Explicar el "por qué" de las decisiones de arquitectura, no solo el "qué"
□ Presentar a las personas clave del equipo y sus áreas
Mes 1: Exploración
□ Pair programming en al menos 2 features
□ Que el nuevo revise PRs de otros (aprende leyendo código real)
□ Primera 1:1 formal para detectar bloqueos o dudas
□ Asignar un "buddy" del equipo (no el Tech Lead)
Mes 2-3: Contribución creciente
□ Features completas con autonomía, Tech Lead disponible para preguntas
□ Que el nuevo presente algo técnico al equipo (fuerza a aprender)
□ Evaluación informal: ¿en qué está atascado? ¿qué le resulta confuso?
1:1s Efectivos con Desarrolladores
Las 1:1s no son status updates (eso es para los stand-ups). Son para la persona.
Lo que NO es una 1:1:
❌ "¿Cómo va el ticket JIRA-123?"
❌ Un monólogo del Tech Lead
❌ Solo cuando hay un problema
Lo que SÍ es una 1:1:
✅ "¿Qué te está bloqueando? ¿Qué te está frustrando?"
✅ "¿En qué área quieres crecer en los próximos 6 meses?"
✅ "¿Hay algo en el equipo que podría mejorar?"
✅ Feedback bidireccional (también pide feedback sobre ti)
Preguntas poderosas para 1:1s
Sobre el trabajo actual:
- "¿Cuál fue el momento más frustrante de la última semana?"
- "¿Hay algo en lo que necesitas más contexto o apoyo?"
Sobre el crecimiento:
- "¿Qué tipo de tarea te gustaría tener más en los próximos meses?"
- "¿Hay alguna tecnología o área que quieras explorar?"
Sobre el equipo:
- "¿Hay algo en la forma en que trabajamos que mejorarías?"
- "¿Sientes que tus contribuciones son reconocidas?"
Roadmap Técnico — Cómo construirlo
Un roadmap técnico comunica hacia dónde va la arquitectura y por qué.
Estructura de un roadmap técnico:
NOW (0-3 meses)
├── Migrar autenticación a OAuth 2.0 + PKCE
│ Por qué: vulnerabilidad en el flujo actual (issue SEC-045)
│ Por quién: Equipo Backend
│ Métrica de éxito: 0 endpoints con auth por cookie de sesión
│
└── Instrumentar OpenTelemetry en todos los servicios
Por qué: sin trazabilidad distribuida, cada outage tarda 4h en diagnosticar
Por quién: Plataforma
Métrica: p99 de tiempo de diagnóstico < 30 min
NEXT (3-6 meses)
├── Extraer servicio de Notificaciones del monolito (Strangler Fig)
└── Migrar tests de integración a TestContainers
LATER (6-12 meses)
├── Evaluar migración a .NET 9 (cuando salga LTS)
└── Implementar feature flags para deploys sin riesgo
Cómo presentarlo a stakeholders no técnicos:
❌ "Vamos a implementar OpenTelemetry con Jaeger para distributed tracing"
✅ "Actualmente cuando el sistema falla, tardamos un promedio de 4 horas en
encontrar la causa. Con esta inversión de 3 semanas, bajaremos eso a
menos de 30 minutos, reduciendo el impacto en usuarios."
Manejo de Conflictos Técnicos en el Equipo
Dos desarrolladores tienen opiniones técnicas opuestas. ¿Cómo lo manejas?
Proceso recomendado:
1. ESCUCHAR AMBAS POSICIONES
Cada posición probablemente tiene mérito.
"Cuéntame más sobre por qué propones X..."
2. EXTERNALIZAR EL DEBATE
Escribir ambas opciones con pros/cons en un doc compartido.
Esto despersonaliza el conflicto — ya no es A vs B, sino Opción 1 vs Opción 2.
3. APLICAR CRITERIOS OBJETIVOS
- ¿Cuál opción es más fácil de revertir si nos equivocamos?
- ¿Cuál opción está mejor probada en nuestro tipo de sistema?
- ¿Cuál opción el equipo puede mantener en 2 años?
4. SPIKE SI HAY INCERTIDUMBRE TÉCNICA
Timeboxed (1-2 días): cada posición prueba su solución.
Los datos hablan más que las opiniones.
5. DECIDIR Y DOCUMENTAR
Usar un ADR para registrar la decisión y el contexto.
Una vez decidido, todos ejecutan en la misma dirección.
Métricas de Salud del Equipo y Código
Un Tech Lead no solo mira el código — mira las señales del sistema más amplio.
Métricas de código (DORA):
Deployment Frequency → ¿Cada cuánto desplegamos?
Lead Time for Changes → ¿Cuánto desde commit hasta producción?
Change Failure Rate → ¿Qué % de deploys requiere rollback?
Time to Restore → ¿Cuánto tardamos en recuperarnos de un incidente?
Señales de deuda técnica acumulándose:
⚠️ Las estimaciones son cada vez más imprecisas
⚠️ Los bugs regresionan (arreglamos algo y rompe otra cosa)
⚠️ Las onboardings son lentas (nadie entiende bien el sistema)
⚠️ Miedo a tocar ciertos módulos ("ese código no lo toca nadie")
Señales de problemas en el equipo:
⚠️ PRs que tardan días en ser revisadas
⚠️ Desarrolladores que rara vez piden ayuda
⚠️ Silencio en las retrospectivas
⚠️ Estimaciones siempre conservadoras o siempre optimistas
Preguntas adicionales de entrevista 🎯
4. ¿Cómo construirías un roadmap técnico alineado con el negocio?
Primero entiendo las prioridades del negocio para los próximos 6-12 meses. Luego mapeo qué limitaciones técnicas actuales bloquean o ralentizan esas prioridades. El roadmap técnico resulta de conectar esas dos perspectivas — no es una lista de deseos tecnológicos, sino inversiones técnicas con ROI de negocio claro. Cada ítem del roadmap debe responder: "¿Qué problema de negocio resuelve esto?"
5. ¿Cómo manejarías a un desarrollador que consistentemente entrega tarde?
Primero en una 1:1 privada, sin asumir intención maliciosa. Podría ser falta de claridad en los requerimientos, bloqueos técnicos que no escaló, o problemas personales. Identifico la causa raíz antes de actuar. Si es capacidad técnica, pair programming y mentoring. Si es comunicación, trabajamos en dividir tareas más pequeñas y pedir ayuda antes. Si persiste después de apoyo y claridad de expectativas, escalo a management.
6. ¿Cuál es la diferencia entre un Tech Lead y un Engineering Manager?
El Tech Lead es principalmente técnico: diseña arquitecturas, hace code reviews, establece estándares de ingeniería, es el referente técnico del equipo. El Engineering Manager es principalmente de personas y procesos: gestiona carreras, contrata, maneja conflictos interpersonales, planifica capacidad. Muchas empresas tienen ambos roles; en equipos pequeños una persona puede cubrir ambos, pero hay que ser consciente de cuándo priorizas cada hat.