Contextos donde las prácticas de XP enfrentan desafíos reales o necesitan adaptación significativa.
Muchos proyectos de software tienen contratos que fijan alcance, fecha y precio. El enfoque iterativo de XP entra en conflicto con esto.
La posición de XP: No puedes fijar las tres cosas (alcance, fecha, recursos). Algo debe ser flexible. XP prefiere alcance flexible con calidad fija.
La realidad del contrato: Los clientes quieren saber exactamente qué obtendrán, cuándo y por cuánto. Los contratos tradicionales prometen esto.
Tensiones:
Opciones:
XP en entornos contractuales no es imposible, pero requiere educación del cliente y negociación del contrato.
La Trampa del Contrato
Los contratos tradicionales asumen que puedes saberlo todo por adelantado. No puedes. Alguien asume el riesgo de esa incertidumbre—ya sea el cliente (órdenes de cambio) o el proveedor (sobrecostos). XP intenta compartirlo a través de la colaboración.
XP fue diseñado para equipos colocalizados. Puede funcionar de forma remota, pero solo con buenas herramientas y cultura de comunicación.
Desafíos:
Si tu equipo distribuido tiene:
...las prácticas de XP tendrán dificultades.
Para que funcione se requiere:
Algunos equipos distribuidos hacen XP muy bien. Otros no pueden lograrlo. La diferencia suele ser la cultura de comunicación, no la geografía.
Industrias como salud, finanzas y aviación tienen requisitos regulatorios que pueden entrar en conflicto con las prácticas de XP.
Tensiones:
Sin embargo: XP no es imposible en entornos regulados. Muchos equipos regulados usan XP exitosamente.
Adaptaciones:
La idea clave: Las prácticas de calidad de XP a menudo exceden los mínimos regulatorios. Pruebas exhaustivas, revisión de código (parejas) y trazabilidad son cosas que los reguladores quieren.
Lo que XP resiste es el desperdicio: documentación por sí misma, ciclos largos de aprobación, ceremonias que no mejoran la calidad.
Un equipo de dispositivos médicos usa TDD (las pruebas son evidencia de validación), programación en parejas (revisión de dos personas) e IC (trazabilidad). Despliegan con menos frecuencia pero aún trabajan iterativamente. Las auditorías van bien porque la evidencia está integrada.
Un equipo produce volúmenes de documentos de diseño antes de codificar (nunca actualizados), ejecuta pruebas manuales al final (encontrando bugs tarde) y evita cambios (porque el cambio requiere re-documentación). La calidad es pobre; el cumplimiento es nominal.
Las prácticas de ingeniería de XP no son negociables. Si el equipo se niega a adoptarlas, XP no funciona.
Resistencia común:
Si la resistencia viene de los desarrolladores:
Si la resistencia viene de la gerencia:
XP requiere compromiso. Puedes introducir prácticas gradualmente, pero si el equipo u organización se niega a comprometerse con la excelencia técnica, XP no arraigará.
La resistencia a menudo viene del miedo. Miedo a ser expuesto por no saber algo. Miedo a ir más lento. Miedo al cambio. Aborda el miedo, no solo la objeción.
Algunos dominios hacen TDD significativamente más difícil:
Aplicaciones con mucha UI: Probar apariencia visual e interacción puede ser complicado. (Aunque herramientas modernas como React Testing Library han mejorado esto.)
Modelos de aprendizaje automático: Probar resultados probabilísticos no encaja en el modelo assert-equals.
Sistemas dependientes de hardware: El comportamiento de dispositivos físicos es difícil de simular.
Sistemas altamente concurrentes: El comportamiento dependiente del tiempo es difícil de probar determinísticamente.
Para estos dominios:
No uses esto como excusa para omitir las pruebas por completo. Cada sistema tiene partes probables. Lleva TDD tan lejos como pueda ir; adáptalo donde debas.