SlideShare a Scribd company logo
Il tuoteamagilescrivecodice
“flaccido”?
Quando Scrum non è sufficiente
Stefano.muro@inspearit.com
@stefanoMuro
stefano_muro
https://www.linkedin.com/in/stefanomuro/
Stefano Muro
Versioneone
12° State of Agile Report
PerchèScrum?
E’ semplice
Consente di rilasciare valore per l’utente
molto presto
Implementa cicli di feedback sul prodotto
che consentono di rilasciare valore con
continuità
Implementa cicli di feedback sul processo
consentendo di aumentare la produttività
del team tramite collaborazione e
miglioramento continuo.
Scrum è
sufficiente?
5
Realizzare qualcosa di utile per
l’utente
Realizzare SW presto e con continuità
Realizzare SW funzionante
Realizzare SW che supporti i
cambiamenti
Scrum è
sufficiente?
6
Dove spendete più tempo?
Correggendo bug Aggiungendo
funzionalità
Che dite quando vi
chiedono una modifica?
Acciderbolina! Si
romperà tutto!
«Tuttapposto»,
devo solo
cambiare un
po’ il design
Quanto è complicata la
vostra codebase attuale?
Non ne ho la minima
idea
E’ ampia ma facile
da capire e
cambiarla non è un
problema
Scrum è
sufficiente?
Vi racconto qualche aneddoto
7
Il Rilascio
8
Soddisfazione(esicurezza) deiclientiedifettiSW
10
Il
simulator
Spenderepoconon
vuoldirespendere
poconellosviluppo
….They piled story on story as
quickly as possible with the least
possible investment in design.
Without daily attention to design,
the cost of changes does
skyrocket. The result is poorly
designed, brittle, hard-to-change
systems.”
― Kent Beck, Extreme Programming
Explained: Embrace Change
Scrum non è
sufficiente
Se il nostro team è Agileanche
il nostro codice lo deve essere!
Talvolta invece scriviamo codice
Come èfatto un codice “Flaccido”
Ha molti difetti
(anche noti) rilasciati
in produzione
1
Non è manutenibile: E’
difficile individuare
l’origine di un difetto
perchè il codice non è
leggibile o non se ne
capisce l’intent.Spesso
risolvere un difetto vuol
dire crearne un altro.
2
Non è estensibile: E’
difficile estendere le
funzionalità di
un’applicazione se non
è modulare, flessibile
e utilizza design
pattern riconoscilbili.
3
Esempio
codice flaccido
emilybache/GildedRose-Refactoring-Kata
Sintomi tipici di
un codice
“flaccido”
Rigidità
Fragilità
Immobilità
Viscosità
Inutile complessità
Inutili ripetizioni
Opacità
Robert C. Martin
«Design principles and Design Patterns»
Attenzione:coltempoanche ilcodiceagilesiinflaccidisce
Legge della
complessità
crescente di
Lehman
La struttura di un sistema che
evolve si deteriora man mano
che cambia, e devono essere
spese risorse aggiuntive per
preservarne la funzione e
semplificarne la struttura
CostodelcambiamentodelSWtradizionale
Equazione di Lehman e Belady:
M= p+ K c-d
M= sforzo di manutenzione, p= sforzo di sviluppo totale, c = complessità
causata dalla mancanza di strutturazione (leggi: debito tecnico), d
= grado di familiarità del team di manutenzione col software. K è una
costante da individuare confrontando il modello con i dati reali,
Costo del cambiamento applicando pratiche agili di
sviluppo SW
Costodeldeibug infunzionedeltempo
Come?
Adottando pratiche che consentono
di:
Realizzare e mantenere nel
tempo un buon Design
Individuare i bug molto presto nel
ciclo di vita del SW
Applichiamoprincipidibuondesign
SOLID DRY SLAP
Riprendiamo
alcune pratiche
XP
Pair
Programming
Test Driven
Development
Continuous
Integration
Design
Improvement
Collective Code
Ownership
Simple Design
Le pratiche sono utili ma quello che
guida le pratiche sono i principi
Principi
fondamentali
XP
Rapid Feedback
Assume Simplicity
Incremental Change
Embracing Change
Quality Work
Grazie ai principi
le pratiche si
evolvono
26
Richiede lavoroe
tempo:come
conciliarloconla
delivery?
Rendersi conto che è
un investimento che
si ripaga nel tempo.
Ritagliari tempo per
allenarsi
Sperimentando
pratiche un po’ alla
volta.
Condividendo.
28
Domande?
Stefano Muro
Stefano.muro@inspearit.com
@stefanoMuro
stefano_muro
https://www.linkedin.com/in/stefanomuro/
Perchè Agile?
Versioneone
12° State of Agile Report
Perchè Agile?
Versioneone
12° State of Agile Report
Valori XP
Feedback Respect
Communication Simplicity
Courage
Principalipratiche
XP
(Finescale
feedback)
Pair
Programming
Planning
Game
Test Driven
Development
Whole Team
Principalipratiche
XP
(Continuous
process)
Continuous
Integration
Design
Improvement
Small
Releases
Principalipratiche
XP
(Shared
understanding)
Coding
Standards
Collective Code
Ownership
Simple
Design
System
Metaphor

