SlideShare a Scribd company logo
Distributed Agile
   Issues & Challenges
Patterns and Anti-Patterns
          Naresh Jain
       Twitter: @nashjain
   http://blogs.agilefaqs.com
   Licensed Under Creative Commons by Naresh Jain
                                                    1
Why Distributed
 Development?

 Licensed Under Creative Commons by Naresh Jain
                                                  2
“right” people are distributed




                                 3
Global Economy




                 4
Business are distributed




                           5
Power Centers




                6
7
Decrease in Communication Bandwidth




                                  8
Lack of visibility into project status




                                         9
Lack of visibility into project status




                                         9
Lack of “remote” Control




                           10
11
Cultural Differences




                       12
Configuration Management




                          13
Coordination is difficult




                           14
Coordination is difficult




                           14
Me


     15
16
Mumbai
         17
Tech Talks!




              18
FitNesse      ProTest



DBFit     FitDecorator     ProFIT



   La"u       Patang   QWick



                                    19
20
21
22
23
24
25
26
Root Cause
My Observations



Licensed Under Creative Commons by Naresh Jain
                                                 27
Lack of Trust




                28
Loss of Context (biz & tech)




                               29
Delayed Feedback (distance & time)




                                     30
Duplication of Effort




                        31
Change is Inevitable




                       32
What does this lead to?


     Licensed Under Creative Commons by Naresh Jain
                                                      33
Heavyweight Process




                      34
More and more Upfront




                        35
Strict Change Control




                        36
Over-reliance on documentation




                                 37
Inability to React




                     38
Communication Gaps




                     39
Frustration




              40
Erosion of Trust




                   41
Distributed Agile?



  Licensed Under Creative Commons by Naresh Jain
                                                   42
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
Case Studies



Licensed Under Creative Commons by Naresh Jain
                                                 44
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
1 Account Manager
      1 PM
       1 BA
     2 Tester
     1DBA
                    1 Manager
                      1 BA
                      3 Dev
                    1Tester




                                46
We Faced Typical
Maintenance Project
    Challenges
   Licensed Under Creative Commons by Naresh Jain
                                                    47
Lack of Documentation




                        48
Lack of System Expert




                        49
Inexperienced Team Members




                             50
Lack of Test Safety Net




                          51
Legacy Code




              52
Fluctuating Workload




                       53
Lack of Trust




                54
Fear




       55
Uncertainty




              56
Frustration




              57
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
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
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
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
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
1 PM
1 Tester

             2 Dev
           1 Tester




                      63
Case Study 2



Licensed Under Creative Commons by Naresh Jain
                                                 64
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
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
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
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
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
Soon...Program Organization
                                   Program Management
                                          Scrum



           Scrum Master Scrum of Scrum                  Tech Lead Scrum of
                   of Scrums                             Scrum of Scrums


      App 1
                                               App 2                           Shared Services/
M1                   M2                                                        Arch/Infrastructure
      Scrum                         M1                          M2
      Master
     Scrum of                                  Scrum
     Scrums                                    Master
                                              Scrum of                         S1               S2
                     M4                       Scrums

M5                                 M6

     Tech Lead       M8                                                      Frameworks         S3
      Scrum of
      Scrums                                 Tech Lead
                                              Scrum of
                                              Scrums
                                                                 M4           S4           S5
M3                   M7            M3
      M6


                                                                                                     70
4 Module Teams
  Architecture Team
                        1 Config Mgmt Team
3 Enterprise Products
                            1 IQA Team
  18 Module Teams
      1 DB Team
    1 IQA Team                              4 Module Teams
                                              1 IQA Team



                                              4 Module Teams




                                                               71
Key Challenges We Faced


     Licensed Under Creative Commons by Naresh Jain
                                                      72
Tools got in the Way




                       73
Death by Cross-Team Integration




                                  74
End-to-End Delivery came to Grinding Halt




                                        75
Confusion & Rework




                     76
Frustration




              77
Summary
How Agile can help?

   Licensed Under Creative Commons by Naresh Jain
                                                    78
Empowered Small Teams


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.




                                                              79
Small Frequent Releases


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




                                                         80
Puts the customer in the driving seat


   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.



                    Customer == Product Owner

                                                                     81
Adaptive Planning



Inspect and Adapt
Help responding to change
Teams communicate often, share information frequently




                                                        82
Feedback Driven
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.



                                                                 83
Practices that make a
     Difference

    Licensed Under Creative Commons by Naresh Jain
                                                     84
Continuous Integration

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”




                                   85
Test Driven Development

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




                                                             86
