Está en la página 1de 37

Prácticas

Técnicas
para DUMMIES
Lo que siempre quisiste
entender sobre las mil siglas
TDD, BDD, CI, CD, TBD, ...
Lina Prato
Presentación Scrum Master
lina.prato@grupoesfera.com.ar

Mariano Tugnarelli
Desarrollador
mariano.tugnarelli@grupoesfera.com.ar

Javier Gutierrez
Scrum Master
javier.gutierrez@grupoesfera.com.ar

Sebastián Stremel
Desarrollador
sebastian.stremel@grupoesfera.com.ar
Propuesta

Recorrido por las prácticas técnicas para el


desarrollo ágil
- puntualizando en su intención -
● Test Automation
Algunas ● Pair Programming
Prácticas ● Mob Programming
● Continuous Integration (CI)
Técnicas ● Deploy Automatizado
● Test-Driven Development (TDD)
● Acceptance Test-Driven Development (ATDD)
● Behavior-Driven Development (BDD)
● Collective Code Ownership
● Refactoring
● User Story Slicing
● Trunk-Based Development
● Continuous Delivery (CD)
● …
Descripción simple de la práctica técnica.
Nombre de la
Práctica
Técnica

Soporte: ......... ● Aportes por practicarla consistente, sostenida y


Dificultad: . . . . . . . . .
efectivamente
Acuerdo: . . . . . . . . .

● Contribuciones por adoptar la práctica en el equipo


Soporte:
Características ● Calidad
● Evolución
Dificultad*:
● Baja
● Media
● Alta
Soporte: .........
Dificultad: . . . . . . . . .
Acuerdo*:
Acuerdo: . . . . . . . . .
● Bajo
● Medio
● Alto

* Comparación relativa entre prácticas


¿Quiénes son los practicantes?
Practicantes

Equipo técnico

Representantes del
Negocio

Facilitadores (SM)
Prácticas

Empezamos ...
Diseñar, implementar y sostener una estrategia de
Test automatización de pruebas que ejerciten
Automation frecuentemente y de manera desatendida el
producto
componentes unitarios + integraciones + interfaces + flujos

Soporte: Calidad
Dificultad: Media
● Confianza en tener todo el tiempo un producto liberable
Acuerdo: Medio
● Coraje para introducir cambios

● Reproducir fallos

● Regresiones completas y rápidas


Dos personas programando, analizando,
Pair diseñando y probando simultáneamente:
Programming
driver + navigator

Soporte: Calidad
Dificultad: Baja
● Mejora las habilidades técnicas
Acuerdo: Medio
● Socializa las prácticas

● Permite el aprendizaje cruzado

● Mejora la calidad
El deploy del producto en cualquier ambiente está
Deploy completamente automatizado, no requiere
Automatizado intervención humana.

Soporte: Calidad
Dificultad: Bajo
● Reduce los dolores de deploy
Acuerdo: Bajo
● Independiza al equipo para hacer deploy

● Simplifica y acelera el deploy


Los miembros de un equipo integran su trabajo
Continuous con frecuencia, por lo menos una vez al día.
Integration
Cada cambio se integra y verifica mediante una
build automatizada que incluye las pruebas.

Soporte: Calidad
Dificultad: Media
● Disponibiliza constantemente una versión liberable del producto
Acuerdo: Alto
● Detectar errores rápidamente

● Disminuye los riesgos de integración

● Fomenta el compromiso y la disciplina del equipo


El equipo entero trabaja en la misma cosa al
Mob mismo tiempo, en el mismo espacio* y en la
Programming misma computadora*.

driver + navigator + mob

Soporte: Calidad
Dificultad: Baja
● Fomenta la propiedad compartida sobre las decisiones
Acuerdo: Alto
● Propicia espacios de colaboración

● Genera espacios de construcción de acuerdos sobre prácticas

● Mejora la colaboración dentro del equipo


Desarrollar el código de la prueba antes que el
Test código productivo.
Driven
Técnica de diseño.
Development

Soporte: Calidad
Dificultad: Medio
● Propicia el entendimiento temprano del problema y el feedback
Acuerdo: Bajo temprano de la solución diseñada

● Reduce el sobre-diseño

● Fomenta el desarrollo de código testeable


Antes de comenzar a implementar una historia*,
Acceptance el equipo y el PO definen cuáles serán las pruebas
Test de aceptación automatizadas que se usarán
Driven como criterio para darla por terminada.
Development
Soporte: Evolución
Dificultad: Media
● Reduce la brecha entre el equipo técnico y las expectativas
Acuerdo: Medio sobre una historia

