le 12 pratiche - un introduzione a xp (mini italian agile day)

Post on 17-Feb-2017

152 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

@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

top related