Agilismo - Métodos y herramientas

Preview:

Citation preview

#Agilismo (my way)

1. Métodos y Herramientas

Javier García Sogo

@jgsogo

Motivación

Agilismo

Herramientas

eXtreme Programming

… a debatir

Contenido

#Motivación

Motivación

Motivación

Motivación

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

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

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.

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.

#Agilismo

Agilismo

Metodología Herramientas

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

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

Lean Development JIT, Pull System, Kanban,…

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!

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!).

Agilismo - @jmbeas

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/

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

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

#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

Herramientas – DVCS

Imagen: http://nvie.com/

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

Herramientas – DVCS

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

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

Imagen: http://nvie.com/

Ramas principales (origin): master: production-ready

develop: integration branch

Pull requests Compilaciones automáticas

Versiones

Herramientas – DVCS

Imagen: http://nvie.com/

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

Son temporales (o se terminan o se descartan)

Herramientas – DVCS

Imagen: http://nvie.com/

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

Incorporan bug-fixes

Herramientas – DVCS

Imagen: http://nvie.com/

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

Incorporan bug-fixes

Herramientas – DVCS

#eXtreme Programming

Clean code

Complejidad ciclomática Código duplicado

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

#Debatir

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

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,…