Collective Ownership


Cross Functional Pairing and Pair Programming
Single shared code repository per project
Mutually agreed coding standards and guidelines (Automated
Check)
Code Walk-through




                                                             87
Other Practices


Stand Up Meetings/Daily Scrum
Dev Hurdles
Retrospectives
Planning Game




                                   88
Other Practices


Stand Up Meetings/Daily Scrum
Dev Hurdles
Retrospectives
Planning Game




                                   88
Distributed Agile
    Patterns

 Licensed Under Creative Commons by Naresh Jain
                                                  89
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
Single Virtual Team
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



                                                               91
Cross Pollination




                    92
Cross Pollination
Seeding Visits
 Start the project with a collocated team
 Knowledge Transfer – People as carriers of knowledge
 Build inter-personal relationships




                                                        92
Cross Pollination
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




                                                        92
Cross Pollination
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.

                                                                    92
Cross Pollination - Offshore Model
                               Time




OnSite




Offshore

   - Offshore Team Member

   - Client-side Team Member          - Swap Members

                                                   93
Cross Pollination - Offshore Model
                               Time
             i 0 & i1



OnSite




Offshore

   - Offshore Team Member

   - Client-side Team Member          - Swap Members

                                                   93
Cross Pollination - Offshore Model
                                    Time
             i 0 & i1          i2



OnSite




Offshore

   - Offshore Team Member

   - Client-side Team Member               - Swap Members

                                                        93
Cross Pollination - Offshore Model
                                    Time
             i 0 & i1          i2          i3



OnSite




Offshore

   - Offshore Team Member

   - Client-side Team Member                    - Swap Members

                                                             93
Cross Pollination - Offshore Model
                                    Time
             i 0 & i1          i2          i3   i4



OnSite




Offshore

   - Offshore Team Member

   - Client-side Team Member                         - Swap Members

                                                                  93
Cross Pollination - Distributed Model
                               Time




OnSite




Offshore


   - Offshore Team Member

   - Client-side Team Member          - Swap Members

                                                   94
Cross Pollination - Distributed Model
                               Time
             i 0 & i1



OnSite




Offshore


   - Offshore Team Member

   - Client-side Team Member          - Swap Members

                                                   94
Cross Pollination - Distributed Model
                                    Time
             i 0 & i1          i2



OnSite




Offshore


   - Offshore Team Member

   - Client-side Team Member               - Swap Members

                                                        94
Cross Pollination - Distributed Model
                                    Time
             i 0 & i1          i2          i3



OnSite




Offshore


   - Offshore Team Member

   - Client-side Team Member                    - Swap Members

                                                             94
Cross Pollination - Distributed Model
                                    Time
             i 0 & i1          i2          i3   i4



OnSite




Offshore


   - Offshore Team Member

   - Client-side Team Member                         - Swap Members

                                                                  94
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
Source : ThoughtWorks

                        96
Massive over-communication
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

                                                   97
Local Standup meetings




     Source : ThoughtWorks
                             98
Anti-Patterns



Licensed Under Creative Commons by Naresh Jain
                                                 99
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
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
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
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
Conclusion


Distributed Development is difficult in general!
                Agile can help.
Strong Development practices very important!



                                             104
References
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
                                                                        105
Questions?



Thank you
  Distributed Agile

     Naresh Jain
naresh@agilefaqs.com

                       106

More Related Content

PDF
Evolution Of Team Interaction Models
PDF
Offshore Agile Maintenance
PDF
Refactoring Fest
PDF
Test Driven Development
PDF
Agile Overview
PDF
Waterfall to Agile Demo
PDF
XP And Scrum Practices
PDF
Pair Programming
Evolution Of Team Interaction Models
Offshore Agile Maintenance
Refactoring Fest
Test Driven Development
Agile Overview
Waterfall to Agile Demo
XP And Scrum Practices
Pair Programming

What's hot (20)