More Related Content

Similar to Il tuo team "agile" scrive codice "flaccido"? Forse scrum non basta

Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
Ciro Donato Caiazzo
 
Anti pattern
Anti patternAnti pattern
Anti pattern
Gianni Valdambrini
 
Sviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUMSviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUM
Matteo Papadopoulos
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
Gian Maria Ricci
 
Abilitare le organizzazioni e le persone ad adottare con successo il Cloud
Abilitare le organizzazioni e le persone ad adottare con successo il CloudAbilitare le organizzazioni e le persone ad adottare con successo il Cloud
Abilitare le organizzazioni e le persone ad adottare con successo il Cloud
Amazon Web Services
 
Introduzione alle metodologie Agili
Introduzione alle metodologie AgiliIntroduzione alle metodologie Agili
Introduzione alle metodologie AgiliAlessandro Astarita
 
Debito Tecnico Questo Sconosciuto
Debito Tecnico Questo SconosciutoDebito Tecnico Questo Sconosciuto
Debito Tecnico Questo Sconosciuto
inspearit Italy
 
Essere project manager senza rinunciare all'agilità integrata - Fabio Savarino
Essere project manager senza rinunciare all'agilità integrata - Fabio SavarinoEssere project manager senza rinunciare all'agilità integrata - Fabio Savarino
Essere project manager senza rinunciare all'agilità integrata - Fabio Savarino
PMexpo
 
DDAY2014 - Agile Drupal: un caso reale di Drupal utilizzato nel mondo Agile
DDAY2014 - Agile Drupal: un caso reale di Drupal utilizzato nel mondo AgileDDAY2014 - Agile Drupal: un caso reale di Drupal utilizzato nel mondo Agile
DDAY2014 - Agile Drupal: un caso reale di Drupal utilizzato nel mondo Agile
DrupalDay
 
Drupal Agile: DRUPAL ED IL MERCATO ENTERPRISE
Drupal Agile: DRUPAL ED IL MERCATO ENTERPRISEDrupal Agile: DRUPAL ED IL MERCATO ENTERPRISE
Drupal Agile: DRUPAL ED IL MERCATO ENTERPRISE
Twinbit
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
Giorgio Di Nardo
 
AgileDay 2006 - Essere agili nel diventare agili
AgileDay 2006 - Essere agili nel diventare agiliAgileDay 2006 - Essere agili nel diventare agili
AgileDay 2006 - Essere agili nel diventare agili
Luca Minudel
 
Manuale Agile Stelnet
Manuale Agile StelnetManuale Agile Stelnet
Manuale Agile Stelnet
Alberto Buschettu
 
Responsive Web Design: 7 Problemi da Evitare – 6^ parte
Responsive Web Design: 7 Problemi da Evitare – 6^ parteResponsive Web Design: 7 Problemi da Evitare – 6^ parte
Responsive Web Design: 7 Problemi da Evitare – 6^ parteFormazioneTurismo
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance Improvements
Michele Aponte
 
Fashion guide: CAD e CAD.Assyst
Fashion guide: CAD e CAD.AssystFashion guide: CAD e CAD.Assyst
Fashion guide: CAD e CAD.Assyst
Sistemi Assyst srl - ( Assyst bullmer )
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
Manuel Scapolan
 
Che cosa sono i microservizi?
Che cosa sono i microservizi?Che cosa sono i microservizi?
Che cosa sono i microservizi?
Salvatore Cordiano
 
Microservices
MicroservicesMicroservices
Microservices
Massimo Romano
 

Similar to Il tuo team "agile" scrive codice "flaccido"? Forse scrum non basta (20)

Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
 
Anti pattern
Anti patternAnti pattern
Anti pattern
 
Sviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUMSviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUM
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Abilitare le organizzazioni e le persone ad adottare con successo il Cloud
Abilitare le organizzazioni e le persone ad adottare con successo il CloudAbilitare le organizzazioni e le persone ad adottare con successo il Cloud
Abilitare le organizzazioni e le persone ad adottare con successo il Cloud
 
Introduzione alle metodologie Agili
Introduzione alle metodologie AgiliIntroduzione alle metodologie Agili
Introduzione alle metodologie Agili
 
Debito Tecnico Questo Sconosciuto
Debito Tecnico Questo SconosciutoDebito Tecnico Questo Sconosciuto
Debito Tecnico Questo Sconosciuto
 
Essere project manager senza rinunciare all'agilità integrata - Fabio Savarino
Essere project manager senza rinunciare all'agilità integrata - Fabio SavarinoEssere project manager senza rinunciare all'agilità integrata - Fabio Savarino
Essere project manager senza rinunciare all'agilità integrata - Fabio Savarino
 
