software debt: qué es y cómo gestionarlo holísticamente

Post on 11-Jun-2015

1.153 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Software Debt talk - Agiles 2013, Lima - Perú - CAS 2014, Barcelona - España

TRANSCRIPT

SOFTWARE DEBT QUÉ ES Y CÓMO GESTIONARLO HOLÍSTICAMENTE

ANGEL NÚÑEZ AGILE CONSULTANT & TRAINER

angel.nunez@kleer.la @snahider

UN CASO REAL M

arch

- 20

01

Oct

ober

- 20

01

May

- 20

02

Dec

embe

r - 2

002

July

- 20

03

Febr

uary

- 20

04

Sep

tem

ber -

200

4 A

pril

- 200

5 N

ovem

ber -

200

5 Ju

ne -

2006

Ja

nuar

y - 2

007

Aug

ust -

200

7 M

arch

- 20

08

Oct

ober

- 20

08

May

- 20

09

Dec

embe

r - 2

009

July

- 20

10

Febr

uary

- 20

11

Sep

tem

ber -

201

1 A

pril

- 201

2 N

ovem

ber -

201

2 Ju

ne -

2013

V1

V2 V3 V4 V4.5 V5 V6 V7 V8

•  Estimado No Cumplido Siguiente Release : Marzo 2013 •  Hoy: June 2013 •  Nuevo Estimado Siguiente Release : Julio 2013

Issues Posted vs Fixed

Drupal Core Versión: 8.0 Dev Uno de los CMS más usados y populares del mundo. •  Casa Blanca •  Warner Bross Records •  Emmy •  Ubuntu

LA VICTIMA

Janu

ary

- 200

1 S

epte

mbe

r - 2

001

May

- 20

02

Janu

ary

- 200

3 S

epte

mbe

r - 2

003

May

- 20

04

Janu

ary

- 200

5 S

epte

mbe

r - 2

005

May

- 20

06

Janu

ary

- 200

7 S

epte

mbe

r - 2

007

May

- 20

08

Janu

ary

- 200

9 S

epte

mbe

r - 2

009

May

- 20

10

Janu

ary

- 201

1 S

epte

mbe

r - 2

011

May

- 20

12

Janu

ary

- 201

3 S

epte

mbe

r - 2

013

May

- 20

14

Janu

ary

- 201

5

RELEASE TIMELINE

V1

V2 V3 V4 V4.5 V5 V6 V7 V8

¿?

EL PROBLEMA

http://xjm.drupalgardens.com/blog/technical-debt-drupal-8-or-when-will-it-be-ready

¿QUÉ ES LA DEUDA TÉCNICA? Shipping first-time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite. The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt.

DEFINICIÓN

"Obligaciones que una organización toma cuando disminuye la calidad interna del producto para lograr metas a corto plazo pero que son perjudiciales a largo plazo"

Angel Núñez (@Snahider)

¿CÓMO LUCE LA DEUDA TÉCNICA?

https://elearning.industriallogic.com/gh/submit?Action=PageAction&album=trw&path=recognizingSmells/technicalDebt/technicalDebtMismanagement&devLanguage=Cpp

Tiempo

Respuesta al Cliente

Cos

to d

el c

ambi

o (C

oC)

CoC Actual

CoC Óptimo

Deuda Técnica

LA DEUDA TÉCNICA ES MALA

¿POR QUE NOS DEBE PREOCUPAR?

Consecuencias

Incrementa el tiempo de entrega

Numero significativo de defectos

Aumento en los costos de desarrollo y soporte

Disminuye la predictibilidad

Frustración

Disminuye la satisfacción del cliente

Bajo Rendimiento

LA DEUDA TÉCNICA ES ADICTIVA

"La deuda técnica es

como una adicción

a las drogas.

Un vez que empiezas a

hackear el código,

el código pide más."

Tomar Deuda Técnica

Acumula la Deuda

(Más) Incesante Presión

Reduce Velocidad

Equipo

No pagar Duda

Técnica

CICLO VICIOSO

LA DEUDA TÉCNICA ES BUENA

DECISIÓN ESTRATÉGICA PRUDENTE

•  Entrega rápida al mercado para obtener feedback.

•  Reducir costos iniciales, generar ingresos y autofinanciar el producto.

•  Fechas sensitivas de entrega.

CLEAN CODE Y DISCIPLINA SON OBLIGATORIOS

•  El código es limpio? El código tiene pruebas?

•  Hay un objetivo que nos permita aprender?

•  He estimado el costo beneficio?

•  Hay un plan para pagar la deuda?

•  No he introducido más deuda sobre deuda existente.

ENFRENTA LA CRUDA REALIDAD

LA DEUDA DE SOFTWARE ES

INEVITABLE

EL PROBLEMA NO ES ELIMINAR LA DEUDA

SINO GESTIONARLA

El responsable no sólo es el desarrollador

El problema

no sólo es el código

La solución no sólo es refactoring

NO CAIGAS EN LA TRAMPA

SOFTWARE DEBT

Technical Debt

Quality Debt

Configuration Management Debt

Infrastructure Debt

Design Debt

GESTIÓN HOLÍSTICA Involucrar y

Educar

Visualizar y Medir

Sostener la Calidad

Atender y Pagar

Gestionar el Portafolio

Planificar y Experimentar

Negocio

Dev Team

INVOLUCRAR Y EDUCAR

INVOLUCRAR AL PRODUCT OWNER