PDF
Agile Maintenance
PDF
Agile Is the New Waterfall
PPT
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
PDF
Continuous Deployment Demystified
PDF
Managing Iterations
PPT
Essential Elements Of Distributed Agile
PDF
PDF
Creating value using Agile Methods- Nanda Lankalapalli
PDF
Agile Software Development Process Practice in Thai Culture
PDF
Software testing agile_environment_wp
PDF
Agile Software Development in Practice - A Developer Perspective
PDF
How product designer work in agile scrum team
PDF
Amy.stapleton
PPTX
D.mathieson agile software_development_using_scrum
PDF
Agile tour 2011 ralph jocham - scrum primer
PPTX
Introduction to the Agile Methods
PDF
MVP Hacks
PDF
Ralph jocham agile portfolio based release trains
PPTX
OSSCube - Zend Webinar
PPT
Redistributable introtoscrum
Agile Maintenance
Agile Is the New Waterfall
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Continuous Deployment Demystified
Managing Iterations
Essential Elements Of Distributed Agile
Creating value using Agile Methods- Nanda Lankalapalli
Agile Software Development Process Practice in Thai Culture
Software testing agile_environment_wp
Agile Software Development in Practice - A Developer Perspective
How product designer work in agile scrum team
Amy.stapleton
D.mathieson agile software_development_using_scrum
Agile tour 2011 ralph jocham - scrum primer
Introduction to the Agile Methods
MVP Hacks
Ralph jocham agile portfolio based release trains
OSSCube - Zend Webinar
Redistributable introtoscrum

Similar to Distributed Agile (20)

PPTX
Agile marries itil
PDF
Influences on Agile Practise Tailoring in Enterprise Software Development
PDF
Intro to Agile
PDF
Agile is the New Black
PPTX
Agile awareness -implementation1.0
KEY
Agile intro module 1
PDF
Dollars and dates are killing agile final
PDF
Dollars and Dates are Killing Agile
PDF
Introduction To Agile
PDF
Agile Software Development in practice: Experience, Tips and Tools from the T...
PPTX
Agile Anti-Patterns. Yes your agile projects can and will fail too.
PDF
Nearshore presentation (feb 2013)
PPTX
Skiing and boxing: coaching product and enterprise teams
PDF
Programmer Anarchy
PDF
The BA role in Agile Development
PPTX
Transforming your sw development to agile
PPTX
Distributed Agile Teams
PDF
How to Adopt Agile at Your Organization
PDF
Wanted Team Players
PPT
SIM presentation Oct 9 2012
Agile marries itil
Influences on Agile Practise Tailoring in Enterprise Software Development
Intro to Agile
Agile is the New Black
Agile awareness -implementation1.0
Agile intro module 1
Dollars and dates are killing agile final
Dollars and Dates are Killing Agile
Introduction To Agile
Agile Software Development in practice: Experience, Tips and Tools from the T...
Agile Anti-Patterns. Yes your agile projects can and will fail too.
Nearshore presentation (feb 2013)
Skiing and boxing: coaching product and enterprise teams
Programmer Anarchy
The BA role in Agile Development
Transforming your sw development to agile
Distributed Agile Teams
How to Adopt Agile at Your Organization
Wanted Team Players
SIM presentation Oct 9 2012

More from Naresh Jain (20)

PDF
Problem Solving Techniques For Evolutionary Design
PDF
Agile India 2019 Conference Welcome Note
PDF
Organizational Resilience
PDF
Improving the Quality of Incoming Code
PDF
Agile India 2018 Conference Summary
PDF
Agile India 2018 Conference
PDF
Agile India 2018 Conference
PDF
Agile India 2018 Conference
PDF
Pilgrim's Progress to the Promised Land by Robert Virding
PDF
Concurrent languages are Functional by Francesco Cesarini
PDF
Erlang from behing the trenches by Francesco Cesarini
PDF
Anatomy of an eCommerce Search Engine by Mayur Datar
PDF
Setting up Continuous Delivery Culture for a Large Scale Mobile App
PDF
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
PDF
Value Driven Development by Dave Thomas
PDF
No Silver Bullets in Functional Programming by Brian McKenna
PDF
Functional Programming Conference 2016
PDF
Agile India 2017 Conference
PDF
The Eclipse Way
PDF
Unleashing the Power of Automated Refactoring with JDT
Problem Solving Techniques For Evolutionary Design
Agile India 2019 Conference Welcome Note
Organizational Resilience
Improving the Quality of Incoming Code
Agile India 2018 Conference Summary
Agile India 2018 Conference
Agile India 2018 Conference
Agile India 2018 Conference
Pilgrim's Progress to the Promised Land by Robert Virding
Concurrent languages are Functional by Francesco Cesarini
Erlang from behing the trenches by Francesco Cesarini
Anatomy of an eCommerce Search Engine by Mayur Datar
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Value Driven Development by Dave Thomas
No Silver Bullets in Functional Programming by Brian McKenna
Functional Programming Conference 2016
Agile India 2017 Conference
The Eclipse Way
Unleashing the Power of Automated Refactoring with JDT

Recently uploaded (20)

