damon poole - gbcacm.org › static › journey › pmtc2012 › tenhabitsagileprog… · effective...

79
© 2012 Valtivity and others. All Rights Reserved -1- Damon Poole Chief Agilist, Eliassen Group’s Agile Practice Creator of multiple Jolt-award winning products 20 years of process improvement ranging from small co-located teams to 80 team global development shops. Past President of Agile New England Author of “DIY Agile Kickstart Founder and past CTO and CEO of AccuRev

Upload: others

Post on 07-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -1-

Damon Poole

Chief Agilist, Eliassen Group’s Agile Practice

Creator of multiple Jolt-award winning

products

20 years of process improvement ranging

from small co-located teams to 80 team

global development shops.

Past President of Agile New England

Author of “DIY Agile Kickstart”

Founder and past CTO and CEO of

AccuRev

Page 2: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -2-

Page 3: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -3-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 4: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -4-

Agile Manifesto

“Working software over comprehensive documentation”

We are uncovering better ways of developing software by doing it and helping others do it.

“Working software is the primary measure of progress.”

Values

Principles

Page 5: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -5-

Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it.

“Responding to change over following a plan”

“Customer collaboration over contract negotiation”

“Working software over comprehensive documentation”

“Individuals and interactions over process and tools”

Values

“The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.”

“Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.”

“Working software is the primary measure of progress.”

“Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.”

“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”

“Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.”

“At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.”

“Continuous attention to technical excellence and good design enhances agility.”

“Business people and developers must work together daily throughout the project.”

“Build projects around motivated individuals, give them the environment and support they need, and trust them to get the job done,

“Simplicity -- the art of maximizing the amount of work not done – is essential.”

“The best architectures, requirements, and designs emerge from self-organizing teams”

Principles

Scrum? Kanban?

XP?

?

Page 6: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -6-

Many Practices are Subject of a Whole Book!

Page 7: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -7-

What’s in a Feature?

Show loan status.

Page 8: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -8-

Each Feature is Comprised of Many Aspects

#define a b

/*

* This is great code.

*/

bool doStuff ( ) {

index++;

}

Page 9: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -9-

Every Project Contains Features of Many Sizes

Page 10: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

10-

Traditional Development, More or Less

✔ #define a b

/*

* This is great code.

*/

bool doStuff ( ) {

index++;

}

• Risk reduced • Actual cost known • Feedback available • Problems known • Able to change course • Able to receive value

Page 11: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

11-

$

Page 12: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

12-

$

Page 13: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

13-

Agile Development

Higher Quality

Options Visibility Higher

ROI Faster

Texting

Linkedin

Facebook

Twitter

• Risk reduced • Actual cost known • Feedback available • Problems known • Able to change course • Able to receive value

Page 14: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

14-

Operational Efficiency vs Business Value Efficiency

Done

Page 15: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

15-

Operational Efficiency vs Business Value Efficiency

Done

Page 16: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

16-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 17: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

17-

Why Bother?

Column A Column B

• Not able to take all vacation days

• Not clear how work provides value

• Working on boring projects

• Working on old technology

• Declining working conditions

• Company losing competitiveness

• Company value declining

• Not getting bonuses

• Benefit reduction

• Salary reduction

• Working long hours

• Project shelved

• Project cancelled

• Layoffs/RIFs

• Out of business

Page 18: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

18-

$$$

Results Todo

Bank Account

Shelved

Cancelled

Unused

Customer

Value Tangible

Value Revenue

new

old

Strategy Product

Mgmt

Market/Customers

Page 19: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

19-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 20: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

20-

User Stories

<user role> wants to <achieve some goal>

Traveller wants

to edit a booking

Airline wants

data on people

booking hotels

with flights

Traveller wants

to enter a

booking

Admin wants a

report of site-

wide activity

“Customer collaboration over contract negotiation”

“Business people and developers must work

together daily throughout the project.”

Page 21: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

21-

User Story

Traveller wants to

edit a booking

8

Tom

Headline Estimate in story points

