Un día en un equipo ágil 
de desarrollo móvil 
Javier Armendáriz 
Mikel Elorz
¿De dónde venimos? 
Tus tarjetas de fidelización en el móvil
¿Qué hacemos?
¿Qué vamos a contar? 
● Metodología Ágil: Scrum 
● Test Driven Development (TDD) 
● Control de versiones 
● Preguntas
Metodología Ágil 
Scrum
Herramientas 
JIRA + JIRA Agile 
● 20$ - 10 usuarios
Herramientas 
Tablón físico
Tareas 
● Tipo 
○ Bugs 
○ Historias 
○ Improvements 
● Historias desde un punto de vista 
● Bugs describen el problema
Iteraciones 
1 semana 
● Reunión Scrum diaria 
● Demo 
● Retrospectiva 
● Planificación de Sprint
Reunión Scrum diaria 
● Hora fijada, 9:15am 
● De pie 
● Cada uno: 
○ ¿Qué hice ayer? 
○ ¿Qué voy a hacer? 
○ Problemas 
●...
Demo 
● Viernes a la tarde 
● Compilar alphas de antemano 
● Tarde: 1€/5 min 
● Demostrar bugs 
● Demostrar tareas 
● Agru...
Retrospectiva 
¿Qué ha ido bien? 
¿Qué ha ido mal? 
¿Qué se puede mejorar?
Planificación de Sprint 
● Reordenar tareas 
● [Planning poker] 
● Valoramos los bugs: cantidad y dificultad 
● Elegimos c...
Planning Poker 
● Leemos el nombre de la historia 
● Explicamos su alcance 
○ Surgen preguntas interesantes 
● Estimación ...
Test Driven Development 
TDD
¿Porqué? 
Al principio usábamos TDD siempre que 
podíamos 
● Inexperiencia 
○ Al plantear los tests 
○ En el lenguaje de p...
TDD no es el Santo Grial de la 
programación
Tips (Do's & Don'ts) 
Si nos excedemos en el uso de TDD, pueden 
darse malas prácticas.
Tips (Do's & don'ts) 
● Abusar de los mocks 
a. Los test se vuelven tediosos de mantener 
b. Acabamos probando el resultad...
Tips (Do's & Don'ts) 
Esto nos lleva a tener clases poco usables (y 
que induce a errores)
Tips (Do's & Don'ts) 
Over-engineering
Tips (Do's & Don'ts)
Tips (Do's & Don'ts) 
● Hacer tests de implementaciones concretas 
en lugar de guiarnos por las 
especificaciones 
○ Suele...
Tips (Do's & Don'ts) 
● Otras malas prácticas: 
○ Introducir dependencias entre tests 
○ "Romper" las reglas para maximiza...
Lecciones positivas 
Aplicar los principios del TDD en el día a día 
nos ha enseñado valiosas lecciones 
● Buenas práctica...
Single responsibility principle 
ScanIM 
CardPoints 
RewardCatalog 
Promos 
CardImage
Open-Close principle 
BaseActionBarActivity 
DialogActivity 
RequestHandlerActivity
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
En definitiva... 
● TDD es una herramienta de trabajo 
○ Bien usado ayuda a escribir buen código y facilita 
su mantenimie...
¿Cuándo usaríamos TDD? 
Librerías/APIs 
● Código estable con pocos cambios en el 
futuro 
● Documentación para el cliente ...
Control de versiones
¿Cuál escoger? 
$ git + Bitbucket
Trabajo en equipo 
● ¿Colaborar y compartir sin dolores de 
cabeza? 
¿ ?
Trabajo en equipo 
● Modelo de ramas 
git-flow 
● Adaptado 
○ Desarrollo: «3.5.x» 
○ Maintenance: «3.4.x-maintenance 
» 
○...
Trabajo en equipo 
Evitar: 
conflictos++
Trabajo en equipo 
Solución: rebase
Trabajo en equipo 
Resultado: 
conflictos--
Trucos 
● git merge --no-ff 
○ Preserva la estructura de 
ramas 
○ Por defecto git aplasta 
(squash) los commits 
● git re...
Trucos 
● gitx 
○ Interfaz visual 
● git mergetool 
○ Indispensable para resolver 
conflictos 
● git commit --amend 
○ Arr...
Trucos 
● git cherry-pick 
○ Intenta aplicar los cambios de un commit 
cualquiera 
○ Útil para aplicar un parche de una ra...
Trucos 
git config --global alias.hist "log --color --graph -- 
pretty=format:'%Cred%h%Creset |%C(yellow)%d%Creset %s % 
C...
¿ 
¿? 
? ? 
? 
¿ ? 
? 
¿? 
¿? 
? 
¿ 
? 
? 
¿? 
? 
? 
? 
¿ 
? 
¿? 
? 
¿? 
¿ 
? 
¿ 
? 
? 
¿ 
¿ 
? 
? 
Preguntas 
Descarga: b...
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
Próxima SlideShare
Cargando en…5
×