Patrocinador de la reducción de la deuda

de software

USAR LA METÁFORA COMO HERRAMIENTA DE COMUNICACIÓN

"El concepto (Software Debt) es 1/3 útil para tomar de decisiones y 2/3 herramienta de comunicación"

Steve McConnell

EVALUAR DECISIONES

Para utilizar la deuda de software de manera

estratégica y beneficiosa, debemos entender como

nuestras decisiones afectan económicamente.

EJEMPLO

Alternativa 1 ( Tomando Deuda)

Alternativa 2 ( Sin Deuda)

EJEMPLO

¿Qué alternativa elegirían?

Tomando Deuda (Opción 1)

Evitando Deuda (Opción 2)

Costo Mensual de Desarrollo $100k $100k

Meses Desarrollo 10 13

Total Costo Desarrollo $1M $1.3M

Perdidas en Ventas $450k

Atender Deuda - Meses 4

Atender Deuda Costo $400

Costo Total $1.4M $1.75M

Otros costos de atender la deuda

X+Y+Z

Costo Total Real $1.4M +x +y +z $1.75M

VISUALIZAR Y

MEDIR

MÉTRICAS DE CÓDIGO

VELOCITY & BUGS

0

5

10

15

20

25

30

35

40

Time

Velocity

Bugs found by PO

BACKLOGS

Feature C

Defect 23

Refactor X

Feature B

Feature A

Software Debt

Software Debt Backlog Software Debt en el Product Backlog

CÓMO DRUPAL MIDE LA DEUDA TÉCNICA

SOSTENER EL RITMO

Y LA CALIDAD

PULL SYSTEMS

Permite alcanzar un ritmo sostenible de trabajo y que el equipo tenga poder y responsabilidad sobre la

calidad.

DEFINITION OF DONE

PRÁCTICAS TÉCNICAS

ATENDER Y PAGAR LA DEUDA

ENFOQUES PARA PAGAR LA DEUDA

Enfoques

No Hacer Nada (No todas las deudas tienen que ser pagadas)

Pagar la deuda incrementalmente

Aplicar “Boy Scout Rule” (Atender la deuda cuando te topes con ella)

Pagar la deuda mientras se realiza trabajo valioso para el cliente

Test case

Change skin Security alert See transaction history Block account Add new user Sort query results Deposit cash Validate transfer

PRIORIZAR EL BACKLOG 1. Listar/Visualizar la Deuda (Test Automation)

Test case Riesgo Automation Cost (points)

Change skin Security alert See transaction history Block account Add new user Sort query results Deposit cash Validate transfer

PRIORIZAR Y EL BACKLOG 2. Clasificar (Riesgo y Costo)

Test case Riesgo Automation Cost (points)

Change skin low 20 sp Security alert high 13 sp See transaction history med 1 sp Block account high 0.5 sp Add new user low 3 sp Sort query results med 8 sp Deposit cash high 1 sp Validate transfer high 5 sp

PRIORIZAR Y EL BACKLOG 2. Clasificar (Alto Riesgo – Bajo Costo)

Test case Riesgo Automation Cost (points)

Manual Test Cost (hours)

Change skin low 20 sp 0.5 hrs Security alert high 13 sp 1 hr See transaction history med 1 sp 3 hrs Block account high 0.5 sp 5 hrs Add new user low 3 sp 0.5 hrs Sort query results med 8 sp 2 hrs Deposit cash high 1 sp 1.5 hrs Validate transfer high 5 sp 3 hrs

PRIORIZAR Y EL BACKLOG 2. Clasificar (Columnas adicionales si es necesario)

Test case Riesgo Automation Cost (points)

Manual Test Cost (hours)

Block account high 0.5 sp 5 hrs Deposit cash high 1 sp 1.5 hrs Validate transfer high 5 sp 3 hrs Security alert high 13 sp 1 hr See transaction history med 1 sp 3 hrs Sort query results med 8 sp 2 hrs Add new user low 3 sp 0.5 hrs Change skin low 20 sp 0.5 hrs

PRIORIZAR Y EL BACKLOG 3.Priorizar

DISTRIBUIR EN CADA SPRINT

http://www.jfokus.se/jfokus11/preso/jf11_ScrumAndXPBeyondTheTrenches.pdf

PLANIFICAR Y EXPERIMENTAR

TOYOTA KATA

INCLUIR LA CALIDAD EN LA GESTIÓN DEL PORTFOLIO

MEDIDA DE ÉXITO TRADICIONAL

Schedule Cost

Scope

Problemas •  Se debe medir Outcomes

no Outputs. (Business Value).

•  No considera la Calidad.

“Podremos ignorar la calidad pero los problemas de la

calidad nunca nos ignorarán”

AGILE TRIANGLE

Constraints (Scope, Schedule, Cost)

Quality

Value

MÉTRICA Medida cuantificable y monetaria

de la "NO CALIDAD".

Distribución

Ratio de la Deuda

Costo de reparar la deuda

CUANTIFICAR LA DEUDA

•  El riesgo de ejecución es aceptable?

•  El producto puede continuar dando valor en el futuro?

•  Definir límites para tomar decisiones informadas.

SQALE

PREGUNTAS

angel.nunez@kleer.la @snahider

ANGEL NÚÑEZ

SOFTWARE DEBT ASSESMENT

Te ayudamos a entender y mejorar tu software desde una perspectiva de riesgo

top related