30
#Agilismo (my way) 1. Métodos y Herramientas Javier García Sogo @jgsogo

Agilismo - Métodos y herramientas

  • Upload
    jgsogo

  • View
    70

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Agilismo - Métodos y herramientas

#Agilismo (my way)

1. Métodos y Herramientas

Javier García Sogo

@jgsogo

Page 2: Agilismo - Métodos y herramientas

Motivación

Agilismo

Herramientas

eXtreme Programming

… a debatir

Contenido

Page 3: Agilismo - Métodos y herramientas

#Motivación

Page 4: Agilismo - Métodos y herramientas

Motivación

Page 5: Agilismo - Métodos y herramientas

Motivación

Page 6: Agilismo - Métodos y herramientas

Motivación

Imagen: http://blog.puntiel.com/

¿Somos baratos? ¿Somos rápidos? ¿Somos buenos?

Page 7: Agilismo - Métodos y herramientas

Motivación

Imagen: http://blog.puntiel.com/

El cliente obtiene lo que paga (tiempo y calidad). El desarrollador cobra lo que hace. El gestor sabe cuánto puede hacer su equipo.

Page 8: Agilismo - Métodos y herramientas

Motivación - Objetivos

Desarrollo en equipo profesionalizado. El equipo sabe cuánto se tarda en hacer las cosas. El equipo sabe cuánto cuesta hacer las cosas. La empresa gestiona sus recursos: mejores sueldos, mejores productos y/o proyectos de innovación.

Page 9: Agilismo - Métodos y herramientas

#Agilismo

Page 10: Agilismo - Métodos y herramientas

Agilismo

Metodología Herramientas

Extreme Programming Manifiesto ágil: refactoring, tests, CI,…

Scrum Roles, time-boxing, backlog, sprints,…

Lean Development JIT, Pull System, Kanban,…

Page 11: Agilismo - Métodos y herramientas

Agilismo - DISCLAIMER

Yo no sé. Me suenan las cosas, he ido a charlas, he experimentado (poco). Scrum Master es una profesión. Quier-o/emos aprender y expermientar. Si alguien sabe, que lo diga; o la empresa contrata a alguien que sepa, ¡welcome!

Page 12: Agilismo - Métodos y herramientas

Agilismo – My way

Iterativo: cada X días se repite el proceso. Incremental: si no aporta valor, no lo hago. Entrega continua: NO significa “siempre”, significa cada iteración. Historias de usuario: tareas/issues definen qué se hace, con qué finalidad y cómo se va a evaluar la funcionalidad. También cuánto esfuerzo implica y cuánto supone esa funcionalidad. Peer review: nada entra en producción que no haya sido validado por otro (pull request) y funcione (¡tests!).

Page 13: Agilismo - Métodos y herramientas

Agilismo - @jmbeas

Page 14: Agilismo - Métodos y herramientas

Agilismo – Backlog

El backlog contiene todas las funcionalidades de la aplicación ORDENADAS según prioridad del cliente. En cada sprint se selecciona un conjunto de items que son los que se van a ejecutar y mostrar al final del sprint. Un item candidato tiene que estar perfectamente definido en funcionalidad (puntos función) y por el equipo (story points). ¡No puede haber dudas!

Imagen: http://www.informit.com/

Page 15: Agilismo - Métodos y herramientas

Agilismo – Issues

Específica (¡no hay dudas!) Medible en funcionalidad y tiempo. Criterios de aceptación (¡nada subjetivo!) Realizable (durante el sprint)

Hª de usuario –vs– Job stories

Page 16: Agilismo - Métodos y herramientas

Agilismo – Scrumban

Imagen: https://www.crisp.se/gratis-material-och-guider/kanban

Sprint n Sprint (n-1)

Diagrama Kanban: lo ideal es un póster con post-its…

Sprint n-(k+1) Sprint n+k

Page 17: Agilismo - Métodos y herramientas

#Herramientas

Page 18: Agilismo - Métodos y herramientas

Herramientas – Pull Request

Cada issue (feature) se desarrolla en paralelo por una persona durante un sprint. Al terminarla hace un pull request (PR), petición para incorporarla a la rama de desarrollo (dev). Todo PR es validado mínimo por otra persona (peer review) antes de incorporarse a la rama de desarrollo.

Imagen: https://mockupstogo.mybalsamiq.com/mockups/4191.png

Selected Doing

Doing Done

Done Deploy

Page 19: Agilismo - Métodos y herramientas

Herramientas – DVCS

Imagen: http://nvie.com/

+Info: http://nvie.com/posts/a-successful-git-branching-model/

Page 20: Agilismo - Métodos y herramientas

Herramientas – DVCS

Control de VERSIONES: changelog, alfa, beta, release,…

Imagen: https://mockupstogo.mybalsamiq.com/mockups/4191.png

Page 21: Agilismo - Métodos y herramientas

Imagen: http://nvie.com/

Ramas principales (origin): master: production-ready

develop: integration branch

Pull requests Compilaciones automáticas

Versiones

Herramientas – DVCS

Page 22: Agilismo - Métodos y herramientas

Imagen: http://nvie.com/

Ramas de características (feature-): No existen en origin

Son temporales (o se terminan o se descartan)

Herramientas – DVCS

Page 23: Agilismo - Métodos y herramientas

Imagen: http://nvie.com/

Ramas de lanzamiento (release-): NO añaden nuevas features.

Incorporan bug-fixes

Herramientas – DVCS

Page 24: Agilismo - Métodos y herramientas

Imagen: http://nvie.com/

Ramas de revisiones (hotfix): SOLO bugs críticos.

Incorporan bug-fixes

Herramientas – DVCS

Page 25: Agilismo - Métodos y herramientas

#eXtreme Programming

Page 26: Agilismo - Métodos y herramientas

Clean code

Complejidad ciclomática Código duplicado

Tests: Unitarios, TDD, BDD Analizadores estáticos de código

Page 27: Agilismo - Métodos y herramientas

#Debatir

Page 28: Agilismo - Métodos y herramientas

A debatir

Compromiso. Requiere esfuerzo e implicación. ¿Hasta dónde queremos llegar? Necesitamos un proyecto para aplicar todo esto. TDD: a qué nivel llevamos los tests. Scrumban? Tamaño de iteración Roles

Page 29: Agilismo - Métodos y herramientas

A debatir - Tecnologías

DVCS: Git, Mercurial, Bazaar,… Tests: Google Test, Boost Unit Test Framework,… CI: Jenkins, Bamboo, … Sistema de gestión de código: Github.com,… Gestión de issues: Redmine, Trac, Github.com/Issues,…

Page 30: Agilismo - Métodos y herramientas