6 min lectura • Guide 743 of 877
Escribiendo Mejores User Stories
Las buenas user stories comunican intención claramente. GitScrum proporciona templates y campos que ayudan a los equipos a escribir stories con el nivel correcto de detalle.
Fundamentos de User Stories
Formato de Story
ESTRUCTURA DE USER STORY:
┌─────────────────────────────────────────────────────────────┐
│ │
│ FORMATO CLÁSICO: │
│ │
│ Como [tipo de usuario] │
│ Quiero [alguna meta] │
│ Para que [alguna razón/beneficio] │
│ │
│ EJEMPLO: │
│ │
│ Como project manager │
│ Quiero exportar reportes a PDF │
│ Para que pueda compartir progreso con stakeholders │
│ │
└─────────────────────────────────────────────────────────────┘
Anatomía Completa
USER STORY COMPLETA
═══════════════════
┌─────────────────────────────────────────────────────────────┐
│ TÍTULO: Exportar reportes a PDF │
│ │
│ STORY: │
│ Como project manager │
│ Quiero exportar reportes a PDF │
│ Para que pueda compartir progreso con stakeholders │
│ │
│ CRITERIOS DE ACEPTACIÓN: │
│ ✅ Usuario puede seleccionar reporte para exportar │
│ ✅ PDF incluye todos los datos visibles en pantalla │
│ ✅ PDF tiene formato profesional con logo │
│ ✅ Download comienza en menos de 5 segundos │
│ │
│ NOTAS: │
│ - Mockup adjunto │
│ - Revisar con equipo de branding │
│ │
│ ESTIMACIÓN: 5 puntos │
│ │
└─────────────────────────────────────────────────────────────┘
Criterio INVEST
CHECKLIST INVEST
════════════════
I - INDEPENDIENTE
┌─────────────────────────────────────────────────────────────┐
│ ✅ La story puede desarrollarse sin depender de otras │
│ ❌ "Primero necesitamos terminar la story de login" │
└─────────────────────────────────────────────────────────────┘
N - NEGOCIABLE
┌─────────────────────────────────────────────────────────────┐
│ ✅ Detalles de implementación pueden discutirse │
│ ❌ "Debe usar exactamente estos colores y posiciones" │
└─────────────────────────────────────────────────────────────┘
V - VALIOSA
┌─────────────────────────────────────────────────────────────┐
│ ✅ Entrega valor al usuario o negocio │
│ ❌ "Refactorizar código interno" (sin beneficio visible) │
└─────────────────────────────────────────────────────────────┘
E - ESTIMABLE
┌─────────────────────────────────────────────────────────────┐
│ ✅ Equipo puede estimar el esfuerzo │
│ ❌ "Integrar con el sistema legacy" (sin detalles) │
└─────────────────────────────────────────────────────────────┘
S - PEQUEÑA (Small)
┌─────────────────────────────────────────────────────────────┐
│ ✅ Cabe en un sprint │
│ ❌ Epic completo sin dividir │
└─────────────────────────────────────────────────────────────┘
T - TESTEABLE
┌─────────────────────────────────────────────────────────────┐
│ ✅ Se puede verificar si está completada │
│ ❌ "Mejorar el rendimiento" (sin métrica específica) │
└─────────────────────────────────────────────────────────────┘
Errores Comunes
ANTI-PATRONES DE USER STORIES
═════════════════════════════
❌ DEMASIADO VAGA:
┌─────────────────────────────────────────────────────────────┐
│ "Como usuario, quiero que el sistema sea más rápido" │
│ │
│ PROBLEMA: No hay criterio de éxito medible │
│ │
│ ✅ MEJOR: │
│ "Como usuario, quiero que la página de dashboard │
│ cargue en menos de 2 segundos para que no │
│ pierda tiempo esperando" │
└─────────────────────────────────────────────────────────────┘
❌ DEMASIADO TÉCNICA:
┌─────────────────────────────────────────────────────────────┐
│ "Como desarrollador, quiero migrar a PostgreSQL 15" │
│ │
│ PROBLEMA: No expresa valor para usuario │
│ │
│ ✅ MEJOR: │
│ "Como usuario, quiero que las búsquedas respondan │
│ en menos de 100ms para que pueda trabajar fluidamente" │
│ (Nota técnica: requiere migración a PostgreSQL 15) │
└─────────────────────────────────────────────────────────────┘
❌ SIN CONTEXTO:
┌─────────────────────────────────────────────────────────────┐
│ "Agregar botón de exportar" │
│ │
│ PROBLEMA: No explica para quién ni por qué │
│ │
│ ✅ MEJOR: │
│ Usar el formato completo As/Want/So that │
└─────────────────────────────────────────────────────────────┘
Criterios de Aceptación Efectivos
FORMATOS DE CRITERIOS
═════════════════════
FORMATO 1: CHECKLIST
┌─────────────────────────────────────────────────────────────┐
│ Criterios de Aceptación: │
│ ☐ Usuario puede hacer X │
│ ☐ Sistema muestra Y cuando Z │
│ ☐ Error aparece si condición inválida │
│ ☐ Datos se guardan correctamente │
└─────────────────────────────────────────────────────────────┘
FORMATO 2: GIVEN-WHEN-THEN
┌─────────────────────────────────────────────────────────────┐
│ Escenario: Exportar reporte exitoso │
│ │
│ DADO: Usuario está en página de reportes │
│ Y: Hay datos para el período seleccionado │
│ CUANDO: Usuario hace clic en "Exportar PDF" │
│ ENTONCES: Se descarga archivo PDF │
│ Y: PDF contiene todos los datos visibles │
└─────────────────────────────────────────────────────────────┘
FORMATO 3: REGLAS
┌─────────────────────────────────────────────────────────────┐
│ Reglas de Negocio: │
│ - Máximo 100 items por exportación │
│ - Formato de fecha: DD/MM/YYYY │
│ - Solo usuarios con rol "Manager" pueden exportar │
└─────────────────────────────────────────────────────────────┘
Dividiendo Stories Grandes
TÉCNICAS DE DIVISIÓN
════════════════════
POR FLUJO DE USUARIO:
┌─────────────────────────────────────────────────────────────┐
│ EPIC: Sistema de checkout │
│ │ │
│ ├── Story: Ver carrito │
│ ├── Story: Agregar dirección de envío │
│ ├── Story: Seleccionar método de pago │
│ ├── Story: Confirmar orden │
│ └── Story: Recibir confirmación por email │
└─────────────────────────────────────────────────────────────┘
POR REGLA DE NEGOCIO:
┌─────────────────────────────────────────────────────────────┐
│ EPIC: Cálculo de descuentos │
│ │ │
│ ├── Story: Descuento por volumen (>10 items) │
│ ├── Story: Descuento por código promocional │
│ ├── Story: Descuento por cliente frecuente │
│ └── Story: Combinación de múltiples descuentos │
└─────────────────────────────────────────────────────────────┘
POR VARIACIÓN:
┌─────────────────────────────────────────────────────────────┐
│ EPIC: Exportar reportes │
│ │ │
│ ├── Story: Exportar a PDF │
│ ├── Story: Exportar a Excel │
│ └── Story: Exportar a CSV │
└─────────────────────────────────────────────────────────────┘
Templates en GitScrum
CONFIGURAR TEMPLATE EN GITSCRUM
═══════════════════════════════
TEMPLATE PREDETERMINADO:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ## User Story │
│ Como [tipo de usuario] │
│ Quiero [funcionalidad] │
│ Para que [beneficio] │
│ │
│ ## Criterios de Aceptación │
│ - [ ] Criterio 1 │
│ - [ ] Criterio 2 │
│ - [ ] Criterio 3 │
│ │
│ ## Notas │
│ [Contexto adicional, mockups, dependencias] │
│ │
│ ## Definición de Done │
│ - [ ] Código completo │
│ - [ ] Tests pasando │
│ - [ ] Revisión de código │
│ - [ ] Documentación actualizada │
│ │
└─────────────────────────────────────────────────────────────┘
Checklist de Calidad
ANTES DE AGREGAR AL SPRINT
══════════════════════════
☐ ¿Está en formato user story (quién, qué, por qué)?
☐ ¿Tiene criterios de aceptación claros?
☐ ¿Es independiente o dependencias están resueltas?
☐ ¿Cabe en un sprint?
☐ ¿El equipo puede estimarla?
☐ ¿Es testeable?
☐ ¿Tiene valor claro para usuario/negocio?
☐ ¿Está discutida con el equipo?