Extreme Programming

29
Matteo Vaccari @xpmatteo http://matteo.vaccari.name/ eXtreme Programming 1

description

My presentation at Agile For Innovation http://www.agileforinnovation.com/ 14 march 2014

Transcript of Extreme Programming

Page 1: Extreme Programming

Matteo Vaccari@xpmatteo

http://matteo.vaccari.name/

eXtreme Programming

1

Page 2: Extreme Programming

Cheap, fast, good.

You can have it all.

2

Page 5: Extreme Programming

5

Page 6: Extreme Programming

We were doing incremental development as early as 1957, ... the technique used was, as far as I can tell, indistinguishable from XP.

Jerry Weinberg

Craig Larman: Iterative and Incremental Development: A Brief History6

Page 7: Extreme Programming

"Perlis: I’d like to read three sentences to close this issue.1. A software system can best be designed if the testing is interlaced with the designing instead of being used after the design.2. A simulation which matches the requirements contains the control which organizes the design of the system.3. Through successive repetitions of this process of interlaced testing and design the model ultimately becomes the software system itself.

1968 NATO Conference on Software Engineering7

Page 8: Extreme Programming

Barry Boehm

Kent Beck

Kent Beck, Extreme Programming Explained8

Page 9: Extreme Programming

Involve the customer through small, incremental releases of a working program

http://mgintravels.wordpress.com/2013/03/04/camping-in-the-olive-gardens-of-patara/

9

Page 10: Extreme Programming

Presupposti

•Team.

•Personalità risolte.

•Cliente coinvolto.

10

Page 11: Extreme Programming

XP

The Planning Game

Small releases

Metaphor

Simple Design

Testing

Refactoring

Pair Programming

Collective Ownership

Continuous Integration

40-Hour Week

On-Site Customer

Coding Standards

PracticesValuesSimplicity

Courage

Communication

Feedback

11

Page 12: Extreme Programming

1. Planning Game(Scrum)

Planning game

Business people

Scope

Priority

Dates

Technical people

Estimates

Consequences

Process

12

Page 13: Extreme Programming

2. Small Releases(Continuous Delivery)

Subversion

Sviluppatori

Jenkins Server di collaudo

1. Commit

2. Pull changes3. Build4. Unit test

5. Deploy6. Acceptance tests

7. Success! or Failure!

13

Page 14: Extreme Programming

3. Metaphor(Domain-Driven Design)

Ubiquitous Language

Simple models14

Page 15: Extreme Programming

4. Simple Design

1. Runs all the tests2. Has no duplicated logic3. States every intention important to the

programmers4. Has the fewest possible classes and

methods

15

Page 16: Extreme Programming

5. Testing(TDD, BDD, ATDD)

The result is a program that becomes more and more confident over time---it becomes

more capable of accepting change, not less.

The customer writes Acceptance Tests

16

Page 17: Extreme Programming

6. RefactoringWhen implementing a program feature, the programmers always ask if there is a way of

changing the existing program to make adding the feature simpler.

After they have added a feature, they ask if they can now see how to

make the program simpler

17

Page 18: Extreme Programming

7. Pair Programming

All production code is written with two people looking at one machine

18

Page 19: Extreme Programming

8. Collective Ownership

Code belongs to the team, not the individual

19

Page 20: Extreme Programming

9. Continuous Integration

Make integration painless by doing it often

20

Page 21: Extreme Programming

10. 40-Hours Week

Teams working overtime are failing

21

Page 22: Extreme Programming

11. Customer On Site

A real customer must sit with the team

22

Page 23: Extreme Programming

12. Coding Standards

The team controls the work environment

23

Page 24: Extreme Programming

Se XP funziona così bene, perché non lo

fanno tutti?

24

Page 25: Extreme Programming

XP is hard

Involve the customer.

Take responsibility.Learn. Study. Learn.

Give feedback.

25

Page 26: Extreme Programming

It’s not the answer they want to hear

26

Page 27: Extreme Programming

It’s just “good programming

practice”

http://blog.8thlight.com/uncle-bob/2013/12/10/Thankyou-Kent.html

27

Page 28: Extreme Programming

Community!

Milano XPUG User Group

Italian Agile Day

Agile Coach Camp, 5-7 giugno

milano-xpug.pbworks.com

agileday.it

accitaly.wordpress.com

https://it.groups.yahoo.com/neo/groups/extremeprogramming-it/info

28

Page 29: Extreme Programming

Grazie per l’attenzione!

Sono freelance!

Contattami!

Corso TDD:17-18 aprile, Bologna12-13 giugno, Milanowww.avanscoperta.it

29