● Explicita los escenarios cubiertos por la implementación

● Ejercitar frecuente y automáticamente los flujos del sistema de


punta a punta
Cualquier desarrollador o desarrolladora del
Collective equipo puede cambiar cualquier línea de código.
Code
Ownership

Soporte: Evolución
Dificultad: Bajo
● Nadie se convierte en un cuello de botella
Acuerdo: Alto
● Posibilita el aprendizaje cruzado

● Fomenta la responsabilidad compartida


Modificación sistemática del código manteniendo
Refactoring su comportamiento externo pero mejorando su
calidad interna.

Soporte: Evolución
Dificultad: Baja
● Permite aceptar soluciones imperfectas
Acuerdo: Bajo
● Ayuda a entender y mejorar el código para otros

● Permite acotar la complejidad al evolucionar

● Genera espacios de reflexión sobre lo hecho


Cortar las historias* en porciones de software
User usable, más finas.
Story
ideales ⇒ suficientemente buenas
Slicing
Solución factible en el tiempo y con el equipo
disponible.
Soporte: Evolución
Dificultad: Alta
● Permite maximizar la entrega de valor
Acuerdo: Bajo
● Fomenta la reducción el WIP

● Acelera el feedback
Una estrategia de control de versiones de código
Trunk en la cual los desarrolladores y desarrolladoras
Based casi siempre realizan los cambios directamente
Development en la rama principal o "trunk".

Soporte: Evolución
Dificultad: Media
● Asegura que todo el código se integre continuamente
Acuerdo: Alto
● Asegura que cada desarrollador y desarrolladora tome los
cambios del resto inmediatamente

● Evita las complicadas integración de los cambios


Guiar el desarrollo incremental mediante la
Behavior promoción de conversaciones sobre el
Driven comportamiento esperado del sistema y la
Development producción de especificaciones ejecutables.

Soporte: Evolución
Dificultad: Alta
● Genera un lenguaje común centrado en el negocio
Acuerdo: Alto
● Disminuye la brecha entre el equipo técnico y el negocio

● Genera documentación ejecutable de las reglas de negocio que


respaldan la verificación y la evolución recurrentes
Es un conjunto de prácticas que permiten
Continuous entregar cambios en producción a demanda de
Delivery manera segura, rápida, frecuente y sostenible.
automatización + gestión de configuración + calidad

Soporte: Evolución
Dificultad: Alta
● Releases repetibles, frecuentes, confiables y predecibles
Acuerdo: Alto
● Reduce el stress de las personas involucradas en el release

● Rápida entrega de features y bugfixes

● Feedback rápido y frecuente


...
… si puede generar
Facilitadores, Scrum
conciencia,
Master no técnicxs, no
pedir ayuda e
puede enseñarlas...
impulsarlas.
Preguntas
MUCHAS
GRACIAS
Bibliografía

Material recomendado
Kent Beck, Cynthia Andres

Extreme Programming
Explained
Embrace Change
(The XP Series)

➕ [ Pair Programming ]
➕ [ Collective Code Ownership ]
Jez Humble, David Farley

Continuous Delivery
Reliable Software Releases through Build, Test,
and Deployment Automation

➕ [ Continuous Delivery ]
➕ [ Continuous Integration ]
➕ [ Trunk-based Development ]
➕ [ Deploy Automatizado ]
➕ [ Test Automation ]
Kent Beck

Test-Driven
Development
by Example

➕ [ Test-Driven Development ]
➕ [ Test Automation ]
Steve Freeman, Nat Pryce

Growing Object-Oriented
Software, Guided by
Tests

➕ [ Test Automation ]
➕ [ Test -Driven Development ]
➕ [ Acceptance Test-Driven Development ]
Gaspar Nagy, Seb Rose

Discovery
Explore behaviour using
examples
(BDD Books)

➕ [ Behavior-Driven Development ]
Gaspar Nagy, Seb Rose

Formulation
Document examples with
Given/When/Then
(BDD Books)

➕ [ Behavior-Driven Development ]
Martin Fowler

Refactoring
Improving the Design of
Existing Code

➕ [ Refactoring ]
Nicole Forsgren, Jez Humble, Gene Kim

Accelerate
Building and Scaling High Performing Technology
Organizations

➕ [ Continuous Delivery ]
Gojko Adzic

Specification by Example
How Successful Teams
Deliver the Right Software

➕ [ Behavior-Driven Development ]
➕ [ Acceptance Test-Driven Development ]
Jeff Patton, Peter Economy

User Story Mapping


Discover the Whole Story,
Build the Right Product

➕ [ User Story Slicing ]

También podría gustarte