ESSAP Agile Loops

49
Agile loops from jargon to understanding (cc) F. Gobbo, S. Gentilini, F. Bertone, V. Del Bianco, please refer to: [email protected] Dipartimento di Informatica e Comunicazione Università degli Studi dell'Insubria

Transcript of ESSAP Agile Loops

Page 1: ESSAP Agile Loops

Agile loops

from jargon to understanding

(cc) F. Gobbo, S. Gentilini, F. Bertone, V. Del Bianco,please refer to: [email protected]

Dipartimento di Informatica e ComunicazioneUniversità degli Studi dell'Insubria

Page 2: ESSAP Agile Loops

Acknowledgements

This is a derivative work from the talk "XP loops"presented in XP BE 2007

by

• Vera Peeters (Tryx)• Pascal Van Cauwenberghe (NAYIMA)

Page 3: ESSAP Agile Loops

Wannabe Agile?

Page 4: ESSAP Agile Loops

What Agile is not

• Not a panacea.

• Not a silver bullet.

It doesn't tell you if a project is worth starting.It tells you how to start and when to stop in time.(c) artwork / graphic by Michael Whitehead for Next 16-9-2003

Page 5: ESSAP Agile Loops

Ready to start?

Page 6: ESSAP Agile Loops

Start from your (onsite) customers...

Business decisionsare taken by thecustomers

Technical decisionsare taken by thedeveloper team

...and trust!

Page 7: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation

Page 8: ESSAP Agile Loops

User stories

• Customers tell:

the value

• Developers tell:

the price

Don't show the kitchen, serve the dishes!

Page 9: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation

Page 10: ESSAP Agile Loops

Small releases• Steering and adapting

• Short-time planning

• release = iteration (XP)• release = sprint (Scrum)

• Timeboxing everywhere

Be realistic, don't pretend to look in a crystal ball!

Page 11: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!

Page 12: ESSAP Agile Loops

Planning game

How much business value can you deliverin the next release? • Pair writing

• Product backlog

Delivering business value early and often

Page 13: ESSAP Agile Loops

Principles and values• Collaboration instead of: negotiation• Communication instead of: requirement elicitation• Feedback, feedback, feedback!• Business value instead of: overdesign & unused features

Page 14: ESSAP Agile Loops

Sustainable pace

Find your natural rhythm of work

(for all involved!)

• Think about the long run• No overtime

Our suggestion: the Pomodoro Technique

Page 15: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending

Page 16: ESSAP Agile Loops

Daily Standup Meetings

3 questions:

• What I have done?• What I will complete today?• I need help with...

Keep it short!

Page 17: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day

Page 18: ESSAP Agile Loops

Pair Programming

Two programmers work together at one keyboard:

driver types in code,

observer-navigator reviews code and considers the strategic direction of the work.

Not for everyone...

Page 19: ESSAP Agile Loops

Pair Programming and Productivity...

PairProgramming reduces productivity! That would be true if the most time consuming part of programming was typing... Martin Fowler

– Start with a reasonably well-defined task

– Agree on one tiny goal at a time

– TDD please– Rely on and support your

partner– Sync up frequently– Be especially courteous– Take a moment to celebrate– Often switch roles

Page 20: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism

Page 21: ESSAP Agile Loops

Unit Tests

Automated test that validates that units of source code are working properly.

Test cases written in the same language as the production code.

Each test case is independent from the others.

Page 22: ESSAP Agile Loops

So what?

– Safety Net– Facilitates change– Facilitates refactoring– Simplifies integration– Documentation– Design– Separation of interface from implementation– Force code being testable– ...

Page 23: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time

Page 24: ESSAP Agile Loops

Test Driven Development

without

inmagine.com

with

forbes.com

Page 25: ESSAP Agile Loops

Test Driven Development

write a test

implement code to pass the test

refactor

testdriven.com

forbes.com

Page 26: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time• Technical excellence

