distributed agile

120
Licensed Under Creative Commons by Naresh Jain Distributed Agile Issues & Challenges Patterns and Anti-Patterns Naresh Jain Twitter: @nashjain http://blogs.agilefaqs.com 1

Upload: naresh-jain

Post on 17-Aug-2014

14.979 views

Category:

Economy & Finance


1 download

DESCRIPTION

This is based on my 5 years of experience with Distributed Agile. Talks about some patterns and Anti Patterns.

TRANSCRIPT

Page 1: Distributed Agile

Licensed Under Creative Commons by Naresh Jain

Distributed AgileIssues & Challenges

Patterns and Anti-Patterns

Naresh JainTwitter: @nashjain

http://blogs.agilefaqs.com 1

Page 3: Distributed Agile

“right” people are distributed

3

Page 4: Distributed Agile

Global Economy

4

Page 5: Distributed Agile

Business are distributed

5

Page 6: Distributed Agile

Power Centers

6

Page 7: Distributed Agile

7

Page 8: Distributed Agile

Decrease in Communication Bandwidth

8

Page 9: Distributed Agile

Lack of visibility into project status

9

Page 10: Distributed Agile

Lack of visibility into project status

9

Page 11: Distributed Agile

Lack of “remote” Control

10

Page 12: Distributed Agile

11

Page 13: Distributed Agile

Cultural Differences

12

Page 14: Distributed Agile

Configuration Management

13

Page 15: Distributed Agile

Coordination is difficult

14

Page 16: Distributed Agile

Coordination is difficult

14

Page 17: Distributed Agile

Me

15

Page 18: Distributed Agile

16

Page 19: Distributed Agile

Mumbai17

Page 20: Distributed Agile

Tech Talks!

18

Page 21: Distributed Agile

FitNesse ProTest

PatangLa"u

FitDecoratorDBFit

QWick

ProFIT

19

Page 22: Distributed Agile

20

Page 23: Distributed Agile

21

Page 24: Distributed Agile

22

Page 25: Distributed Agile

23

Page 26: Distributed Agile

24

Page 27: Distributed Agile

25

Page 28: Distributed Agile

26

Page 30: Distributed Agile

Lack of Trust

28

Page 31: Distributed Agile

Loss of Context (biz & tech)

29

Page 32: Distributed Agile

Delayed Feedback (distance & time)

30

Page 33: Distributed Agile

Duplication of Effort

31

Page 34: Distributed Agile

Change is Inevitable

32

Page 36: Distributed Agile

Heavyweight Process

34

Page 37: Distributed Agile

More and more Upfront

35

Page 38: Distributed Agile

Strict Change Control

36

Page 39: Distributed Agile

Over-reliance on documentation

37

Page 40: Distributed Agile

Inability to React

38

Page 41: Distributed Agile

Communication Gaps

39

Page 42: Distributed Agile

Frustration

40

Page 43: Distributed Agile

Erosion of Trust

41

Page 45: Distributed Agile

Agile Manifesto

“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and Interactions OVER Processes and Tools. Working Software OVER Comprehensive Documentation.

Customer Collaboration OVER Contract Negotiation. Responding to Change OVER following a Plan.

That is, while there is value in the items on the right, we value the items on the left more.”

43

Page 47: Distributed Agile

Offshore Agile Maintenance Project

Background

EAI project for back office data validation and billing system for a pay-per-view cable company in New York

2 years later, lack of funds to maintain the app

Decision to offshore the project

Ended up with one year maintenance contract.

45

Page 48: Distributed Agile

1 Account Manager1 PM1 BA

2 Tester1DBA

1 Manager1 BA3 Dev

1Tester

46

Page 50: Distributed Agile

Lack of Documentation

48

Page 51: Distributed Agile

Lack of System Expert

49

Page 52: Distributed Agile

Inexperienced Team Members

50

Page 53: Distributed Agile

Lack of Test Safety Net