Who is working

on it

Goal

Customer

Page 22: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

22-

User Story

Traveller wants to

edit a booking

3

Tom

Headline Estimate in story points

Who is working

on it

Goal

Customer focused

Customer, customer proxy, scrum master, developer,

tester, and documenter can all understand them

Separates the “what” from the “how”

Customer

Page 23: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

23-

Who is “The Customer?”

Market/Customers

Business Unit

Software

Development

Page 24: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

24-

Who is “The Customer?”

Market/Customers

Your offering

Page 25: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

25-

Bill Wake’s “INVEST” Guidelines

Independent • Aside from core functionality, doesn’t depend on other stories

Negotiable. • A story is a conversation starter, not the end result

Valuable to the user, can be used directly • “Implement Avatar api” has no value in and of itself

Estimable • No research required, well understood

Small

Testable

Page 26: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

26-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 27: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

27-

Deciding Where to Invest

A

A

B

B

C

C

D

D

Cost Value

Who wants to

make some

money?

Page 28: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

28-

The Time Value of Money

A B

C D

Invested

here

Time

Valu

e

Learning also has value

Page 29: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

29-

Managing Priorities

Priority Definition

0 Committed to release

1 As soon as possible

2 Important

3 Nice to have

4 Not important

Page 30: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

30-

Managing Priorities

Priority Translation

0 Maybe

Page 31: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

31-

Managing Priorities

Priority Translation

0 Maybe

1 No

2 No

3 No

4 No

Page 32: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

32-

Backlog

Traveller

wants

to see their

upcoming

trips

2

Tom

Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to edit a

booking

3

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

5

Bob

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Traveller

wants

to move a

booking

2

Bob

$$$

$

“Simplicity -- the art of maximizing the amount of work not done – is essential.”

“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”

“Responding to change over following a plan”

“Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.”

Most Value

Least Value

Product

Page 33: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

33-

Negotiation Tool

Traveller

wants

to see their

upcoming

trips

2

Tom

Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to edit a

booking

3

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

5

Bob

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Rele

ase

Traveller

wants

to move a

booking

2

Bob

Traveller

wants to e-

mail an airline

booking

2

Page 34: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

34-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 35: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

35-

Splitting out the Gold

User wants… 8

8

“Yes! I need that and can use it.”

Page 36: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

36-

Page 37: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

37-

Operational Efficiency vs. Business Value Efficiency

Valu

e

Cost/Time

Page 38: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

38-

Splitting out the Gold

User wants… 3 User wants… 5

5 3

“Yes! I need that and can use it.”

“Yes! I need that and can use it.”

Page 39: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

39-

Done

Page 40: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

40-

Cost/Time

Valu

e

Operational Efficiency vs. Business Value Efficiency

Page 41: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

41-

Story Splitting Techniques

At “and” or “comma”

By acceptance Test

By user

By grafting new technology onto old

By workflow

By level of value / constraining effort

By numerical reduction

Into Create/Read/Update/Delete

By “going sideways”

By use case

Page 42: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

42-

Splitting by Acceptance Test

Traveller wants

to send a travel

e-mail to the

site.

8

Traveller wants

to use e-mails

from Hotels

5 Traveller wants

to use e-mails

from airlines

5 Traveller wants

to use e-mails

from car rental

agencies

5

Acceptance Tests

1. Handles a hotel booking

2. Handles an airline booking

3. Handles a car booking

Page 43: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

43-

Breaking Down by Layer

Person wants

to send a

greeting card

30

Person wants

UI for sending a

greeting card

13

Person wants

middleware for

sending a greeting

card

13

Person wants

back end for

sending a greeting

card

13

Page 44: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

44-

Splitting By Workflow

Velocity: 20

Person wants

to select a card

to send

5 Person wants

to customize

the card

5 Person wants

to select

delivery options

5 Person wants

to check a

proof of the

card

5

Person wants

error checking 5 Person wants

to pay for the

card

5

Page 45: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

45-

Person wants

to select a card

to send

