Le 12 pratiche - Un introduzione a XP (Mini Italian Agile Day)
-
Upload
andrea-francia -
Category
Software
-
view
146 -
download
0
Transcript of 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)
@andreafrancia
Cos’è XP?
@andreafranciaRoyce, Winston (1970), "Managing the Development of Large Software Systems" (PDF), Proceedings of IEEE WESCON, 26 (August): 1–9
@andreafrancia
@andreafrancia
@andreafrancia
@andreafranciaKent Beck. 1999. Extreme Programming Explained: Embrace Change
@andreafrancia
What if?
Kent Beck. 1999. Extreme Programming Explained: Embrace Change
@andreafrancia
Ok ma da dove si comincia?
@andreafrancia
Cominciamo dalle pratiche
@andreafrancia
Chi sei?Andrea Francia
• Programmatore
• Appassionato di TDD
• Studio Agile da 8 anni
• Uso XP quotidianamente da 4 anni
• Coordino il TDD Milano
@andreafrancia
XP -vs- Scrum
@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
@andreafrancia
Le pratiche classiche
@andreafranciahttp://ronjeffries.com/xprog/what-is-extreme-programming/
@andreafrancia
Quante sono le 12 pratiche?
@andreafrancia
Quante sono le pratiche XP?
12!1999
@andreafrancia
Quante sono le pratiche XP?
13!2002
@andreafrancia
Quante sono le pratiche XP?
13!
@andreafrancia
24! 2004
Quante sono le pratiche XP?
@andreafrancia
un momento…
• e la retrospettiva?
• … ci sono anche le pratiche Scrum!
@andreafrancia
~50
Le pratiche che possono portare vantaggio ad un team XP sono …
@andreafrancia
Questo libro le spiega quasi tutte:
@andreafrancia
Pratiche “Business”
@andreafrancia
Small Releases
@andreafrancia
Small Releases“Every release should be as small as possible,
containing the most valuable business requirements”
@andreafrancia
Planning Game
@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.
@andreafrancia
Acceptance Tests
@andreafrancia
Acceptance Tests
“The details about the user stories are captured in the form of acceptance tests specified by the customer.”
@andreafrancia
Customer On-Site
@andreafrancia
Customer On-Site
“A real customer (*) must sit with the team, available full-time to answer questions.”
@andreafrancia
Le pratiche “di team”
@andreafrancia
Sustainable Pace
@andreafrancia
Sustainable Pace
• “In order to finish quickly, the team must run at a sustainable pace.”
• “A team is not allowed to work overtime"
@andreafrancia
GitLab incident
@andreafrancia
work long hour
@andreafrancia
Collective Code Ownership
@andreafrancia
Collective Code Ownership
• “Anyone can change any code anywhere in the system at any time.”
@andreafrancia
Coding Standards
@andreafrancia
Coding Standards
• Programmers write all code in accordance with rules emphasizing communication through the code.
@andreafrancia
Pair Programming
@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
@andreafrancia
Pair Programming
• Cosa succede quando non si fa pair?
@andreafrancia
Continuous Integration
@andreafrancia
Continuous Integration
Definizione:
• “Integrate and build the system many times a day, every time a task is completed.”
@andreafrancia
Pratiche di design
@andreafrancia
@andreafrancia
Metaphor
@andreafrancia
Metaphor
• “Guide all development with a simple shared story of how the whole system works.”
@andreafrancia
Test-Driven Development
@andreafrancia
Test-Driven Development
Definizione:
• “Any program feature without an automated test simply doesn’t exists”
@andreafrancia
Refactoringaka Incremental Design
@andreafrancia
Refactoring
• Programmers restructure the system without changing its behavior to remove duplication, improve communication, simplify, or add flexibility.
@andreafrancia
Refactoring?
• Ok ma a cosa serve?
@andreafrancia
@andreafrancia
@andreafrancia
Simple Design
@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
@andreafrancia
Per approfondire
@andreafrancia
@andreafrancia
TDD Milanohttps://www.meetup.com/it-IT/TDD-Milano/
@andreafrancia
GrazieAndrea Francia