an introduction to xp and agile

42
An Introduction to XP and Agile Jason Yip, [email protected] http:// www.thoughtworks.com

Post on 17-Oct-2014

5.552 views

Category:

Technology


1 download

DESCRIPTION

An introduction to XP and Agile for SyXPAC

TRANSCRIPT

An Introduction to XP and Agile

Jason Yip, [email protected]

http://www.thoughtworks.com

What’s the problem?

Software takes too long, costs too much, and requires

too many people

The plan is fantasy… and we don’t learn this until it’s too late

We’re wasting our lives doing things that don’t matter

Why do the problems occur?

We only have one opportunity to decide, so we ask for

everything… and we waste time building what we don’t actually

need

How often are features used?

We defer concrete validation until it’s too late to respond

We punish raising problems

We have too much specialisation

We have a “not my problem” culture

What do we want instead?

Any feature, any order, one at a time

Highest productivity, highest quality, lowest cost, highest

morale

Real visibility about what’s happening

Learn about problems as early as possible

Less administrative work; more value-adding work

XP and Agile as a solution

Philosophy, Process, People, Problem Solving

ProblemSolving

People

Process

Philosophy

Philosophy: Values

• Simplicity• Communication• Feedback• Courage• Respect

Software is too damned hard to spend time on things that don't matter. So, starting over from scratch, what are we absolutely certain matters?…Listening, Testing, Coding, Designing. That's all there is to software. Anyone who tells you different is selling something.

Kent Beck, http://www.c2.com/cgi/wiki?ExtremeProgramming

Process: Just-in-Time

User Stories

• AS an Agile team member, I WANT a way to have self-contained small units of work SO THAT I can focus on one thing at a time, show visible progress earlier, and allow for negotiation

Card, Conversation, Confirmation

• Card – index card; physical token used for visual planning and tracking

• Conversation – primary medium of communication supplemented as necessary with documentation

• Confirmation – Examples that indicate when story is complete; turned into automated tests

http://www.xprogramming.com/xpmag/expCardConversationConfirmation.htm

Timeboxed iterative-incremental development

Small Releases

http://www.slideshare.net/cching/rocks-into-gold-by-clarke-ching-presentation

Process: Built-in Quality

Mistake proofing

1. Eliminate – Don’t build it – YAGNI2. Replace – Use a reliable library3. Prevent by design4. Facilitate – Only use the useful

features, ignore the rest5. Detect as early as possible – TDD,

CI, pair programming6. Mitigate – Make sure problems

don’t cascade; error-handling

Test-driven Development

1. Think2. Red3. Green4. Refactor5. Repeat

http://jamesshore.com/Blog/Red-Green-Refactor.html

Continuous Integration

Pair Programming

People: T-shaped people

People: Whole Team

http://www.think-box.co.uk/blog/2007/11/theres-hole-in-your-side-of-boat.html

Authority vs Responsibility

Problem Solving: Daily Standups

• What did I accomplish yesterday?• What will I do today?• What obstacles are impeding my

progress?

http://martinfowler.com/articles/itsNotJustStandingUp.html

Problem Solving: Retrospectives

• What did we do well, that if we don’t discuss we might forget?

• What did we learn?• What should we do differently next

time?• What still puzzles us?

http://www.retrospectives.com/

Problem Solving: Spikes over speculation

"What is the simplest thing we can program that will convince us we are on the right track?“

Ward Cunningham

http://c2.com/xp/SpikeSolution.html

Why should we believe this will work?

This is the evolution of what we’ve learned over decades

“Although many view iterative and incremental development as a modern practice, its application dates as far back as the mid-1950s.”

Craig Larman and Victor R. Basili

http://www.cs.umd.edu/~basili/publications/journals/J90.pdf

Don’t believe… think for yourself… try something… see

what happens… adjust

For some more conventional introductions…

• http://www.extremeprogramming.org

• http://www.xprogramming.com/xpmag/whatisxp.htm

• http://www.agilemanifesto.org/• http://www.poppendieck.com/