PPTX
Introduction to Customs (June 2025) v1.pptx
PDF
discourse-2025-02-building-a-trillion-dollar-dream.pdf
PDF
1a In Search of the Numbers ssrn 1488130 Oct 2009.pdf
PDF
Dr Tran Quoc Bao the first Vietnamese speaker at GITEX DigiHealth Conference ...
PDF
Spending, Allocation Choices, and Aging THROUGH Retirement. Are all of these ...
PDF
Predicting Customer Bankruptcy Using Machine Learning Algorithm research pape...
PDF
Lecture1.pdf buss1040 uses economics introduction
PDF
Understanding University Research Expenditures (1)_compressed.pdf
PDF
way to join Real illuminati agent 0782561496,0756664682
PDF
ssrn-3708.kefbkjbeakjfiuheioufh ioehoih134.pdf
PDF
final_dropping_the_baton_-_how_america_is_failing_to_use_russia_sanctions_and...
PDF
illuminati Uganda brotherhood agent in Kampala call 0756664682,0782561496
PPTX
FL INTRODUCTION TO AGRIBUSINESS CHAPTER 1
PDF
ABriefOverviewComparisonUCP600_ISP8_URDG_758.pdf
PDF
NAPF_RESPONSE_TO_THE_PENSIONS_COMMISSION_8 _2_.pdf
PPTX
Session 14-16. Capital Structure Theories.pptx
PDF
how_to_earn_50k_monthly_investment_guide.pdf
PDF
ECONOMICS AND ENTREPRENEURS LESSONSS AND
PDF
Dialnet-DynamicHedgingOfPricesOfNaturalGasInMexico-8788871.pdf
PDF
Circular Flow of Income by Dr. S. Malini
Introduction to Customs (June 2025) v1.pptx
discourse-2025-02-building-a-trillion-dollar-dream.pdf
1a In Search of the Numbers ssrn 1488130 Oct 2009.pdf
Dr Tran Quoc Bao the first Vietnamese speaker at GITEX DigiHealth Conference ...
Spending, Allocation Choices, and Aging THROUGH Retirement. Are all of these ...
Predicting Customer Bankruptcy Using Machine Learning Algorithm research pape...
Lecture1.pdf buss1040 uses economics introduction
Understanding University Research Expenditures (1)_compressed.pdf
way to join Real illuminati agent 0782561496,0756664682
ssrn-3708.kefbkjbeakjfiuheioufh ioehoih134.pdf
final_dropping_the_baton_-_how_america_is_failing_to_use_russia_sanctions_and...
illuminati Uganda brotherhood agent in Kampala call 0756664682,0782561496
FL INTRODUCTION TO AGRIBUSINESS CHAPTER 1
ABriefOverviewComparisonUCP600_ISP8_URDG_758.pdf
NAPF_RESPONSE_TO_THE_PENSIONS_COMMISSION_8 _2_.pdf
Session 14-16. Capital Structure Theories.pptx
how_to_earn_50k_monthly_investment_guide.pdf
ECONOMICS AND ENTREPRENEURS LESSONSS AND
Dialnet-DynamicHedgingOfPricesOfNaturalGasInMexico-8788871.pdf
Circular Flow of Income by Dr. S. Malini

