Agile Teams play "Hard Choices" and payoff Software Debt Adrian Lupei - Software Engineering Manager Bitdefender - Consultant Confucius adrian.lupei@confucius.ro
US Debt Clock.org • 19.09.2012 22:17
• 19.09.2012 22:18
• ~1 minut = 2.525.469$
2
3
DEMON OCRACY.INFO • 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 http://demonocracy.info/infographics/eu/debt_piigs/debt_piigs.html 4
Lungime totala: 26.7km
5
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 dintrastea ș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