51

Page 54: Distributed Agile

Legacy Code

52

Page 55: Distributed Agile

Fluctuating Workload

53

Page 56: Distributed Agile

Lack of Trust

54

Page 57: Distributed Agile

Fear

55

Page 58: Distributed Agile

Uncertainty

56

Page 59: Distributed Agile

Frustration

57

Page 60: Distributed Agile

XP Practices we started of with

Planning game – 2 week iterations, story cards, Iteration Planning Meetings

Small releases – 2 to 3 months

Collective code ownership

Continuous integration & Automated Release

Standup meetings

Coding standards

58

Page 61: Distributed Agile

What we did not have/could not do?

Onsite Client

System Metaphor

Simple Design

Automated Testing

User Stories (instead we had CR or Bugs)

40 hour week / sustainable pace

59

Page 62: Distributed Agile

Evolved Agile Practices

Kanban - Priority Log

Micro releases – 2 to 3 days

Refactoring (completely changed the Architecture)

Pair Programming

Collective code ownership

Continuous integration & One click Release

Test Driven Development

60

Page 63: Distributed Agile

Evolved Agile Practices...

Retrospectives

Daily client driven demo on Dev env

EOD Status mail

Cross functional Pairing

Demos and functional walk thru by Client

Automated Acceptance Test

61

Page 64: Distributed Agile

Results

Product performs 3 times faster than before

Huge increase in customer satisfaction

More interesting work with increase per hour rate

Great relationship and happy team

Great platform to experiment with new process ideas

Massive reduction in operating cost of the project

62

Page 65: Distributed Agile

1 PM1 Tester

2 Dev1 Tester

63

Page 67: Distributed Agile

Large Healthcare Enterprise System

SAP like Healthcare suite for medium to large-scale hospitals and institutes

Large Re-architecture effort (Across 3 different Product Lines)

400+ team size across 3 different continents

Multiple Organizations involved for Training and Coaching Teams

65

Page 68: Distributed Agile

Started Off with...

Pilot Project (1 Module of the entire application)

1 PM, 1 Scrum Master, 1 Architect/TL, 6 Dev, 1 BA and 1 Tester

100% Collocated Team

Offshore members were onsite for 3 months (3 Sprints)

66

Page 69: Distributed Agile

Started off with Scrum/XP Practice

2 Week Project Inception

Prioritized Backlog with WAGs

1 Month Sprints

User Stories

Stand-up Meetings

Sprint Review and Retrospectives

Automated Builds

67

Page 70: Distributed Agile

In the first 2 months

1 Month Sprint

User Stories

Automated Acceptance Tests

Test First Development

Collective Code Ownership

Continuous Integration

Sprint Review and Retrospectives

68

Page 71: Distributed Agile

End of 3 Months

2 Week Sprints

Distributed Teams

Evolutionary Design

TDD

Build Promotion and Single Click Release

Automated UI Tests

Brand Ambassadors/Cross Pollination

69

Page 72: Distributed Agile

Soon...Program Organization

Tech Lead Scrum of Scrums

App 1

M3

Scrum Master

Scrum of Scrums

M2M1

M7M6

M4

M5

Tech Lead Scrum of Scrums

App 2

M3

Scrum Master

Scrum of Scrums

M2M1

M6

M4

Tech Lead Scrum of Scrum of Scrums

Shared Services/Arch/Infrastructure

S4

S2S1

S5

S3Frameworks

Scrum Master Scrum of Scrum of Scrums

Program Management Scrum

M8

70

Page 73: Distributed Agile

Architecture Team3 Enterprise Products

18 Module Teams1 DB Team

1 IQA Team

4 Module Teams

4 Module Teams1 Config Mgmt Team

1 IQA Team

4 Module Teams1 IQA Team

71

Page 75: Distributed Agile

Tools got in the Way

73

Page 76: Distributed Agile

Death by Cross-Team Integration

74

