presentación extreme programming

36
Alfredo Casado Bernardez eXtreme Programing

Upload: adwe-team

Post on 28-Nov-2014

3.248 views

Category:

Technology


0 download

DESCRIPTION

Presentación de Alfredo Casado Bernárdez sobre Extreme Programming en #adwe_mad

TRANSCRIPT

Page 1: Presentación Extreme Programming

Alfredo Casado BernardezeXtreme Programing

Page 2: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Indice

- ¿Por qué XP?- ¿Qué es XP?, principios y practicas- Relación con otros métodos ágiles- Evolución- Quiero saber más!

Importancia de profesionalidad y método frente a un framework o tecnología pasajera.

Esto te puede cambiar la vida, profesional claro. No es ninguna exageración.

A mi me la ha cambiado, para mejor obviamente!.

Page 3: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

No funcionan:- demasiada documentación- demasiada burocracia.- separación de roles. gestores, arquitectos, programadores, testers, operaciones/sistemas...- rigidez, el cambio es un problema.- ciclo en cascada claramente no sirve.

Page 4: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

No funcionan:- demasiada documentación- demasiada burocracia.- separación de roles. gestores, arquitectos, programadores, testers, operaciones/sistemas...- rigidez, el cambio es un problema.- ciclo en cascada claramente no sirve.

Page 5: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

Page 6: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

Page 7: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

Page 8: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

Page 9: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

Page 10: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

Page 11: Presentación Extreme Programming

Alfredo Casado Bernardez

eXtreme Programming

Waterfall

Consecuencias, dos posibilidades:- Organizaciones grandes intentan seguir métodos clasicos, el resultado son desarrollos que no satisfacen a nadie.

- Organizaciones más pequeñas que no pueden permitirse el gasto optan por no seguir estas metodologias. El resultado es ASM/caos que de nuevo no deja satisfecho a nadie.

Y lo peor no es esto, lo peor es cuando hay que hacer cambios!!

Page 12: Presentación Extreme Programming

eXtreme Programming

Kent Beck, el padre de eXtreme programming

"..the problem [with software projects] isn't change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes."

Documentación -> la necesaria

Separación de roles -> whole team y comunicación

Mucho tiempo hasta la primera versión -> primera versión en una semana, dos como mucho.

XP no sólo es permisiva con el cambio, xp promueve el cambio. El cambio como beneficio no como problema.

Si usamos XP lo hacemos para producir software que sirva mejor a las necesidades de nuestros clientes, nunca perder esto de vista, este es el objetivo.

Alfredo Casado Bernardez

Page 13: Presentación Extreme Programming

eXtreme Programming

Valores, simplicidad

El mayor enemigo de cualquier sistema software es la complejidad. en XP mantener las cosas simples es un objetivo prioritario. Diseño simple de kent beck:

- pasan los test.- código revela sus intenciones.- eliminar TODA duplicación.- reducir el número de elementos.

Alfredo Casado Bernardez

Page 14: Presentación Extreme Programming

eXtreme Programming

Valores de xp, comunicación

Un proyecto software siempre se realiza en equipo, es fundamental que los canales de comunicación sean de banda ancha.

Comunicación entre:

cliente y equipo de desarrolloentres miembros del equipoentre programadores y testersentre programadores y qa

Se trata de eliminar barreras y favorecer la comunicación directa

Alfredo Casado Bernardez

Page 15: Presentación Extreme Programming

eXtreme Programming

Valores de xp, feedback

Feedback continuo y temprano.

El cliente como parte del equipo esta constantemente viendo el producto y dando feedback.

Los programadores que usan TDD tienen constantemente feedback de que su trabajo es correcto

La integración continua ofrece feedback constante de que el código de todos se integra correctamente.

Se hacen iteraciones cortas, se obtiene feedback después de cada iteración.

Alfredo Casado Bernardez

Page 16: Presentación Extreme Programming

eXtreme Programming

Valores de xp, coraje

