Upload
jgsogo
View
70
Download
2
Embed Size (px)
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,…