63
@andreafrancia Le 12 pratiche Un introduzione a XP Andrea Francia mini IAD di Vimercate (11 febbraio 2017)

Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

Embed Size (px)

Citation preview

Page 1: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Le 12 pratiche Un introduzione a XP

Andrea Francia mini IAD di Vimercate (11 febbraio 2017)

Page 2: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Cos’è XP?

Page 3: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafranciaRoyce, Winston (1970), "Managing the Development of Large Software Systems" (PDF), Proceedings of IEEE WESCON, 26 (August): 1–9

Page 4: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Page 5: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Page 6: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Page 7: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafranciaKent Beck. 1999. Extreme Programming Explained: Embrace Change

Page 8: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

What if?

Kent Beck. 1999. Extreme Programming Explained: Embrace Change

Page 9: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Ok ma da dove si comincia?

Page 10: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Cominciamo dalle pratiche

Page 11: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Chi sei?Andrea Francia

• Programmatore

• Appassionato di TDD

• Studio Agile da 8 anni

• Uso XP quotidianamente da 4 anni

• Coordino il TDD Milano

Page 12: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

XP -vs- Scrum

Page 13: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

XP Scrum

(about programming) (anything)

Iterations Sprints

Planning Game Sprint Planning Meeting

Stories/Cards Product Backlog Items

Not so fixed Fixed Sprint Backlog

Engineering Practices See XP

Engineering Practices: TDD, Pair Prorgramming, Simple Design, Refactoring

Page 14: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Le pratiche classiche

Page 15: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafranciahttp://ronjeffries.com/xprog/what-is-extreme-programming/

Page 16: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Quante sono le 12 pratiche?

Page 17: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Quante sono le pratiche XP?

12!1999

Page 18: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Quante sono le pratiche XP?

13!2002

Page 19: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Quante sono le pratiche XP?

13!

Page 20: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

24! 2004

Quante sono le pratiche XP?

Page 21: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

un momento…

• e la retrospettiva?

• … ci sono anche le pratiche Scrum!

Page 22: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

~50

Le pratiche che possono portare vantaggio ad un team XP sono …

Page 23: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Questo libro le spiega quasi tutte:

Page 24: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Pratiche “Business”

Page 25: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Small Releases

Page 26: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Small Releases“Every release should be as small as possible,

containing the most valuable business requirements”

Page 27: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Planning Game

Page 28: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Planning Game

• Quickly determine the scope of the next release by combining business priorities and technical estimates. As reality overtakes the plan, update the plan.

Page 29: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Acceptance Tests

Page 30: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Acceptance Tests

“The details about the user stories are captured in the form of acceptance tests specified by the customer.”

Page 31: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Customer On-Site

Page 32: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Customer On-Site

“A real customer (*) must sit with the team, available full-time to answer questions.”

Page 33: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Le pratiche “di team”

Page 34: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Sustainable Pace

Page 35: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Sustainable Pace

• “In order to finish quickly, the team must run at a sustainable pace.”

• “A team is not allowed to work overtime"

Page 36: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

GitLab incident

Page 37: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

work long hour

Page 38: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Collective Code Ownership

Page 39: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Collective Code Ownership

• “Anyone can change any code anywhere in the system at any time.”

Page 40: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Coding Standards

Page 41: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Coding Standards

• Programmers write all code in accordance with rules emphasizing communication through the code.

Page 42: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Pair Programming

Page 43: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Pair Programming

• “All production code is written by pairs of programmers working on same workstation.”

https://it.wikipedia.org/wiki/File:Pair_programming_1.jpg Author: Lisamarie Babik

Page 44: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Pair Programming

• Cosa succede quando non si fa pair?

Page 45: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Continuous Integration

Page 46: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Continuous Integration

Definizione:

• “Integrate and build the system many times a day, every time a task is completed.”

Page 47: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Pratiche di design

Page 48: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Page 49: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Metaphor

Page 50: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Metaphor

• “Guide all development with a simple shared story of how the whole system works.”

Page 51: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Test-Driven Development

Page 52: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Test-Driven Development

Definizione:

• “Any program feature without an automated test simply doesn’t exists”

Page 53: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Refactoringaka Incremental Design

Page 54: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Refactoring

• Programmers restructure the system without changing its behavior to remove duplication, improve communication, simplify, or add flexibility.

Page 55: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Refactoring?

• Ok ma a cosa serve?

Page 56: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Page 57: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Page 58: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Simple Design

Page 59: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Simple Design

Un pezzo di codice è semplice quando:

1. Fa passare tutti i test

2. Non contiene duplicazione

3. È chiaro ed esprime l’intento per cui è scritto

4. Non contiene parti superflue

Page 60: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Per approfondire

Page 61: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

Page 62: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

TDD Milanohttps://www.meetup.com/it-IT/TDD-Milano/

Page 63: Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)

@andreafrancia

GrazieAndrea Francia