Agile Teams play "Hard Choices" and payoff Software Debt
Adrian Lupei - Software Engineering Manager Bitdefender -
- Consultant Confucius - [email protected]
US Debt Clock.org • 19.09.2012 22:17
• 19.09.2012 22:18
• ~1 minut = 2.525.469$
2
3
• Moto Site: Ignorance is bliss, Reality is Not.
• Titlul: The European Super Highway of Debt
• 2.91 Trilioane Euro împrumutați de către PIIGS (Portugalia, Italia, Irlanda, Grecia, Spania) de la 13 bănci
DEMON OCRACY.INFO
http://demonocracy.info/infographics/eu/debt_piigs/debt_piigs.html
4
5
Lungime totala: 26.7km
Agile Software Development
• Beneficii
– Crește vizibilitatea
– Crește adaptabilitate
– Crește valoarea livrată
– Scade riscul
• Beneficiile de mai sus se transforma în probleme la implementare mai ales dacă nu există suport din partea organizației
6
Datoria în software
• De unde vine? – Technical Debt – fără unit teste
– Quality Debt – fără teste automate funcționale / acceptanță
– Configuration Management Debt – fără continuous integration
– Design Debt – rescrierea ca singura soluție pentru a adăuga un feature nou
7
Datoria în software
• Probleme termen scurt
– Intarzieri mici
– Nici o problema
• Probleme termen lung
– Probleme la demo în fața clienților
– Imposibilitatea de a valida și livra un fix rapid
– Pierdere clienți -> Faliment
8
Datoria în software
• Expresii comune – Nu avem timp acum, dar vom aloca mai
târziu – Nu avem nevoie de asta acum, dar o să facem
când o să fie nevoie – Pe unde am mai lucrat nu am facut dintr-
astea și treaba mergea bine – Nu știm cum se face sau nu am mai făcut așa
ceva – Nu avem timp să facem asta acum, dar dacă
se întâmplă ceva nasol o să gasim noi o soluție
– La mine merge – La noi nu se reproduce bugul – Trebuia să fie gata ieri
9
Datoria în software
• Soluția de la Bitdefender:
– Livrarea și testarea continuă poate reduce datoria în software
• Pasul urmator
– Release/Deployment continuu?
(Etsy.com)
10
Jocul Hard Choices
• Adaptat de Carnegie Mellon Software Engineering Institute după Short Cut: Game about Speed and Risk
• Simulează ciclul de dezvoltare software prin
– Incertitudine
– Risc
– Opțiuni
– Datoria tehnică
11
Jocul Hard Choices
12
Jocul Hard Choices
• Reguli – Pot juca 2, 3, 4 persoane – Jucătorii se pot mișca în orice direcție – Primul jucător care termină jocul primește 5 puncte, al
doilea 3 puncte, iar al treilea 1 punct – La final fiecare jucător primește câte un punct pentru
fiecare carte ”unealta” colectată – Pentru a ajunge la final trebuie aruncat zarul corespondent
numărului de pași rămași – Jocul se termină când mai rămâne un singur jucător la
masă – Jucătorul care acumulează cele mai multe puncte este
declarat câștigător
13
Jocul Hard Choice
• Pătratele “Hard Choices” - Jucătorii aleg dacă vor să treacă peste pod sau vor să colecteze puncte
• Cărțile de tip ”pod/scurtătură” - scad cu 1 rezultatul fiecărei aruncări de zar
• Pentru a scăpa de o carte de tip ”pod/scurtătură” – se poate renunța la o aruncare de zar
• Cărțile de tip ”unealtă” – Se ridică cartea dacă jucatorul nu are nici o carte de
acest tip – Dacă jucătorul mai are o carte se poate colecta cartea
sau se poate obține o nouă aruncare de zar
14
Jocul Hard Choices
• Strategii simple 1. Jucătorul alege întotdeauna
scurtătura 2. Jucătorul alege scurtătura
dar plăteste imediat stând o tură fără să joace
3. Jucătorul nu alege niciodata scurtătura
• Rezultate – Strategia 2 este cea
câștigătoare – Strategiile 1 si 3 sunt
aproximativ la fel de eficiente
15
Jocul Hard Choices
• Ce se întâmplă dacă … ?
– Stăm două ture în loc de una când trebuie să plătim datoria (technical debt sprint)
– Suntem penalizați cu două puncte la fiecare aruncare de zar dacă avem o carte de tip ”pod/scurtatura”
16
Concluzii
• Datoria în software acumulată de echipe este strâns legată de – Ignorarea unor practici – Amânarea unor decizii
• La nivel de individ – Nu cumva exista posibilitatea
ca în altă companie să găsești o datorie și mai mare?
– Cum faci să fii acceptat într-o echipă unde practicile precum TDD și pair programming au devenit obișnuința?
• “Debt is like any other trap, easy enough to get into, but hard enough to get out of.” -Henry Wheeler Shaw (umorist 1818-1885)
17
Resurse
• Managing Software Debt – Chris Sterling
• Continuous Delivery – Jez Humble, David Farley
• Avoiding System Bankruptcy – How to Pay Off your Technical Debt – Amir Kolsky
18
Q & A
19