Page 27: ESSAP Agile Loops

Refactoring

without with

Page 28: ESSAP Agile Loops

Refactoring

clean code that works!

get rid of smelling code:

duplicationlarge classeslarge methods

long parameters list etc etc..

Page 29: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time• Technical excellence• Simplicity

Page 30: ESSAP Agile Loops

Continuous Integration

• Small steps• Small changes• Small problems

Integrate frequently (multiple integrations per day).

Each integration is verified by an automated build.

Page 31: ESSAP Agile Loops

Not so easy...

Once you are there, great benefits:• Control• Visibility• Early warnings• Availability of a

"current" build

Page 32: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time• Technical excellence• Simplicity• Be in control

Page 33: ESSAP Agile Loops

Collective Code Ownership

Everyone can contribute to everything

Any developer can change any line of code

Everyone is responsible for all the code

No one person becomes a bottle neck for changes

Page 34: ESSAP Agile Loops

Prerequisites and Alternatives

Prerequisites, at least:CodingStandardsVersion managementUnit tests

Alternatives?CodeStewardship...

So what?Define who ones the code! More "collective", is better, but has more prerequisites

Page 35: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time• Technical excellence• Simplicity• Be in control• Trust your teammates

Page 36: ESSAP Agile Loops

Acceptance TestsCustomers specifies scenarios to test when a user story has been correctly implemented

A story can have one or many acceptance tests

Acceptance tests are black box system tests

Customers sign completed stories when their acceptance tests pass

Page 37: ESSAP Agile Loops

Acceptance Tests HowTo

– Written at the start of each iteration– Start a story executing acceptance tests– Write unit tests– Keep adding unit tests and production code

until all the acceptance tests pass

Page 38: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time• Technical excellence• Simplicity• Be in control• Trust your teammates• Working software is measure of progress

Page 39: ESSAP Agile Loops

Velocity

Velocity is the rate at which you complete your work, in a certain period of time.

In project management terms: velocity is the amount of work that a team can complete in a specified period of time.

Page 40: ESSAP Agile Loops

Velocity and Burndown

Velocity to make commitments in future iterations

If a team does not know its velocity, how will that team be able to know how much work to put into an iteration?

Burndown to meet commitments in one iteration

If a team doesn't focus burndown, it is probable that the team will miss the scope of the iteration

Page 41: ESSAP Agile Loops

Open Workspace

Self-organizing teams

Collaboration

Comunication

Trust

Simplicity

Self-organization

Feedback!!

Page 42: ESSAP Agile Loops
Page 43: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time• Technical excellence• Simplicity• Be in control• Trust your teammates• Working software is measure of progress

Page 44: ESSAP Agile Loops

μεταφορά: "a transfer", in rhetoric "transference of a word to a new sense", from μεταφέρω - metaphero, "to carry over, to transfer"

Metaphor

Shared Vision Ubiquitous Language Communication Simplicity

Page 45: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time• Technical excellence• Simplicity• Be in control• Trust your teammates• Working software is measure of progress• Shared understanding

Page 46: ESSAP Agile Loops

Retrospectives

Page 47: ESSAP Agile Loops

Principles and values• Collaboration instead of negotiation• Communication instead of requirement elicitation• Feedback, feedback, feedback!• Business value instead of overdesign & unused features• Respect for people instead of pretending• Small, realistic chunks of work every day• Fun and quality instead of heroism• Quality work every time• Technical excellence• Simplicity• Be in control• Trust your teammates• Working software is measure of progress• Shared understanding• Continuous improvement

Page 48: ESSAP Agile Loops

Agilemanifesto.org (re-read it!)• Individuals and interactions

• Working software

• Customer collaboration

• Responding to change

Naturally non-fondamentalist:many methodologies,many technologies.

over processes and tools

over comprehensive documentation

over contract negotiation

over following a plan

based on the community!

Page 49: ESSAP Agile Loops

Thanks for your attention!

Questions?The answers during this week!