Slide 1

Slide 1 text

Una introducción a eXtreme Programming XP explained second edition

Slide 2

Slide 2 text

Objetivos _Conocer qué es eXtreme Programming y cómo se desarrolló. _Describir los valores: comunicación, feedback, simplicidad, coraje y respeto. _Comparar las diferencias entre SCRUM y eXtreme programming. _El impacto en el coste del desarrollo con eXtreme programming y otras prácticas.

Slide 3

Slide 3 text

Calentando motores

Slide 4

Slide 4 text

Agile vs Waterfall

Slide 5

Slide 5 text

"The business changes. The technology changes. The team changes. The team members change. The problem isn’t change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes." El cambio

Slide 6

Slide 6 text

Línea del tiempo ≃ 1997 - SCRUM ≃ 1999 - eXtreme Programming ≃ 2003 - Lean software development / Kanban

Slide 7

Slide 7 text

¿Soy eXtreme? El primer proyecto extreme

Slide 8

Slide 8 text

Un proyecto con problemas Comenzó con una llamada telefónica, alguien estaba preocupado por el rendimiento del sistema de nómina de Chrysler (Kent Beck escribió una conferencia sobre el rendimiento de Smalltalk), así que lo llamaron.

Slide 9

Slide 9 text

Un proyecto con problemas - A dos meses lejos de producción - Escuchando a quien estaba escuchando antes de responder - La gente estaba cansada

Slide 10

Slide 10 text

¿Cómo vamos a trabajar? - Iteración de tres semanas - Implementar algunas historias (el experto en la nómina de pagos elegirá) - Estimaremos y averiguaremos cuántos se ajustan a la iteración

Slide 11

Slide 11 text

¿Cómo vamos a trabajar? - Un día de estimación - El cliente eligió la funcionalidad mínima para una primera implementación

Slide 12

Slide 12 text

- No se cumplió el plazo, se tardó tres meses más - fue un éxito empresarial - El proyecto fue desmantelado debido a los avances tecnológicos y la financiación ¿Los resultados?

Slide 13

Slide 13 text

eXtreme Programming

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

¿Qué valores tiene que tener un equipo?

Slide 16

Slide 16 text

Valores _Comunicación _Feedback _Simplicidad _Coraje _Respeto

Slide 17

Slide 17 text

Comunicación Sentido común y cooperación eficaz

Slide 18

Slide 18 text

Feedback - Es posible que no sepamos cómo hacerlo bien - Lo que es bueno para hoy puede ser malo para mañana. - Estar satisfecho con la mejora en lugar de esperar la perfección - Los equipos XP generan la mayor cantidad de comentarios lo más rápido posible: tenga cuidado con los demasiados comentarios.

Slide 19

Slide 19 text

Simplicidad - La simplicidad depende del contexto. - Este valor se vuelve aún más claro en la práctica de Test Driven Development que reduce la complejidad que uno podría comenzar a implementar software. - La simplicidad también proviene de la experiencia a medida que avanza la carrera, los desarrolladores experimentados tienden a encontrar soluciones más simples en lugar de las complicadas.

Slide 20

Slide 20 text

Coraje - El coraje de decir verdades, agradables y desagradables, fomenta la confianza en la comunicación.

Slide 21

Slide 21 text

Respeto - El desarrollo de software tiene el mismo valor que un ser humano. - Se debe respetar la contribución de cada persona en el equipo.

Slide 22

Slide 22 text

Principios El fío conductor

Slide 23

Slide 23 text

Principios Humanidad Economía Beneficio mutuo Mejora Reflexión Diversidad Flujo continuo Oportunidad Redundancia Falla Calidad Pasos pequeños

Slide 24

Slide 24 text

Principios Economía Beneficio mutuo Mejora Reflexión Diversidad Flujo continuo Oportunidad Redundancia Falla Calidad Pasos pequeños Humanidad El desarrollo de software no satisface las necesidades humanas - Libertad y seguridad - Logro - Pertenecer - Crecimiento - Entender y ser entendido

