SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
YAGNIYou Aren’t Gonna Need It
Le origini
• Metodologie pesanti dominavano negli anni ‘90
• BUFD - Big Up Front Design
• Emersione di Agile e XP
• Simple design
It’s a trap!
• “Ne avrò sicuramente bisogno in futuro”
• “Se lo faccio ora risparmierò tempo nel lungo termine”
You Aren’t Gonna Need It
• Implementa funzionalità quando ne hai bisogno
• Non quando pensi che ne avrai bisogno in futuro
• Puoi sempre svilupparle più tardi
Perchè rimandare?
• Il lavoro fatto potrebbe risultare inutile ¯_(ツ)_/¯
• Domani siamo più intelligenti di oggi
• Un’implementazione precoce è

spesso più costosa
I costi di un’implementazione precoce
Carry
Primo caso: Feature sbagliata
Build Delay
Carry Delay
I costi di un’implementazione precoce
Secondo caso: Feature giusta
CarryRepair Delay
I costi di un’implementazione precoce
Terzo caso: Feature giusta, implementata erroneamente
Effetti di YAGNI (in teoria)
+ Qualità del codice
+ Focus su priorità
− Costi
− Overengineering basato su

intuizioni potenzialmente sbagliate
YAGNI: Quando?
✓ Features non (ancora) necessarie
✓ Speculative generality
x Semplificazione codice
x Good practices
YAGNI: Quanto?
• Non si tratta di un principio assoluto
• Talvolta può convenire ignorare YAGNI
• L’eccessiva semplicità non piace a tutti
• addTwoAndThree() or add(x, y)?
“Everything should be made as simple as possible, but no simpler.”
— Albert Einstein
Conclusioni
• Buone ragioni per posticipare
• Chiedersi: “mi serve davvero?”
• …senza confondere posticipare con procrastinare
“Courage is postponing the decisions of tomorrow, to tomorrow”
— Kent Beck
Thank you

Más contenido relacionado

Más de XPeppers

La tecnica del pomodoro - Come viene adottata in XPeppers
La tecnica del pomodoro - Come viene adottata in XPeppersLa tecnica del pomodoro - Come viene adottata in XPeppers
La tecnica del pomodoro - Come viene adottata in XPeppersXPeppers
 
Collective code ownership in Extreme Programming
Collective code ownership in Extreme ProgrammingCollective code ownership in Extreme Programming
Collective code ownership in Extreme ProgrammingXPeppers
 
What is Agile?
What is Agile?What is Agile?
What is Agile?XPeppers
 
Improve your TDD skills
Improve your TDD skillsImprove your TDD skills
Improve your TDD skillsXPeppers
 
Test driven infrastructure
Test driven infrastructureTest driven infrastructure
Test driven infrastructureXPeppers
 
Banche agili un ossimoro?
Banche agili un ossimoro?Banche agili un ossimoro?
Banche agili un ossimoro?XPeppers
 
Hiring Great People: how we improved our recruiting process to build and grow...
Hiring Great People: how we improved our recruiting process to build and grow...Hiring Great People: how we improved our recruiting process to build and grow...
Hiring Great People: how we improved our recruiting process to build and grow...XPeppers
 
Continuous Delivery in Java
Continuous Delivery in JavaContinuous Delivery in Java
Continuous Delivery in JavaXPeppers
 
Life in XPeppers
Life in XPeppersLife in XPeppers
Life in XPeppersXPeppers
 
Cloud e innovazione
Cloud e innovazioneCloud e innovazione
Cloud e innovazioneXPeppers
 
Company culture slides
Company culture slidesCompany culture slides
Company culture slidesXPeppers
 
Agileday2013 Bravi si diventa
Agileday2013 Bravi si diventaAgileday2013 Bravi si diventa
Agileday2013 Bravi si diventaXPeppers
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaXPeppers
 

Más de XPeppers (13)

La tecnica del pomodoro - Come viene adottata in XPeppers
La tecnica del pomodoro - Come viene adottata in XPeppersLa tecnica del pomodoro - Come viene adottata in XPeppers
La tecnica del pomodoro - Come viene adottata in XPeppers
 
Collective code ownership in Extreme Programming
Collective code ownership in Extreme ProgrammingCollective code ownership in Extreme Programming
Collective code ownership in Extreme Programming
 
What is Agile?
What is Agile?What is Agile?
What is Agile?
 
Improve your TDD skills
Improve your TDD skillsImprove your TDD skills
Improve your TDD skills
 
Test driven infrastructure
Test driven infrastructureTest driven infrastructure
Test driven infrastructure
 
