1. Roles y Responsabilidades
Definición clara de roles en equipos de software, responsabilidades, skills requeridos e interacciones clave.
1.1 🎭 Introducción
Qué: Definición de roles, responsabilidades y cómo interactúan en equipos de software modernos.
Por qué: Claridad en roles evita overlaps, gaps y conflictos. Equipos que escalan necesitan roles bien definidos.
Cómo: Definir responsabilidades, skills requeridos, interacciones clave y anti-patterns comunes para cada rol.
1.2 👨💻 Roles Técnicos
1.2.1 Tech Lead
Responsabilidades:
- Decisiones técnicas de alto nivel (arquitectura, stack, patterns)
- Mentoring técnico del equipo
- Code reviews críticos
- Unblocking técnico
- Balance entre deuda técnica y features
Skills requeridos:
- 🔴 Expertise técnico profundo en el stack del equipo
- 🔴 Capacidad de tomar decisiones arquitectónicas
- 🟠 Comunicación técnica efectiva
- 🟠 Mentoring y coaching
Interacciones clave:
- Con Engineering Manager: Alineación en prioridades técnicas vs negocio
- Con Product Manager: Traducir requisitos a soluciones técnicas
- Con equipo: Guiar, desbloquear, revisar código
Anti-patterns:
- ❌ Convertirse en bottleneck (revisar todo el código)
- ❌ Tomar todas las decisiones sin involucrar al equipo
- ❌ Escribir todo el código crítico personalmente
1.2.2 Engineering Manager (EM)
Responsabilidades:
- Gestión de personas (1-on-1s, performance reviews, career development)
- Hiring y onboarding
- Remover impedimentos organizacionales
- Alineación entre equipos
- Métricas de equipo (velocity, quality, happiness)
Skills requeridos:
- 🔴 People management
- 🔴 Comunicación y negociación
- 🟠 Background técnico (no necesita ser el más senior)
- 🟠 Gestión de conflictos
Interacciones clave:
- Con Tech Lead: Complementarse (EM → people, Tech Lead → tech)
- Con Product Manager: Alineación en roadmap y capacidad
- Con equipo: 1-on-1s, feedback, desarrollo de carrera
Anti-patterns:
- ❌ Micromanagement
- ❌ No delegar decisiones técnicas al Tech Lead
- ❌ Ignorar señales de burnout o conflictos
1.2.3 Software Architect
Responsabilidades:
- Diseño de arquitectura de sistemas complejos
- ADRs (Architecture Decision Records)
- Evaluación de trade-offs arquitectónicos
- Definir estándares y patterns
- Architectural reviews
Skills requeridos:
- 🔴 Conocimiento profundo de patterns arquitectónicos
- 🔴 Experiencia en sistemas distribuidos
- 🟠 Comunicación (explicar decisiones complejas)
- 🟠 Visión de negocio (arquitectura alineada a objetivos)
Interacciones clave:
- Con Tech Leads: Alineación en decisiones arquitectónicas
- Con Product: Entender requisitos no funcionales (escalabilidad, performance)
- Con equipos: Evangelizar arquitectura, revisar implementaciones
Anti-patterns:
- ❌ Ivory tower architect (diseñar sin implementar)
- ❌ Over-engineering
- ❌ No documentar decisiones (ADRs)
1.2.4 Frontend Developer
Responsabilidades:
- Implementar UI/UX
- Optimización de performance frontend
- Accesibilidad (WCAG)
- Integración con APIs
- Testing de componentes
Skills requeridos:
- 🔴 HTML, CSS, JavaScript/TypeScript
- 🔴 Framework moderno (React, Angular, Vue)
- 🟠 Design systems y component libraries
- 🟠 Performance optimization (lazy loading, code splitting)
Especialización vs Generalización:
- Especialista: Experto en un framework, performance, accesibilidad
- Generalista (Full-Stack): Puede hacer frontend + backend, menos profundidad
1.2.5 Backend Developer
Responsabilidades:
- Diseño e implementación de APIs
- Lógica de negocio
- Integración con bases de datos
- Performance y escalabilidad backend
- Testing (unit, integration)
Skills requeridos:
- 🔴 Lenguaje backend (Java, Python, Node.js, etc.)
- 🔴 Frameworks (Spring, FastAPI, Express, Django)
- 🟠 Bases de datos (SQL, NoSQL)
- 🟠 Arquitectura de microservicios
Especialización vs Generalización:
- Especialista: Experto en un stack, performance, arquitectura distribuida
- Generalista (Full-Stack): Puede hacer backend + frontend, menos profundidad
1.2.6 Full-Stack Developer
Responsabilidades:
- Implementar features end-to-end (frontend + backend)
- Integración completa (UI → API → DB)
- Versatilidad en diferentes capas
Trade-offs:
- ✅ Ventajas: Autonomía, visión completa, menos handoffs
- ❌ Desventajas: Menos profundidad en cada área, riesgo de ser "jack of all trades, master of none"
Cuándo usar:
- Equipos pequeños o startups
- Features end-to-end con poco acoplamiento
- Cuando la velocidad es más importante que la especialización
1.3 📊 Roles de Producto y Negocio
1.3.1 Product Manager (PM)
Responsabilidades:
- Visión y estrategia de producto
- Roadmap de producto
- Priorización de features (RICE, MoSCoW)
- Análisis de mercado y competencia
- Métricas de producto (adoption, retention, NPS)
Skills requeridos:
- 🔴 Product strategy
- 🔴 Data-driven decision making
- 🟠 Comunicación con stakeholders
- 🟠 Understanding técnico (no necesita codear)
PM vs PO:
- PM: Estrategia, visión, mercado, roadmap de largo plazo
- PO: Ejecución, backlog, user stories, priorización táctica
1.3.2 Product Owner (PO)
Responsabilidades:
- Gestión de backlog
- Definir user stories y acceptance criteria
- Priorización sprint a sprint
- Clarificar requisitos al equipo
- Aceptar o rechazar features implementadas
Skills requeridos:
- 🔴 Conocimiento del dominio de negocio
- 🔴 Escribir user stories efectivas
- 🟠 Comunicación con equipo técnico
- 🟠 Priorización táctica
PO vs PM:
- PO: Táctico, día a día, backlog, sprint planning
- PM: Estratégico, visión, roadmap, mercado
1.4 🧪 Roles de Calidad
1.4.1 QA Engineer (Manual)
Responsabilidades:
- Testing manual exploratorio
- Validación de acceptance criteria
- Reportar bugs con reproducción clara
- Testing de regresión manual
- Validación de UX/UI
Skills requeridos:
- 🔴 Pensamiento crítico y atención al detalle
- 🔴 Conocimiento del dominio de negocio
- 🟠 Comunicación (reportar bugs claros)
- 🟠 Nociones de SQL (para validar datos)
1.4.2 QA Automation Engineer
Responsabilidades:
- Automatizar test cases
- Mantener suites de tests automatizados
- Integrar tests en CI/CD
- Reducir testing manual repetitivo
Skills requeridos:
- 🔴 Programación (Python, JavaScript, Java)
- 🔴 Frameworks de testing (Selenium, Cypress, Playwright)
- 🟠 CI/CD (GitHub Actions, Jenkins)
- 🟠 Page Object Model y patterns de testing
1.4.3 SDET (Software Development Engineer in Test)
Responsabilidades:
- Desarrollar frameworks de testing custom
- Tooling para testing (mocks, test data generators)
- Performance testing (JMeter, k6)
- Testing de infraestructura (chaos engineering)
Skills requeridos:
- 🔴 Desarrollo de software (igual que un developer)
- 🔴 Expertise en testing (unit, integration, E2E, performance)
- 🟠 Arquitectura de sistemas de testing
- 🟠 Observability y debugging
QA vs QA Automation vs SDET:
- QA: Manual, exploratorio, validación de UX
- QA Automation: Automatiza tests existentes, mantiene suites
- SDET: Desarrolla frameworks, tooling, testing avanzado
1.5 🔧 Roles de Operaciones
1.5.1 DevOps Engineer
Responsabilidades:
- CI/CD pipelines
- Automatización de deployments
- IaC (Terraform, CloudFormation)
- Monitoring y alerting
- Colaboración entre Dev y Ops
Skills requeridos:
- 🔴 Scripting (Bash, Python)
- 🔴 CI/CD (GitHub Actions, GitLab CI, Jenkins)
- 🟠 Cloud (AWS, Azure, GCP)
- 🟠 Containers (Docker, Kubernetes)
1.5.2 SRE (Site Reliability Engineer)
Responsabilidades:
- Garantizar reliability (SLIs, SLOs, SLAs)
- Incident response y on-call
- Post-mortems y RCA
- Toil reduction (automatización)
- Capacity planning
Skills requeridos:
- 🔴 Desarrollo de software (50% coding)
- 🔴 Operaciones (monitoring, alerting, incident response)
- 🟠 Distributed systems
- 🟠 Performance tuning
DevOps vs SRE:
- DevOps: Cultura, automatización, CI/CD, colaboración Dev-Ops
- SRE: Reliability, SLOs, incident response, on-call, toil reduction
1.5.3 Platform Engineer
Responsabilidades:
- Construir plataformas internas (developer experience)
- Self-service tooling (deploy, monitoring, logs)
- Abstracciones sobre cloud (internal PaaS)
- Developer productivity
Skills requeridos:
- 🔴 Desarrollo de software
- 🔴 Cloud y Kubernetes
- 🟠 Product thinking (internal customers = developers)
- 🟠 APIs y abstracciones
Platform vs DevOps vs SRE:
- Platform: Construir herramientas para developers (internal products)
- DevOps: Automatización, CI/CD, cultura
- SRE: Reliability, incident response
1.6 📊 Roles de Datos
1.6.1 Data Engineer
Responsabilidades:
- Construir data pipelines (ETL/ELT)
- Data warehousing (Snowflake, BigQuery, Redshift)
- Data quality y validación
- Optimización de queries y performance
Skills requeridos:
- 🔴 SQL avanzado
- 🔴 Python (pandas, PySpark)
- 🟠 Cloud data tools (Airflow, dbt, Fivetran)
- 🟠 Distributed computing (Spark)
1.6.2 Data Scientist
Responsabilidades:
- Análisis exploratorio (EDA)
- Feature engineering
- Modelado estadístico y ML
- Experimentos y A/B testing
- Comunicar insights a stakeholders
Skills requeridos:
- 🔴 Estadística y matemáticas
- 🔴 Python (pandas, scikit-learn, matplotlib)
- 🟠 ML frameworks (TensorFlow, PyTorch)
- 🟠 Storytelling con datos
1.6.3 ML Engineer
Responsabilidades:
- Deployment de modelos ML a producción
- MLOps (versionado, monitoring, retraining)
- Optimización de modelos (latency, throughput)
- Feature stores y serving infrastructure
Skills requeridos:
- 🔴 Software engineering
- 🔴 ML frameworks (TensorFlow, PyTorch)
- 🟠 MLOps tools (MLflow, Kubeflow, SageMaker)
- 🟠 Distributed systems
Data Engineer vs Data Scientist vs ML Engineer:
- Data Engineer: Pipelines, infraestructura de datos, ETL
- Data Scientist: Análisis, modelado, experimentos, insights
- ML Engineer: Deployment, MLOps, productionización de modelos
1.7 📋 Artefactos
1.7.1 RACI Matrix Template
Matriz para definir responsabilidades en proyectos:
| Tarea / Decisión | Tech Lead | EM | PM | Frontend | Backend | QA |
|---|---|---|---|---|---|---|
| Decisión arquitectónica | A | C | I | C | C | I |
| Priorización de features | C | C | A | I | I | I |
| Code review | R | I | I | R | R | I |
| Hiring técnico | C | A | I | I | I | I |
| Definir acceptance criteria | I | I | A | C | C | R |
| Incident response | C | I | I | R | R | I |
Leyenda:
- R (Responsible): Ejecuta la tarea
- A (Accountable): Responsable final, toma la decisión
- C (Consulted): Se le consulta antes de decidir
- I (Informed): Se le informa después de decidir
1.7.2 Role Definition Card Template
## [Nombre del Rol]
**Responsabilidades principales:**
1. [Responsabilidad 1]
2. [Responsabilidad 2]
3. [Responsabilidad 3]
**Skills requeridos:**
- 🔴 [Skill crítico 1]
- 🔴 [Skill crítico 2]
- 🟠 [Skill importante 1]
- 🟢 [Skill deseable 1]
**Interacciones clave:**
- Con [Rol X]: [Tipo de interacción]
- Con [Rol Y]: [Tipo de interacción]
**Anti-patterns comunes:**
- ❌ [Anti-pattern 1]
- ❌ [Anti-pattern 2]
**Métricas de éxito:**
- [Métrica 1]
- [Métrica 2]
1.7.3 Team Topology Canvas
Basado en el libro "Team Topologies" de Matthew Skelton y Manuel Pais.
Tipos de equipos:
| Tipo | Propósito | Ejemplos |
|---|---|---|
| Stream-Aligned | Entregar valor end-to-end para un flujo de negocio | Equipo de Checkout, Equipo de Payments |
| Enabling | Ayudar a otros equipos a adoptar nuevas tecnologías | Platform Adoption Team, Security Champions |
| Complicated Subsystem | Construir y mantener subsistemas complejos | ML Platform Team, Video Processing Team |
| Platform | Proveer servicios internos (internal products) | Cloud Platform Team, Data Platform Team |
Modos de interacción:
| Modo | Descripción | Cuándo usar |
|---|---|---|
| Collaboration | Dos equipos trabajan juntos temporalmente | Adopción de nueva tecnología, migración compleja |
| X-as-a-Service | Un equipo consume servicios de otro | Platform team provee APIs a stream-aligned teams |
| Facilitating | Un equipo ayuda a otro a mejorar capacidades | Enabling team ayuda a adoptar nuevas prácticas |