5 Person wants

to customize

the card

5 Person wants

to check a

proof of the

card

5 Person wants

to select

delivery options

5

GUI for card

selection

Xmit card type

to server

Xmit card

example to

client

GUI for card

customization

Textbox for

recipient name

Textbox for

address

Person wants

to pay for the

card

5

Textbox for

card message

Xmit custom

information

Artwork

GUI for delivery

options

Xmit delivery

options

Generate final

card

Display final

card

GUI for

proofing

GUI for

payment

options

Validate

payment

information

Create card

fulfillment data

Place card

order with

partner

Page 46: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

46-

Person wants

to send a happy

birthday card

8

Set card type

as

HAPPY_BDAY

Xmit card type

to server

GUI for card

customization

Textbox for

recipient name

Textbox for

address

Textbox for

card message

Xmit custom

information

Artwork

GUI for delivery

options

Xmit delivery

options

Generate final

card

Display final

card

GUI for

proofing

GUI for

payment

options

Validate

payment

information

Create card

fulfillment data

Place card

order with

partner

GUI for card

selection

Xmit card

example to

client

GUI to collect

Happy

Birthday info

Set payment

options as

DLVR_GRND

Page 47: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

47-

Strawman

Send a “Happy Birthday” message

3 New England Drive Boston,

Address:

Ok Cancel

Grandma Betty To:

Person wants

to send a happy

birthday card

8

Page 48: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

48-

Person wants

to send a happy

birthday card

8

Person wants

to select a card

to send

5

Person wants

to customize

the card

5

Person wants

to select

delivery options

5

Person wants

to check a

proof of the

card

5

Person wants

to pay for the

card

5

Page 49: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

49-

Xmit card type

to server

GUI for card

customization

Textbox for

recipient name

Textbox for

address

Textbox for

card message

Xmit custom

information

Artwork

GUI for

payment

options

Validate

payment

information

Create card

fulfillment data

Place card

order with

partner

GUI for card

selection

Xmit card

example to

client

Person wants

to select a card

to send

5 Person wants

to customize

the card

5 Person wants

to pay for the

card

5 Person wants

to check a

proof of the

card

5 Person wants

to select

delivery options

5

GUI for delivery

options

Xmit delivery

options

Generate final

card

Display final

card

GUI for

proofing

Page 50: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

50-

Xmit card type

to server

GUI for card

customization

Textbox for

recipient name

Textbox for

address

Textbox for

card message

Xmit custom

information

Artwork

GUI for

payment

options

Validate

payment

information

Create card

fulfillment data

Place card

order with

partner

GUI for card

selection

Xmit card

example to

client

Person wants

to select a card

to send

5 Person wants

to customize

the card

5 Person wants

to pay for the

card

5 5 Person wants

to check a

proof of the

card

5 Person wants

to select

delivery options

5

GUI for delivery

options

Xmit delivery

options

Generate final

card

Display final

card

GUI for

proofing

Page 51: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

51-

Xmit card type

to server

GUI for card

customization

Textbox for

recipient name

Textbox for

address

Textbox for

card message

Xmit custom

information

Artwork

GUI for

payment

options

Validate

payment

information

Create card

fulfillment data

Place card

order with

partner

GUI for card

selection

Xmit card

example to

client

Person wants

to select a card

to send

5 Person wants

to pay for the

card

5 Person wants

to check a

proof of the

card

5 Person wants

to select

delivery options

5

GUI for delivery

options

Xmit delivery

options

Generate final

card

Display final

card

GUI for

proofing

Person wants

to customize

the card

5 5

Page 52: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

52-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 53: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

53-

Traveller

wants

to see their

upcoming

trips

2

Tom Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to e-mail a

hotel booking

2

Traveller

wants

to edit a

booking

2

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

3

Bob

Traveller

wants

to register with

the system

3

Sue

coding testing accept backlog done

Seller wants to

remove an ad

5

Seller wants to

show an ad

5

Sue

iter

Traveller

wants

to e-mail a car