Slide 25

Slide 25 text

Principios Beneficio mutuo Mejora Reflexión Diversidad Flujo continuo Oportunidad Redundancia Falla Calidad Pasos pequeños Humanidad - Lo que estamos haciendo tiene sentido para el negocio - no invertir en flexibilidad especulativa Economía

Slide 26

Slide 26 text

Principios Mejora Reflexión Diversidad Flujo continuo Oportunidad Redundancia Falla Calidad Pasos pequeños Humanidad Economía Beneficio mutuo - Automated tests that helps to design and implement better today. - Carefully refactor. - Chose names that are coherent and explicitly sets of metaphors.

Slide 27

Slide 27 text

Principios Reflexión Diversidad Flujo continuo Oportunidad Redundancia Falla Calidad Pasos pequeños Humanidad Economía Beneficio mutuo Mejora - No existe un proceso perfecto. - No esperes la perfección para empezar. Ponga la mejora a trabajar al no esperar la perfección. - Comience la actividad de inmediato y perfeccione los resultados con el tiempo.

Slide 28

Slide 28 text

Beneficio mutuo Principios Reflexión Flujo continuo Oportunidad Redundancia Falla Calidad Pasos pequeños Humanidad Economía Mejora Diversidad - Un equipo donde todos son iguales no es efectivo. - Los programadores deben trabajar juntos y valorar la opinión de los demás. - Aporta nuevas perspectivas, se necesita una variedad de habilidades para pensar en un problema y una solución.

Slide 29

Slide 29 text

Oportunidad Principios Flujo continuo Pasos pequeños Humanidad Economía Mejora Beneficio mutuo Diversidad Reflexión Redundancia Falla Calidad - Los buenos equipos dan un paso atrás para pensar en cómo están trabajando y por qué están trabajando. - Los sentimientos templados por el intelecto son una fuente de introspección. - El aprendizaje es acción reflejada.

Slide 30

Slide 30 text

Oportunidad Principios Pasos pequeños Humanidad Economía Mejora Beneficio mutuo Diversidad Reflexión Redundancia Falla Calidad Flujo continuo - Las prácticas de XP están sesgadas hacia un flujo continuo de actividades. - Los equipos han sufrido de integración big bang: todo a la vez en lugar de un flujo continuo de entrega. - Resolver los problemas que interrumpen el flujo.

Slide 31

Slide 31 text

Principios Pasos pequeños Humanidad Economía Mejora Beneficio mutuo Diversidad Reflexión Redundancia Falla Calidad Flujo continuo Oportunidad - Los problemas son oportunidades de aprendizaje.

Slide 32

Slide 32 text

Principios Pasos pequeños Humanidad Economía Mejora Beneficio mutuo Diversidad Reflexión Falla Calidad Flujo continuo Oportunidad Redundancia - Los defectos corroen la confianza, no se puede resolver el problema del defecto con una sola práctica. - Tener una fase de prueba después del desarrollo debería ser redundante.

Slide 33

Slide 33 text

Principios Pasos pequeños Humanidad Economía Mejora Beneficio mutuo Diversidad Reflexión Falla Calidad Flujo continuo Oportunidad Redundancia - Fallar y aprender. - El fracaso no es un desperdicio. Fallar en lugar de hablar.

Slide 34

Slide 34 text

Principios Pasos pequeños Humanidad Economía Mejora Beneficio mutuo Diversidad Reflexión Falla Calidad Flujo continuo Oportunidad Redundancia - Sacrificar la calidad no es efectivo como medio de control. - XP elige el alcance como el principal medio de planificación. - Haz el trabajo lo mejor que puedas.

Slide 35

Slide 35 text

Principios Humanidad Economía Mejora Beneficio mutuo Diversidad Reflexión Falla Calidad Flujo continuo Oportunidad Redundancia Pasos pequeños - Se expresan en prácticas como la programación test-first y la integración continua.

Slide 36