DDAY2014 - Agile Drupal: un caso reale di Drupal utilizzato nel mondo Agile
DDAY2014 - Agile Drupal: un caso reale di Drupal utilizzato nel mondo AgileDDAY2014 - Agile Drupal: un caso reale di Drupal utilizzato nel mondo Agile
DDAY2014 - Agile Drupal: un caso reale di Drupal utilizzato nel mondo Agile
 
Drupal Agile: DRUPAL ED IL MERCATO ENTERPRISE
Drupal Agile: DRUPAL ED IL MERCATO ENTERPRISEDrupal Agile: DRUPAL ED IL MERCATO ENTERPRISE
Drupal Agile: DRUPAL ED IL MERCATO ENTERPRISE
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
AgileDay 2006 - Essere agili nel diventare agili
AgileDay 2006 - Essere agili nel diventare agiliAgileDay 2006 - Essere agili nel diventare agili
AgileDay 2006 - Essere agili nel diventare agili
 
Manuale Agile Stelnet
Manuale Agile StelnetManuale Agile Stelnet
Manuale Agile Stelnet
 
Responsive Web Design: 7 Problemi da Evitare – 6^ parte
Responsive Web Design: 7 Problemi da Evitare – 6^ parteResponsive Web Design: 7 Problemi da Evitare – 6^ parte
Responsive Web Design: 7 Problemi da Evitare – 6^ parte
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance Improvements
 
Fashion guide: CAD e CAD.Assyst
Fashion guide: CAD e CAD.AssystFashion guide: CAD e CAD.Assyst
Fashion guide: CAD e CAD.Assyst
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Che cosa sono i microservizi?
Che cosa sono i microservizi?Che cosa sono i microservizi?
Che cosa sono i microservizi?
 
Microservices
MicroservicesMicroservices
Microservices
 
2013 why agile
2013 why agile2013 why agile
2013 why agile
 

More from Stefano Muro

Agile e Lean in sintesi
Agile e Lean in sintesiAgile e Lean in sintesi
Agile e Lean in sintesi
Stefano Muro
 
Impariamo ad innovare con l'Impact mapping
Impariamo ad innovare con l'Impact mappingImpariamo ad innovare con l'Impact mapping
Impariamo ad innovare con l'Impact mapping
Stefano Muro
 
Sostituire le User stories con le Job stories : Come, Quando e Perchè
Sostituire le User stories con le Job stories : Come, Quando e PerchèSostituire le User stories con le Job stories : Come, Quando e Perchè
Sostituire le User stories con le Job stories : Come, Quando e Perchè
Stefano Muro
 
Le tre facce del dado: cultura, organizzazione e design di sistema
Le tre facce del dado: cultura, organizzazione e design di sistemaLe tre facce del dado: cultura, organizzazione e design di sistema
Le tre facce del dado: cultura, organizzazione e design di sistema
Stefano Muro
 
Usare la Delegation Board per favorire il Change Management
Usare la Delegation Board per favorire il Change ManagementUsare la Delegation Board per favorire il Change Management
Usare la Delegation Board per favorire il Change Management
Stefano Muro
 
Team Empowerment facile a dirsi, ma nella realtà ....
Team Empowerment facile a dirsi, ma nella realtà ....Team Empowerment facile a dirsi, ma nella realtà ....
Team Empowerment facile a dirsi, ma nella realtà ....
Stefano Muro
 
La motivazione nelle metodologie agili
La motivazione nelle metodologie agiliLa motivazione nelle metodologie agili
La motivazione nelle metodologie agili
Stefano Muro
 

More from Stefano Muro (7)

Agile e Lean in sintesi
Agile e Lean in sintesiAgile e Lean in sintesi
Agile e Lean in sintesi
 
Impariamo ad innovare con l'Impact mapping
Impariamo ad innovare con l'Impact mappingImpariamo ad innovare con l'Impact mapping
Impariamo ad innovare con l'Impact mapping
 
Sostituire le User stories con le Job stories : Come, Quando e Perchè
Sostituire le User stories con le Job stories : Come, Quando e PerchèSostituire le User stories con le Job stories : Come, Quando e Perchè
Sostituire le User stories con le Job stories : Come, Quando e Perchè
 
Le tre facce del dado: cultura, organizzazione e design di sistema
Le tre facce del dado: cultura, organizzazione e design di sistemaLe tre facce del dado: cultura, organizzazione e design di sistema
Le tre facce del dado: cultura, organizzazione e design di sistema
 
Usare la Delegation Board per favorire il Change Management
Usare la Delegation Board per favorire il Change ManagementUsare la Delegation Board per favorire il Change Management
Usare la Delegation Board per favorire il Change Management
 
Team Empowerment facile a dirsi, ma nella realtà ....
Team Empowerment facile a dirsi, ma nella realtà ....Team Empowerment facile a dirsi, ma nella realtà ....
Team Empowerment facile a dirsi, ma nella realtà ....
 
La motivazione nelle metodologie agili
La motivazione nelle metodologie agiliLa motivazione nelle metodologie agili
La motivazione nelle metodologie agili
 

Il tuo team "agile" scrive codice "flaccido"? Forse scrum non basta