Distributed Agile

  • 1. Distributed Agile Issues & Challenges Patterns and Anti-Patterns Naresh Jain Twitter: @nashjain http://blogs.agilefaqs.com Licensed Under Creative Commons by Naresh Jain 1
  • 2. Why Distributed Development? Licensed Under Creative Commons by Naresh Jain 2
  • 3. “right” people are distributed 3
  • 7. 7
  • 9. Lack of visibility into project status 9
  • 10. Lack of visibility into project status 9
  • 11. Lack of “remote” Control 10
  • 12. 11
  • 17. Me 15
  • 18. 16
  • 19. Mumbai 17
  • 21. FitNesse ProTest DBFit FitDecorator ProFIT La"u Patang QWick 19
  • 22. 20
  • 23. 21
  • 24. 22
  • 25. 23
  • 26. 24
  • 27. 25
  • 28. 26
  • 29. Root Cause My Observations Licensed Under Creative Commons by Naresh Jain 27
  • 31. Loss of Context (biz & tech) 29
  • 35. What does this lead to? Licensed Under Creative Commons by Naresh Jain 33
  • 37. More and more Upfront 35
  • 44. Distributed Agile? Licensed Under Creative Commons by Naresh Jain 42
  • 45. 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
  • 46. Case Studies Licensed Under Creative Commons by Naresh Jain 44
  • 47. 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
  • 48. 1 Account Manager 1 PM 1 BA 2 Tester 1DBA 1 Manager 1 BA 3 Dev 1Tester 46
  • 49. We Faced Typical Maintenance Project Challenges Licensed Under Creative Commons by Naresh Jain 47
  • 51. Lack of System Expert 49
  • 53. Lack of Test Safety Net 51
  • 57. Fear 55
  • 60. 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
  • 61. 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
  • 62. 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
  • 63. 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
  • 64. 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
  • 65. 1 PM 1 Tester 2 Dev 1 Tester 63
  • 66. Case Study 2 Licensed Under Creative Commons by Naresh Jain 64
  • 67. 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
  • 68. 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
  • 69. 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
  • 70. 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
  • 71. 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
  • 72. Soon...Program Organization Program Management Scrum Scrum Master Scrum of Scrum Tech Lead Scrum of of Scrums Scrum of Scrums App 1 App 2 Shared Services/ M1 M2 Arch/Infrastructure Scrum M1 M2 Master Scrum of Scrum Scrums Master Scrum of S1 S2 M4 Scrums M5 M6 Tech Lead M8 Frameworks S3 Scrum of Scrums Tech Lead Scrum of Scrums M4 S4 S5 M3 M7 M3 M6 70
  • 73. 4 Module Teams Architecture Team 1 Config Mgmt Team 3 Enterprise Products 1 IQA Team 18 Module Teams 1 DB Team 1 IQA Team 4 Module Teams 1 IQA Team 4 Module Teams 71
  • 74. Key Challenges We Faced Licensed Under Creative Commons by Naresh Jain 72
  • 75. Tools got in the Way 73
  • 76. Death by Cross-Team Integration 74
  • 77. End-to-End Delivery came to Grinding Halt 75
  • 80. Summary How Agile can help? Licensed Under Creative Commons by Naresh Jain 78
  • 81. Empowered Small Teams 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. 79
  • 82. Small Frequent Releases 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 80
  • 83. Puts the customer in the driving seat 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. Customer == Product Owner 81
  • 84. Adaptive Planning Inspect and Adapt Help responding to change Teams communicate often, share information frequently 82
  • 85. Feedback Driven 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. 83
  • 86. Practices that make a Difference Licensed Under Creative Commons by Naresh Jain 84
  • 87. Continuous Integration 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” 85
  • 88. Test Driven Development 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 86
  • 89. Collective Ownership Cross Functional Pairing and Pair Programming Single shared code repository per project Mutually agreed coding standards and guidelines (Automated Check) Code Walk-through 87
  • 90. Other Practices Stand Up Meetings/Daily Scrum Dev Hurdles Retrospectives Planning Game 88
  • 91. Other Practices Stand Up Meetings/Daily Scrum Dev Hurdles Retrospectives Planning Game 88
  • 92. Distributed Agile Patterns Licensed Under Creative Commons by Naresh Jain 89
  • 93. 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
  • 94. Single Virtual Team 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 91
  • 96. Cross Pollination Seeding Visits Start the project with a collocated team Knowledge Transfer – People as carriers of knowledge Build inter-personal relationships 92
  • 97. Cross Pollination 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 92
  • 98. Cross Pollination 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. 92
  • 99. Cross Pollination - Offshore Model Time OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 93
  • 100. Cross Pollination - Offshore Model Time i 0 & i1 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 93
  • 101. Cross Pollination - Offshore Model Time i 0 & i1 i2 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 93
  • 102. Cross Pollination - Offshore Model Time i 0 & i1 i2 i3 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 93
  • 103. Cross Pollination - Offshore Model Time i 0 & i1 i2 i3 i4 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 93
  • 104. Cross Pollination - Distributed Model Time OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 94
  • 105. Cross Pollination - Distributed Model Time i 0 & i1 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 94
  • 106. Cross Pollination - Distributed Model Time i 0 & i1 i2 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 94
  • 107. Cross Pollination - Distributed Model Time i 0 & i1 i2 i3 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 94
  • 108. Cross Pollination - Distributed Model Time i 0 & i1 i2 i3 i4 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members 94
  • 109. 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
  • 111. Massive over-communication 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 97
  • 112. Local Standup meetings Source : ThoughtWorks 98
  • 113. Anti-Patterns Licensed Under Creative Commons by Naresh Jain 99
  • 114. 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
  • 115. 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
  • 116. 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
  • 117. 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
  • 118. Conclusion Distributed Development is difficult in general! Agile can help. Strong Development practices very important! 104
  • 119. References 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 105
  • 120. Questions? Thank you Distributed Agile Naresh Jain naresh@agilefaqs.com 106