Hay que echarle huevos al asunto, así de claro. Nadie dijo que esto fuera a ser fácil. nadie da duros a peseta.Los grandes beneficios sólo se obtienen a través de grandes esfuerzos.

Alfredo Casado Bernardez

Page 17: Presentación Extreme Programming

eXtreme Programming

Practicas XP

TDD

Planing Game

Whole Team

PairProgramming

Feedback Continuous

CI

Design Improvement

Small releases

Shared

Simple design

System Metaphor

Collective ownership

Coding Standard

Wellfare

Sustainable Pace

Alfredo Casado Bernardez

Page 18: Presentación Extreme Programming

eXtreme Programming

Whole team

El equipo cuena con todas las habilidades necesarias para cumplir con su trabajo.

El cliente forma parte del equipo de trabajo. Punto más polémico sin duda de xp (junto con PP quiza).

En scrum se relaja un poco, el clienete o product owner en terminología scrum puede ser el propio cliente o un proxy de este (algo así como un analista funcional o alguien de nuestra empresa cuyo trabajo sea representar la posición del cliente).

KB es más radical, si el cliente no quiere cederme a uno de sus trabajadores para que el proyecto pueda avanzar entonces no le interesa lo suficiente el proyecto, y en consecuencia a mi tampoco. (con dos cojo...)

Alfredo Casado Bernardez

Page 19: Presentación Extreme Programming

eXtreme Programming

Planning Game y Small releases

En este punto nos reunimos con el cliente y decidimos las historias de usuario que van a entrar en la primera iteración/release.

poner fotillo de nuestro tablon.

La idea es tener lo más rapido algo que funcione para poder obtener feedback lo antes posible, todo lo contrario de lo que sucedia en proyectos clásicos.

A veces se usan practicas de scrum o kanban/lean mezcladas con xp en esta fase.

Alfredo Casado Bernardez

Page 20: Presentación Extreme Programming

eXtreme Programming

System metaphor y walking skeleton

Consiste en empezar el desarrollo con un esqueleto andante que cubra todos los puntos de la arquitectura end-to-end. desde el UI hasta la bd por ejemplo en una aplicación web típica.

El termino WS me parece mucho más acertado, pertenece a alistair cockburn que lo definió como parte de su metodología crystal. (este hombre también se invento lo de la deuda técnica, un crack de las buenas metaforas :P )

Alfredo Casado Bernardez

Page 21: Presentación Extreme Programming

eXtreme Programming

pair programming

Ya tenemos la planificación de lo que vamos ha hacer y una metáfora para construir la arquitectura.

El siguiente paso es ponernos ha hacer el trabajo, pero eso si, no nos ponemos solos!.

Cuatro ojos ven más que dos. PP es revisión de código llevado al extremo. Práctica polemica pero que da grandes resultados en algunos contextos.

ayuda a la visión compartidaayuda a miembros nuevos del equipoevita relajaciones, hacer PP es cansado.d

Alfredo Casado Bernardez

Page 22: Presentación Extreme Programming

eXtreme Programming

TDD y simple design

Mi practica favorita, la que más me ha echo crecer como programador en mi carrera profesional.

fundamental mezclar tdd con SD. En la fase refactor seguimos las reglas de SD para mejorar nuestro código.

Algunos mitos:

- consume mucho tiempo- es muy difícil- no se pueden probar todos los casos- no me dejan hacer test

Superado el periodo de aprendizaje desaparecen los mitosAlfredo Casado Bernardez

Page 23: Presentación Extreme Programming

eXtreme Programming

Integración Continua

Práctica fundamental en combinación con tdd.

Si integrar frecuentemente es bueno integrar continuamente es mejor. lógica aplastante...

Cada vez que hago un commit se compila todo el proyecto y se pasan todos los test.

Hacer commit frecuentes, si haces TDD puedes hacer commit cada vez que estes en verde.

No hacer commit-and-run, romper el build es entorpecer al resto del equipo, se castiga con dureza (comprar chucherias en nuestro caso).