Agile university day - Un día en un equipo ágil de desarrollo móvil

405 visualizaciones

Publicado el

Charla "Un día en un equipo ágil de desarrollo móvil" presentada en el Agile University Day de Navarra

Publicado en: Software
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
405
En SlideShare
0
De insertados
0
Número de insertados
47
Acciones
Compartido
0
Descargas
2
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Agile university day - Un día en un equipo ágil de desarrollo móvil

  1. 1. Un día en un equipo ágil de desarrollo móvil Javier Armendáriz Mikel Elorz
  2. 2. ¿De dónde venimos? Tus tarjetas de fidelización en el móvil
  3. 3. ¿Qué hacemos?
  4. 4. ¿Qué vamos a contar? ● Metodología Ágil: Scrum ● Test Driven Development (TDD) ● Control de versiones ● Preguntas
  5. 5. Metodología Ágil Scrum
  6. 6. Herramientas JIRA + JIRA Agile ● 20$ - 10 usuarios
  7. 7. Herramientas Tablón físico
  8. 8. Tareas ● Tipo ○ Bugs ○ Historias ○ Improvements ● Historias desde un punto de vista ● Bugs describen el problema
  9. 9. Iteraciones 1 semana ● Reunión Scrum diaria ● Demo ● Retrospectiva ● Planificación de Sprint
  10. 10. Reunión Scrum diaria ● Hora fijada, 9:15am ● De pie ● Cada uno: ○ ¿Qué hice ayer? ○ ¿Qué voy a hacer? ○ Problemas ● Burndown
  11. 11. Demo ● Viernes a la tarde ● Compilar alphas de antemano ● Tarde: 1€/5 min ● Demostrar bugs ● Demostrar tareas ● Agrupar por funcionalidad ● Apuntar nuevos bugs ● ¡Cuidado con alargarse!
  12. 12. Retrospectiva ¿Qué ha ido bien? ¿Qué ha ido mal? ¿Qué se puede mejorar?
  13. 13. Planificación de Sprint ● Reordenar tareas ● [Planning poker] ● Valoramos los bugs: cantidad y dificultad ● Elegimos cuánto entra
  14. 14. Planning Poker ● Leemos el nombre de la historia ● Explicamos su alcance ○ Surgen preguntas interesantes ● Estimación individual ● Discusión de discrepancias ● Acuerdo
  15. 15. Test Driven Development TDD
  16. 16. ¿Porqué? Al principio usábamos TDD siempre que podíamos ● Inexperiencia ○ Al plantear los tests ○ En el lenguaje de programación
  17. 17. TDD no es el Santo Grial de la programación
  18. 18. Tips (Do's & Don'ts) Si nos excedemos en el uso de TDD, pueden darse malas prácticas.
  19. 19. Tips (Do's & don'ts) ● Abusar de los mocks a. Los test se vuelven tediosos de mantener b. Acabamos probando el resultado de los mocks en lugar del SUT c. Probablemente la clase a implementar tenga demasiados parámetros.
  20. 20. Tips (Do's & Don'ts) Esto nos lleva a tener clases poco usables (y que induce a errores)
  21. 21. Tips (Do's & Don'ts) Over-engineering
  22. 22. Tips (Do's & Don'ts)
  23. 23. Tips (Do's & Don'ts) ● Hacer tests de implementaciones concretas en lugar de guiarnos por las especificaciones ○ Suele ocurrir cuando hacemos tests después de implementar ○ Por ejemplo: si una clase realiza acciones sobre un Collection, no hacer los tests asumiendo que recibiremos un ArrayList. Podríamos recibir un TreeSet y debería funcionar (Principio de sustitución de Liskov)
  24. 24. Tips (Do's & Don'ts) ● Otras malas prácticas: ○ Introducir dependencias entre tests ○ "Romper" las reglas para maximizar la cobertura de los tests (ej: comprobar métodos privados) ○ Limitarse a probar los resultados esperables. Las excepciones y los casos límite son importantes. ○ No refactorizar las clases de tests unitarios.
  25. 25. Lecciones positivas Aplicar los principios del TDD en el día a día nos ha enseñado valiosas lecciones ● Buenas prácticas de desarrollo ○ Principios SOLID ● Criterios de nombrado de clases, métodos… ● El valor de hacer refactor ● Un estilo de programación común
  26. 26. Single responsibility principle ScanIM CardPoints RewardCatalog Promos CardImage
  27. 27. Open-Close principle BaseActionBarActivity DialogActivity RequestHandlerActivity
  28. 28. Liskov substitution principle
  29. 29. Interface segregation principle
  30. 30. Dependency inversion principle
  31. 31. En definitiva... ● TDD es una herramienta de trabajo ○ Bien usado ayuda a escribir buen código y facilita su mantenimiento ○ Usado en exceso da lugar a problemas y se convierte en una carga ● Si una herramienta resulta una carga, no hay que temer en abandonarla
  32. 32. ¿Cuándo usaríamos TDD? Librerías/APIs ● Código estable con pocos cambios en el futuro ● Documentación para el cliente Nuevos proyectos ● Utilidades: clases de peticiones a red, base de datos, helpers...
  33. 33. Control de versiones
  34. 34. ¿Cuál escoger? $ git + Bitbucket
  35. 35. Trabajo en equipo ● ¿Colaborar y compartir sin dolores de cabeza? ¿ ?
  36. 36. Trabajo en equipo ● Modelo de ramas git-flow ● Adaptado ○ Desarrollo: «3.5.x» ○ Maintenance: «3.4.x-maintenance » ○ Cada funcionalidad una rama: «feature/user-list»
  37. 37. Trabajo en equipo Evitar: conflictos++
  38. 38. Trabajo en equipo Solución: rebase
  39. 39. Trabajo en equipo Resultado: conflictos--
  40. 40. Trucos ● git merge --no-ff ○ Preserva la estructura de ramas ○ Por defecto git aplasta (squash) los commits ● git rebase -vip ○ [v] Verbose ○ [i] Previsualizar y modificar qué commits se aplican ○ [p] Conservar el árbol de commits
  41. 41. Trucos ● gitx ○ Interfaz visual ● git mergetool ○ Indispensable para resolver conflictos ● git commit --amend ○ Arregla el último commit ○ Añadir cambios olvidados ○ Cambiar el nombre del commit
  42. 42. Trucos ● git cherry-pick ○ Intenta aplicar los cambios de un commit cualquiera ○ Útil para aplicar un parche de una rama a otra ● git blame ○ ¡WTF! ¿Quién ha hecho semejante burrada? ○ Quién, cuándo y en qué commit se cambió cada línea
  43. 43. Trucos git config --global alias.hist "log --color --graph -- pretty=format:'%Cred%h%Creset |%C(yellow)%d%Creset %s % Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" git hist
  44. 44. ¿ ¿? ? ? ? ¿ ? ? ¿? ¿? ? ¿ ? ? ¿? ? ? ? ¿ ? ¿? ? ¿? ¿ ? ¿ ? ? ¿ ¿ ? ? Preguntas Descarga: bit.ly/quomai-agile-slides

×