Slide 36 text

Prácticas Primarias y corollary

Slide 37

Slide 37 text

Prácticas primárias Prácticas corollary

Slide 38

Slide 38 text

Prácticas primárias Prácticas corollary

Slide 39

Slide 39 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design

Slide 40

Slide 40 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - desarrollarse en un espacio lo suficientemente grande para todo el equipo. - el problema es siempre un problema de personas. - Sentarnos juntos para comunicarnos con todos nuestros sentidos juntos. - sentarse juntos incluso si eso significa viajar.

Slide 41

Slide 41 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - nosotros pertenecemos. - nos apoyamos mutuamente en el trabajo, el crecimiento y el aprendizaje. - agregue y elimine personas del equipo a pedido - 150 personas más y no es posible reconocer a las personas para generar confianza y se necesita confianza para la colaboración

Slide 42

Slide 42 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - cuadros informativos - Se necesita espacio público y privado para trabajar.

Slide 43

Slide 43 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - El desarrollo de software se trata de conocimientos y los conocimientos vienen a la mente descansada. - No trabaje demasiado, realice un seguimiento de cuándo uno podría no ser tan productivo como pueda y deténgase por el día.

Slide 44

Slide 44 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - Dos personas sentadas en una máquina. - Rotar con frecuencia. - Sea consciente de las diferencias culturales, el espacio personal significa diferentes cosas para diferentes personas. - Las emociones en el trabajo deben estar relacionadas con el trabajo. - Si no te sientes cómodo haciendo pareja con alguien del equipo, háblalo.

Slide 45

Slide 45 text

Trabajo com impacto Prácticas primárias Equipo colocalizado Whole team Espacio informativo Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - la estimación temprana es una diferencia clave entre las historias y otros requisitos. - nombres cortos para historias

Slide 46

Slide 46 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - Plan de trabajo a la semana a la vez - revisar el progreso - discuta las prioridades y elija las más importantes para el negocio - dividir las historias en tareas - trabajar los fines de semana no es sostenible.

Slide 47

Slide 47 text

Historias de usuario Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - 80/20 - tarea elegida por el programador - semana Friki

Slide 48

Slide 48 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - mantener la compilación por debajo de diez minutos - vistas automatizadas sin necesidad de intervención manual

Slide 49

Slide 49 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - Integrar las cosas no más de un par de horas. - integrar el trabajo después de una sesión en pareja

Slide 50

Slide 50 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - Comience cualquier cosa con un test fallando.

Slide 51

Slide 51 text

Prácticas primárias Equipo colocalizado Whole team Espacio informativo Trabajo com impacto Historias de usuario Pair programming Ciclos semanales y trimestrales Tiempo libre Build de diez minutos Integración continua Test first programming Incremental design - invertir en el diseño del sistema todos los días. - Trae mejoras gradualmente y no todo por adelantado. - Los equipos de XP confían en su capacidad para adaptar el diseño a los requisitos futuros.

Slide 52

Slide 52 text

Prácticas primárias Prácticas corollary

Slide 53

Slide 53 text

Prácticas primárias Prácticas corollary

Slide 54

Slide 54 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario

Slide 55

Slide 55 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario - El cliente debe ser parte del equipo. - El cliente proxy conduce a una pérdida de tiempo. - El cliente no confiaría en nosotros si supiera cómo es el desarrollo de software. - Perder el tiempo encubriendo.

Slide 56

Slide 56 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario El lanzamiento del big bang trae dificultades a las personas y las pone demasiado nerviosas tratando de lograr todo lo que se necesita para el día D

Slide 57

Slide 57 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario Básicamente, mantenga juntas a las personas a las que les va muy bien, no evite el aspecto humano, pero eso no significa equipos estáticos. Los desarrolladores que trabajan en un equipo XP pueden unirse y dejar un equipo y volverse productivos después de un mes.

Slide 58

Slide 58 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario Demasiada gente en un equipo también trae desafíos, muy pocos miembros en diferentes equipos requieren fusionarlos.