booking

2

Traveller

wants

to e-mail an

airline booking

2

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Hotel owner

wants to

check usage

data

2

Airline wants

to check

usage data

2

Car rental

agency wants

to check

usage data

2

Page 54: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

54-

coding testing accept backlog done

Seller wants to

remove an ad

5 Traveller

wants

to see their

upcoming

trips

2

Tom

Seller wants to

show an ad

5

Sue

iter

Traveller

wants

to e-mail a car

booking

2

Traveller

wants

to e-mail an

airline booking

2

Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to e-mail a

hotel booking

2

Traveller

wants

to edit a

booking

2

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

3

Bob

Traveller

wants

to register with

the system

3

Sue

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Hotel owner

wants to

check usage

data

2

Airline wants

to check

usage data

2

Car rental

agency wants

to check

usage data

2

Page 55: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

55-

coding testing accept backlog done

Seller wants to

remove an ad

5 Traveller

wants

to see their

upcoming

trips

2

Tom

Seller wants to

show an ad

5

Sue

iter

Traveller

wants

to e-mail a car

booking

2

Traveller

wants

to e-mail an

airline booking

2 Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to e-mail a

hotel booking

2

Traveller

wants

to edit a

booking

2

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

3

Bob

Traveller

wants

to register with

the system

3

Sue

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Hotel owner

wants to

check usage

data

2

Airline wants

to check

usage data

2

Car rental

agency wants

to check

usage data

2

Page 56: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

56-

coding testing accept backlog done

Seller wants to

remove an ad

5 Traveller

wants

to see their

upcoming

trips

2

Tom

Seller wants to

show an ad

5

Sue

iter

Traveller

wants

to e-mail a car

booking

2

Traveller

wants

to e-mail an

airline booking

2 Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to e-mail a

hotel booking

2

Traveller

wants

to edit a

booking

2

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

3

Bob

Traveller

wants

to register with

the system

3

Sue

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Hotel owner

wants to

check usage

data

2

Airline wants

to check

usage data

2

Car rental

agency wants

to check

usage data

2

Page 57: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

57-

Activity vs Achievement

Page 58: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

58-

coding testing accept backlog done

Seller wants to

remove an ad

5 Traveller

wants

to see their

upcoming

trips

2

Tom

Seller wants to

show an ad

5

Sue

iter

Traveller

wants

to e-mail a car

booking

2

Traveller

wants

to e-mail an

airline booking

2 Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to e-mail a

hotel booking

2

Traveller

wants

to edit a

booking

2

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

3

Bob

Traveller

wants

to register with

the system

3

Sue

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Hotel owner

wants to

check usage

data

2

Airline wants

to check

usage data

2

Car rental

agency wants

to check

usage data

2

10 9 8 7 6 5 4 3 2 1

5

10

15

20

Sto

ry

Po

ints

Days

Page 59: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

59-

coding testing accept backlog done

Seller wants to

remove an ad

5

Traveller

wants

to see their

upcoming

trips

2

Tom

Seller wants to

show an ad

5

Sue

iter

Traveller

wants

to e-mail a car

booking

2

Traveller

wants

to e-mail an

airline booking

2

Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to e-mail a

hotel booking

2

Traveller

wants

to edit a

booking

2

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

3

Bob

Traveller

wants

to register with

the system

3

Sue

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Hotel owner

wants to

check usage

data

2

Airline wants

to check

usage data

2

Car rental

agency wants

to check

usage data

2

10 9 8 7 6 5 4 3 2 1

5

10

15

20

Sto

ry

Po

ints

Days

Page 60: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

60-

coding testing accept backlog done

Seller wants to

remove an ad

5

Traveller

wants

to see their

upcoming

trips

2

Tom

Seller wants to

show an ad

5

Sue

iter

Traveller

wants

to e-mail a car

booking

2

Traveller

wants

to e-mail an

airline booking

2 Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to e-mail a

hotel booking

2 Traveller

wants

to edit a

booking

2

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

3

Bob

Traveller

wants