Banche agili un ossimoro?
Banche agili un ossimoro?Banche agili un ossimoro?
Banche agili un ossimoro?
 
Hiring Great People: how we improved our recruiting process to build and grow...
Hiring Great People: how we improved our recruiting process to build and grow...Hiring Great People: how we improved our recruiting process to build and grow...
Hiring Great People: how we improved our recruiting process to build and grow...
 
Continuous Delivery in Java
Continuous Delivery in JavaContinuous Delivery in Java
Continuous Delivery in Java
 
Life in XPeppers
Life in XPeppersLife in XPeppers
Life in XPeppers
 
Cloud e innovazione
Cloud e innovazioneCloud e innovazione
Cloud e innovazione
 
Company culture slides
Company culture slidesCompany culture slides
Company culture slides
 
Agileday2013 Bravi si diventa
Agileday2013 Bravi si diventaAgileday2013 Bravi si diventa
Agileday2013 Bravi si diventa
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 

Último

GIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroGIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroServizi a rete
 
GIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoGIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoServizi a rete
 
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneGIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneServizi a rete
 
Presentzione Matematica similitudini circonferenze e omotetie.pptx
Presentzione  Matematica similitudini circonferenze e omotetie.pptxPresentzione  Matematica similitudini circonferenze e omotetie.pptx
Presentzione Matematica similitudini circonferenze e omotetie.pptxfilippoluciani9
 
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaGIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaServizi a rete
 
Descrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxDescrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxtecongo2007
 
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleGIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleServizi a rete
 
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoGIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoServizi a rete
 
GIORNATA TECNICA 18/04 | DE LEO Antonio
GIORNATA TECNICA 18/04  | DE LEO AntonioGIORNATA TECNICA 18/04  | DE LEO Antonio
GIORNATA TECNICA 18/04 | DE LEO AntonioServizi a rete
 

Último (9)

GIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroGIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI Alessandro
 
GIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoGIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA Roberto
 
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneGIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
 
Presentzione Matematica similitudini circonferenze e omotetie.pptx
Presentzione  Matematica similitudini circonferenze e omotetie.pptxPresentzione  Matematica similitudini circonferenze e omotetie.pptx
Presentzione Matematica similitudini circonferenze e omotetie.pptx
 
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaGIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
 
Descrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxDescrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptx
 
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleGIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
 
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoGIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
 
GIORNATA TECNICA 18/04 | DE LEO Antonio
GIORNATA TECNICA 18/04  | DE LEO AntonioGIORNATA TECNICA 18/04  | DE LEO Antonio
GIORNATA TECNICA 18/04 | DE LEO Antonio
 

Yagni, You aren't gonna need it

  • 2. Le origini • Metodologie pesanti dominavano negli anni ‘90 • BUFD - Big Up Front Design • Emersione di Agile e XP • Simple design
  • 3. It’s a trap! • “Ne avrò sicuramente bisogno in futuro” • “Se lo faccio ora risparmierò tempo nel lungo termine”
  • 4. You Aren’t Gonna Need It • Implementa funzionalità quando ne hai bisogno • Non quando pensi che ne avrai bisogno in futuro • Puoi sempre svilupparle più tardi
  • 5. Perchè rimandare? • Il lavoro fatto potrebbe risultare inutile ¯_(ツ)_/¯ • Domani siamo più intelligenti di oggi • Un’implementazione precoce è
 spesso più costosa
  • 6. I costi di un’implementazione precoce Carry Primo caso: Feature sbagliata Build Delay
  • 7. Carry Delay I costi di un’implementazione precoce Secondo caso: Feature giusta
  • 8. CarryRepair Delay I costi di un’implementazione precoce Terzo caso: Feature giusta, implementata erroneamente
  • 9. Effetti di YAGNI (in teoria) + Qualità del codice + Focus su priorità − Costi − Overengineering basato su
 intuizioni potenzialmente sbagliate
  • 10. YAGNI: Quando? ✓ Features non (ancora) necessarie ✓ Speculative generality x Semplificazione codice x Good practices
  • 11. YAGNI: Quanto? • Non si tratta di un principio assoluto • Talvolta può convenire ignorare YAGNI • L’eccessiva semplicità non piace a tutti • addTwoAndThree() or add(x, y)? “Everything should be made as simple as possible, but no simpler.” — Albert Einstein
  • 12. Conclusioni • Buone ragioni per posticipare • Chiedersi: “mi serve davvero?” • …senza confondere posticipare con procrastinare “Courage is postponing the decisions of tomorrow, to tomorrow” — Kent Beck