Slide 59

Slide 59 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario 1. Escriba una prueba automatizada a nivel del sistema que reproduzca el defecto. 2. Escriba una prueba unitaria con el alcance más pequeño posible que también reproduzca el defecto. 3. Arreglar el sistema, para que funcione la prueba unitaria. Repita hasta que funcione. 4. Una vez que se solucione el defecto, averigüe por qué se creó.

Slide 60

Slide 60 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario Cualquier miembro del equipo puede mejorar el código en cualquier momento.

Slide 61

Slide 61 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario Solo el código fuente y las pruebas son artefactos permanentes.

Slide 62

Slide 62 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario Puede desarrollarse en una rama, pero nunca dejar que viva más de unas pocas horas. En lugar de crear muchas versiones del código base, solucione primero el problema de diseño subyacente.

Slide 63

Slide 63 text

Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Negociar contrato Pago por usuario Despliegue todas las noches. Existen algunas barreras para el despliegue frecuente, algunas de ellas son técnicas y otras son sociales, por ejemplo, el proceso de implementación es tan estresante que nadie quiere implementar.

Slide 64

Slide 64 text

Negociar contrato Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Pago por usuario Reduzca el riesgo firmando un secuencia de contratos cortos en lugar de uno largo.

Slide 65

Slide 65 text

Negociar contrato Prácticas corollary Participación real del cliente Continuidad del equipo Despliegues incrementales equipos cada vez más reducidos código compartido Análisis de raíz de la causa Código y pruebas Una code base Despliegues diarios Pago por usuario Con los sistemas de pago por uso, cobra por cada vez que se utiliza el sistema. El dinero es la última retroalimentación.

Slide 66

Slide 66 text

¿y SCRUM?

Slide 67

Slide 67 text

XP y SCRUM - Enfoque en el equipo, prácticas y valores - Colaboración con el cliente y respuesta al cambio - Basado en valores y personas - Enfoque en gerencia del equipo - commitment en una carga de trabajo - Basado en el mundo empresarial, poco enfoque en las personas

Slide 68

Slide 68 text

¿Soy eXtreme?

Slide 69

Slide 69 text

- Feedback - Corage - Simplicity - Comunicación - Respeto

Slide 70

Slide 70 text

- Feedback - Corage - Simplicity - Comunicación - Respeto - Flujo continuo - Humanidad - Diversidad - Beneficio mutuo - Redundancia - Economía - Oportunidad - Reflexión - Mejora - Calidad - Falla - Pasos pequeños

Slide 71

Slide 71 text

- Feedback - Corage - Simplicity - Comunicación - Respeto - Flujo continuo - Humanidad - Diversidad - Beneficio mutuo - Redundancia - Economía - Oportunidad - Reflexión - Mejora - Calidad - Falla - Pasos pequeños - Ciclos semanales y trimestrales - Test first programming - Equipo colocalizado - Espacio informativo - Build de diez minutos - Pair programming - Tiempo libre - Whole team - Historias de usuario - Trabajo com impacto - Integración continua - Incremental design

Slide 72

Slide 72 text

- Feedback - Corage - Simplicity - Comunicación - Respeto - Flujo continuo - Humanidad - Diversidad - Beneficio mutuo - Redundancia - Economía - Oportunidad - Reflexión - Mejora - Calidad - Falla - Pasos pequeños - Ciclos semanales y trimestrales - Test first programming - Equipo colocalizado - Espacio informativo - Build de diez minutos - Pair programming - Tiempo libre - Whole team - Historias de usuario - Trabajo com impacto - Integración continua - Incremental design - Participación real del cliente - Código y pruebas - Despliegues incrementales - Despliegues diarios - Análisis de raíz de la causa - Continuidad del equipo - Una code base - equipos cada vez más reducidos - código compartido - Negociar contrato - Pago por usuario

Slide 73

Slide 73 text

Una introducción a eXtreme Programming XP explained second edition