Page 77: Distributed Agile

End-to-End Delivery came to Grinding Halt

75

Page 78: Distributed Agile

Confusion & Rework

76

Page 79: Distributed Agile

Frustration

77

Page 81: Distributed Agile

Its the people Duh!

Build teams around motivated and passionate individuals

Build a team environment where people are not afraid to try new things and fail (fail fast)

Make work a fun place.

Empowered Small Teams

79

Page 82: Distributed Agile

Increase visibility and enable early feedback.

A weekly software showcase gives more confidence than a weekly status report.

Fail fast, recover quickly and at lower cost

Small Frequent Releases

80

Page 83: Distributed Agile

Customer does Feature prioritization

Customer uses early feedback to elaborate on and develop the requirements. Eliminates the need to articulate requirements in detailed documentation

Customer makes business decision and development team makes technical decisions in collaboration with each other.

Puts the customer in the driving seat

Customer == Product Owner

81

Page 84: Distributed Agile

Adaptive Planning

Inspect and Adapt

Help responding to change

Teams communicate often, share information frequently

82

Page 85: Distributed Agile

Testing centric

Test early, Test often and Test continuously

Continuous integration

Integrate with every checkin and avoid Integration Nightmares

Automated Acceptance Tests

Let acceptance criteria drive your development

Team tastes success every time an iteration successfully passes customer’s test.

Feedback Driven

83

Page 87: Distributed Agile

Constant integration, building & testing of system with each change

Set up a build promotion process and reduces on-site deployment risk.

“The last person doesn’t go home until the build is clean”

Continuous Integration

85

Page 88: Distributed Agile

Reduces ambiguity around requirements by having executable specifications

Acceptance Criteria per story

Acceptance Tests are written before coding starts

Use Unit Tests to drive your design

Build a safety net to prevent regression bugs

Test Driven Development

86

Page 89: Distributed Agile

Cross Functional Pairing and Pair Programming

Single shared code repository per project

Mutually agreed coding standards and guidelines (Automated Check)

Code Walk-through

Collective Ownership

87

Page 90: Distributed Agile

Other Practices

Stand Up Meetings/Daily Scrum

Dev Hurdles

Retrospectives

Planning Game

88

Page 91: Distributed Agile

Other Practices

Stand Up Meetings/Daily Scrum

Dev Hurdles

Retrospectives

Planning Game

88

Page 93: Distributed Agile

Shared Workload

Work split

Divide work by functionality (stories), not by technical layers (horizontally). Otherwise, you create an interdependence that makes the dependent sub-team less productive

Collective Ownership

Each team is capable of demonstrating end-to-end functionality

Capacity surpluses/shortages can be balanced through active management of work load distribution

90

Page 94: Distributed Agile

Everyone works on the same release/iteration cycle drumbeats

Shared code base fosters collective ownership of the source code

Shared build environments allow teams to collaborate and integrate continuously

Developing in “End-to-end” functional slices rather than layers allows teams to build upon each other’s work and reduces dependencies between locations

Single Virtual Team

91

Page 95: Distributed Agile

Cross Pollination

92

Page 96: Distributed Agile

Seeding Visits

Start the project with a collocated team

Knowledge Transfer – People as carriers of knowledge

Build inter-personal relationships

Cross Pollination

92

Page 97: Distributed Agile

Seeding Visits

Start the project with a collocated team

Knowledge Transfer – People as carriers of knowledge

Build inter-personal relationships

“Maintenance” Visits

Ongoing

Bi-directional and multifunctional

Cultural Ambassadors

Cross Pollination

92

Page 98: Distributed Agile

Seeding Visits

Start the project with a collocated team

Knowledge Transfer – People as carriers of knowledge

Build inter-personal relationships

“Maintenance” Visits

Ongoing

Bi-directional and multifunctional

Cultural Ambassadors

Establish a Travel budget. Often it is a very small percentage of total project cost.

Cross Pollination