Alfredo Casado Bernardez

Page 24: Presentación Extreme Programming

eXtreme Programming

Collective Code Ownership

El codigo es de todos, no existen islas de conocimiento, cualquiera puede hacer cualquier tarea.

Una práctica curiosa, poner las tarjetas al reves en la pared y se escojen a boleo, evita que la gente tienda a quedarse en su zona de conform.

reduce el factor camion, ¿cuantos miembros de tu equipo tienen que ser atropellados por un camión para que tu proyecto se vaya al garete?

Alfredo Casado Bernardez

Page 25: Presentación Extreme Programming

eXtreme Programming

Design Improvement

La regla de los boy scout. deja el campo más limpio de como lo encontraste.

Recuerda, el código es de todos, no vale eso de “esto esta fatal lo hizo fulanito”, no amigo, ese código es tuyo, si no te gusta lo arreglas.

Hace falta coraje.

Boy Scout rule: Always leave a place cleaner than you found it

Alfredo Casado Bernardez

Page 26: Presentación Extreme Programming

eXtreme Programming

Sustainable pace

Las 40 horas.

No se puede realizar un trabajo que exige un alto de concentración y tiene un alto grado de complejidad sin estar a tope de tus facultades.

En ocasiones puede ser razonable un esfuerzo extra, eso pasa siempre y seguira pasando.

Lo que no es razonable es que ese esfuerzo “extra” se convierta en norma. Decia KB, si llevas varias semanas haciendo horas de más para resolver un problema ten una cosa clara, tienes un problema que no se resuelve con más horas!!.

Alfredo Casado Bernardez

Page 27: Presentación Extreme Programming

eXtreme Programming

Nadie dijo que fuera fácilCuidado con el DIP!

Alfredo Casado Bernardez

Hay que superar la etapa de aprendizaje para realmene sacarle beneficio, lo más importante es no desanimarse.

Los beneficios que obtengas son normalmente proporcionales al esfuerzo que dedicas en algo. Exceptuando que te toque la loteria claro!.

Es importante contar con coraje para salir del bache. Otras opciones es buscar ayuda mediante coaching para pasar esta fase.

Los beneficios de verdad llegarán despues y merecen la pena el esfuerzo

Page 28: Presentación Extreme Programming

eXtreme Programming

Relación con otros métodos ágiles

ver com encaja xp con otras metodologias como scrum o las ideas de lean.

No estoy muy seguro si poner esto o no, simplemente un dibujo, o algo contando que xp es el core de las practicas de ingeniería y que las practicas de gestión de proyecto se suelen realizar utilizando ideas de scrum o kanban/lean.

Alfredo Casado Bernardez

Page 29: Presentación Extreme Programming

eXtreme Programming

En 10 años pasan muchas cosas...Continuous delivery

10 años son mucho tiempo:

- BDD- Continuous delivery- DevOps- Craftmanship

Alfredo Casado Bernardez

Page 30: Presentación Extreme Programming

Nombre Apellidos

eXtreme Programming

En 10 años pasan muchas cosas...Behavior Driven Development

Page 31: Presentación Extreme Programming

Nombre Apellidos

eXtreme Programming

Quiero más!, sobre XP

Page 32: Presentación Extreme Programming

Nombre Apellidos

eXtreme Programming

Quiero más!, TDD/BDD

Page 33: Presentación Extreme Programming

Nombre Apellidos

eXtreme Programming

Quiero más!, CI/CD

Page 34: Presentación Extreme Programming

Nombre Apellidos

eXtreme Programming

Quiero más!, profesion

Page 35: Presentación Extreme Programming

Nombre Apellidos

eXtreme Programming

Quiero más!, estándares codificación y buenas prácticas

Page 36: Presentación Extreme Programming

MUCHAS GRACIAS!!!!

Alfredo Casado Bernardez

twitter: @AlfredoCasadoblog: http://weblogs.javahispano.org/artesanodeprimera/

eXtreme Programming