to register with

the system

3

Sue

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Hotel owner

wants to

check usage

data

2

Airline wants

to check

usage data

2

Car rental

agency wants

to check

usage data

2

10 9 8 7 6 5 4 3 2 1

5

10

15

20

Sto

ry

Po

ints

Days

Page 61: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

61-

coding testing accept backlog done

Seller wants to

remove an ad

5

Seller wants to

show an ad

5

Sue

iter

Traveller

wants

to e-mail a car

booking

2

Traveller

wants

to e-mail an

airline booking

2

Traveller

wants

to link to on-

line check-in

2

Traveller

wants

to link to

cancel a

booking

2

Hotel owner

wants to

check usage

data

2

Airline wants

to check

usage data

2

Car rental

agency wants

to check

usage data

2

Traveller

wants

to see their

upcoming

trips

2

Tom Admin wants a

report of site-

wide activity

5

Bob

Traveller

wants

to e-mail a

hotel booking

2

Traveller

wants

to edit a

booking

2

Tom

Traveller

wants

to delete a

booking

1

Sue

Traveller

wants

to copy a

booking

2

Bob

Traveller

wants

to enter a

booking

3

Bob

Traveller

wants

to register with

the system

3

Sue

10 9 8 7 6 5 4 3 2 1

5

10

15

20

Sto

ry

Po

ints

Days

Page 62: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

62-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 63: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

63-

Bugs are NOT OK

Page 64: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

64-

Bugs Displace Value

Bug fixes

Deferred from B

Bug fixes

Deferred from C

Bug fixes

Release

A

Release

B

Release

C

Release

D

Page 65: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

65-

Typical Test Cycle

Throw away

Thinking

Exploratory testing

Writing of test cases

Writing of manual test

scripts

Automation Update

regression suite

Run tests

Page 66: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

66-

Moving away from concept of “regression” testing

Writing of test cases

Writing of manual test

scripts

Automation

Update test suite

Thinking

Exploratory testing

Run tests continuously

Page 67: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

67-

Unitized Testing

Page 68: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

68-

Unitized Testing

Page 69: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

69-

Unitized Testing

Refactor

Open/Closed pattern from OO programming

Page 70: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

70-

Unitized Testing

Time spent writing unit tests and

refactoring replaces time spent debugging

and manual testing

Page 71: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

71-

Holistic testing

Back end,

infrastructure

Middle layer

Front end

9 UI test cases

Page 72: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

72-

Holistic Testing

Mock

Mock

Mock

Back end,

infrastructure

(Unit+others)

Middle layer

(SoapUI+Unit)

Front end

(QTP+Unit)

9 total test cases

Page 73: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

73-

Unit Test Opportunities

UI code

Services

Middle tier code

Server code

Database: triggers, stored procedures

Deployment activities

Page 74: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

74-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 75: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

75-

Test Driven Development

Programmers write unit tests prior to

coding

If you can’t write a test, you aren’t ready to

code

Writing tests first will change how you

write code

Writing tests after you have written the

code is “too late”

Writing test cases (not test scripts) prior to

writing should also be considered

Page 76: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

76-

Agenda

Introduction

Overview of Agile

Being an Agile Programmer

User Stories

Backlog

Story Splitting

Visualize your work

Limited Work in Progress

Unit testing

Refactoring

TDD

Continuous Integration

Page 77: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

77-

All Tests Run All the Time

Reduces the risk of making a change

Reduced risk enables moving quicker

Problems are found sooner

Page 78: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

78-

Continuous Integration

Version Control

Check-in

Build Artifacts

Unit testing, static code analysis, etc

Deploy UI, service,

db, etc testing

Report and notify

betterCode = unitTesting + refactoring + CI;

Page 79: Damon Poole - gbcacm.org › static › journey › PMTC2012 › TenHabitsAgileProg… · effective method of conveying information to and within a development team is face-to-face

© 2012 Valtivity and others. All Rights Reserved -

79-

Q&A

damonpoole.blogspot.com