92

Page 99: Distributed Agile

Cross Pollination - Offshore ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

93

Page 100: Distributed Agile

Cross Pollination - Offshore ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

i 0 & i1

93

Page 101: Distributed Agile

Cross Pollination - Offshore ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

i 0 & i1 i 2

93

Page 102: Distributed Agile

Cross Pollination - Offshore ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

i 0 & i1 i 2 i 3

93

Page 103: Distributed Agile

Cross Pollination - Offshore ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

i 0 & i1 i 2 i 3 i 4

93

Page 104: Distributed Agile

Cross Pollination - Distributed ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

94

Page 105: Distributed Agile

Cross Pollination - Distributed ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

i 0 & i1

94

Page 106: Distributed Agile

Cross Pollination - Distributed ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

i 0 & i1 i 2

94

Page 107: Distributed Agile

Cross Pollination - Distributed ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

i 0 & i1 i 2 i 3

94

Page 108: Distributed Agile

Cross Pollination - Distributed ModelTime

OnSite

Offshore

- Offshore Team Member

- Client-side Team Member - Swap Members

i 0 & i1 i 2 i 3 i 4

94

Page 109: Distributed Agile

Simple Tools take you a long way

Physical Story walls with pictures on Wikis can be quite powerful

Good version control system like SVN

Online collaboration tools like Google Docs, Card Meeting, Forums, etc

5-10 min video recording using simple cameras

95

Page 110: Distributed Agile

Source : ThoughtWorks

96

Page 111: Distributed Agile

Infrastructure

High availability, high speed networks

High-quality speakerphones, webcams

Informative Workspaces and Information Radiators

Communications Plans

Standing calls

Overlapping hours

Instant Messaging, VoIP, NetMeeting, Webex etc.

Wikis

Team member photos on the wall

Massive over-communication

97

Page 112: Distributed Agile

Local Standup meetings

Source : ThoughtWorks

98

Page 114: Distributed Agile

Communication Anti-Patterns

Single Point of Failure - Resist single person communicating with the on-site team. Unless the team has language barriers

Hide real issues - Embrace transparency, honesty and openness

One liner emails - You need to set context in each mail.

Using Wikis to Dump information and not collaborate

100

Page 115: Distributed Agile

Expectations Anti-Patterns

50% cost saving - Don’t sell Distributed Development purely as a cost saving scheme

Unrealistic expectations about productivity - there will be communication overhead, there will be rework and there will be misunderstandings

Wrongly try to please the customer/onsite team - Learn to say “No”

101

Page 116: Distributed Agile

Focus related Anti-patterns

Tool Driven - Don’t be a tool slave. Choose the right tool for the right job.

Process OVER People - Don’t focus too much on a consistent, well-defined process across all locations. Instead let people define what works for them in their location.

102

Page 117: Distributed Agile

Work Allocation Anti-Patterns

Slice work such that the two teams have to interact very little - They will drift away.

Occasional involvement - You don’t swing a huge requirement document and expect things to come back the way you wanted them

Change Control Boards - Collaborate with the customer to provide them competitive advantage

103

Page 118: Distributed Agile

Conclusion

Distributed Development is difficult in general!

Agile can help.

Strong Development practices very important!

104

Page 119: Distributed Agile

Most of this is based on my 5 years of experience at ThoughtWorks

Distributed Agile Development and the Death of Distance

http://www.thoughtworks.com/press-releases/Distributed-Agile-Development-and-the-Death-of-Distance.html

Case Study: Distributed Agile Development

http://www.pivolis.com/pdf/Distributed_Agile_V1.0.pdf

Distributed Agile

http://www.agilealliance.com/articles/steindlchristophdistr/file

Using an Agile Software Process with Offshore Development

http://www.martinfowler.com/articles/agileOffshore.html

References

105

Page 120: Distributed Agile

Questions?

Thank youDistributed Agile

Naresh [email protected]

106