Distributed Agile

Naresh Jain
Naresh JainTech Startup Founder at ConfEngine
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
1 of 120

Recommended

Evolution Of Team Interaction Models by
Evolution Of Team Interaction ModelsEvolution Of Team Interaction Models
Evolution Of Team Interaction ModelsNaresh Jain
7.3K views25 slides
Offshore Agile Maintenance by
Offshore Agile MaintenanceOffshore Agile Maintenance
Offshore Agile MaintenanceNaresh Jain
7.1K views17 slides
Refactoring Fest by
Refactoring FestRefactoring Fest
Refactoring FestNaresh Jain
14.6K views38 slides
Test Driven Development by
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentNaresh Jain
7.6K views89 slides
Agile Overview by
Agile OverviewAgile Overview
Agile OverviewNaresh Jain
8.7K views72 slides
Waterfall to Agile Demo by
Waterfall to Agile DemoWaterfall to Agile Demo
Waterfall to Agile DemoNaresh Jain
9.4K views24 slides

More Related Content

What's hot

Agile Maintenance by
Agile MaintenanceAgile Maintenance
Agile MaintenanceNaresh Jain
13.6K views18 slides
Agile Is the New Waterfall by
Agile Is the New WaterfallAgile Is the New Waterfall
Agile Is the New WaterfallNaresh Jain
68.1K views95 slides
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi) by
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Directi Group
7.2K views16 slides
Continuous Deployment Demystified by
Continuous Deployment DemystifiedContinuous Deployment Demystified
Continuous Deployment DemystifiedNaresh Jain
7.7K views81 slides
Managing Iterations by
Managing IterationsManaging Iterations
Managing IterationsNaresh Jain
5.8K views24 slides
Essential Elements Of Distributed Agile by
Essential Elements Of Distributed AgileEssential Elements Of Distributed Agile
Essential Elements Of Distributed AgileVernon Stinebaker
1.2K views36 slides

What's hot(20)

Agile Maintenance by Naresh Jain
Agile MaintenanceAgile Maintenance
Agile Maintenance
Naresh Jain13.6K views
Agile Is the New Waterfall by Naresh Jain
Agile Is the New WaterfallAgile Is the New Waterfall
Agile Is the New Waterfall
Naresh Jain68.1K views
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi) by Directi Group
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Directi Group7.2K views
Continuous Deployment Demystified by Naresh Jain
Continuous Deployment DemystifiedContinuous Deployment Demystified
Continuous Deployment Demystified
Naresh Jain7.7K views
Managing Iterations by Naresh Jain
Managing IterationsManaging Iterations
Managing Iterations
Naresh Jain5.8K views
Essential Elements Of Distributed Agile by Vernon Stinebaker
Essential Elements Of Distributed AgileEssential Elements Of Distributed Agile
Essential Elements Of Distributed Agile
Vernon Stinebaker1.2K views
Agile Software Development Process Practice in Thai Culture by Wee Witthawaskul
Agile Software Development Process Practice in Thai CultureAgile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai Culture
Wee Witthawaskul1.2K views
Agile Software Development in Practice - A Developer Perspective by Wee Witthawaskul
Agile Software Development in Practice - A Developer PerspectiveAgile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer Perspective
Wee Witthawaskul2.1K views
How product designer work in agile scrum team by Mike Li
How product designer work in agile scrum teamHow product designer work in agile scrum team
How product designer work in agile scrum team
Mike Li840 views
Amy.stapleton by NASAPMC
Amy.stapletonAmy.stapleton
Amy.stapleton
NASAPMC13.3K views
Agile tour 2011 ralph jocham - scrum primer by Agora Group
Agile tour 2011   ralph jocham - scrum primerAgile tour 2011   ralph jocham - scrum primer
Agile tour 2011 ralph jocham - scrum primer
Agora Group740 views
Introduction to the Agile Methods by softwareacademy
Introduction to the Agile MethodsIntroduction to the Agile Methods
Introduction to the Agile Methods
softwareacademy913 views
Ralph jocham agile portfolio based release trains by Agora Group
Ralph jocham agile portfolio based release trainsRalph jocham agile portfolio based release trains
Ralph jocham agile portfolio based release trains
Agora Group838 views
OSSCube - Zend Webinar by OSSCube
OSSCube - Zend WebinarOSSCube - Zend Webinar
OSSCube - Zend Webinar
OSSCube1.9K views
Redistributable introtoscrum by Nguyen Quang
Redistributable introtoscrumRedistributable introtoscrum
Redistributable introtoscrum
Nguyen Quang746 views

Similar to Distributed Agile

From Waterfall to Agile - from predictive to adaptive methods by
From Waterfall to Agile - from predictive to adaptive methodsFrom Waterfall to Agile - from predictive to adaptive methods
From Waterfall to Agile - from predictive to adaptive methodsBjörn Jónsson
2.4K views45 slides
Craig Larman - Scaling Lean & Agile Development by
Craig Larman - Scaling Lean & Agile Development Craig Larman - Scaling Lean & Agile Development
Craig Larman - Scaling Lean & Agile Development Valtech
4.5K views88 slides
Redistributable introtoscrum by
Redistributable introtoscrumRedistributable introtoscrum
Redistributable introtoscrumCiklum Ukraine
1K views58 slides
Scrum wall images by tobias mayer by
Scrum wall images by tobias mayerScrum wall images by tobias mayer
Scrum wall images by tobias mayerConscires Agile Practices
2.2K views53 slides
Zen of Scrum by
Zen of ScrumZen of Scrum
Zen of ScrumMagnus Nord
4.4K views57 slides
Jax Sql Saturday Scrum presentation #130 by
Jax Sql Saturday Scrum presentation #130Jax Sql Saturday Scrum presentation #130
Jax Sql Saturday Scrum presentation #130Christopher Daily
591 views28 slides

Similar to Distributed Agile(20)

From Waterfall to Agile - from predictive to adaptive methods by Björn Jónsson
From Waterfall to Agile - from predictive to adaptive methodsFrom Waterfall to Agile - from predictive to adaptive methods
From Waterfall to Agile - from predictive to adaptive methods
Björn Jónsson2.4K views
Craig Larman - Scaling Lean & Agile Development by Valtech
Craig Larman - Scaling Lean & Agile Development Craig Larman - Scaling Lean & Agile Development
Craig Larman - Scaling Lean & Agile Development
Valtech4.5K views
Jax Sql Saturday Scrum presentation #130 by Christopher Daily
Jax Sql Saturday Scrum presentation #130Jax Sql Saturday Scrum presentation #130
Jax Sql Saturday Scrum presentation #130
Christopher Daily591 views
Scrum managing through complexity by Pierre E. NEIS
Scrum managing through complexityScrum managing through complexity
Scrum managing through complexity
Pierre E. NEIS1.2K views
ITCamp 2012 - Dan Nicola - Scrum v2 by ITCamp
ITCamp 2012 - Dan Nicola - Scrum v2ITCamp 2012 - Dan Nicola - Scrum v2
ITCamp 2012 - Dan Nicola - Scrum v2
ITCamp271 views
Lanzamiento Visual Studio 2012 - Modern ALM by Debora Di Piano
Lanzamiento Visual Studio 2012 - Modern ALMLanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALM
Debora Di Piano646 views
My Journey So Far by skipangel
My Journey So FarMy Journey So Far
My Journey So Far
skipangel9.5K views
Information Development in an Agile Environment by Neeraj Bhatia
Information Development in an Agile EnvironmentInformation Development in an Agile Environment
Information Development in an Agile Environment
Neeraj Bhatia844 views
Agile Requirements by Agile Analysts by Kurt Solarte
Agile Requirements by Agile AnalystsAgile Requirements by Agile Analysts
Agile Requirements by Agile Analysts
Kurt Solarte770 views
Project Management With Scrum by Tommy Norman
Project Management With ScrumProject Management With Scrum
Project Management With Scrum
Tommy Norman22.8K views
Darwin Agile and The Dinosaurs by Endava
Darwin Agile and The DinosaursDarwin Agile and The Dinosaurs
Darwin Agile and The Dinosaurs
Endava1.3K views
Agile project management day 2 by Knowit_TM
Agile project management day 2Agile project management day 2
Agile project management day 2
Knowit_TM2.5K views
Devnology back toschool software reengineering by Devnology
Devnology back toschool software reengineeringDevnology back toschool software reengineering
Devnology back toschool software reengineering
Devnology1.2K views

More from Naresh Jain

Problem Solving Techniques For Evolutionary Design by
Problem Solving Techniques For Evolutionary DesignProblem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary DesignNaresh Jain
842 views40 slides
Agile India 2019 Conference Welcome Note by
Agile India 2019 Conference Welcome NoteAgile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome NoteNaresh Jain
749 views25 slides
Organizational Resilience by
Organizational ResilienceOrganizational Resilience
Organizational ResilienceNaresh Jain
1.4K views79 slides
Improving the Quality of Incoming Code by
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming CodeNaresh Jain
624 views54 slides
Agile India 2018 Conference Summary by
Agile India 2018 Conference SummaryAgile India 2018 Conference Summary
Agile India 2018 Conference SummaryNaresh Jain
877 views19 slides
Agile India 2018 Conference by
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
701 views21 slides

More from Naresh Jain(20)

Problem Solving Techniques For Evolutionary Design by Naresh Jain
Problem Solving Techniques For Evolutionary DesignProblem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary Design
Naresh Jain842 views
Agile India 2019 Conference Welcome Note by Naresh Jain
Agile India 2019 Conference Welcome NoteAgile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome Note
Naresh Jain749 views
Organizational Resilience by Naresh Jain
Organizational ResilienceOrganizational Resilience
Organizational Resilience
Naresh Jain1.4K views
Improving the Quality of Incoming Code by Naresh Jain
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming Code
Naresh Jain624 views
Agile India 2018 Conference Summary by Naresh Jain
Agile India 2018 Conference SummaryAgile India 2018 Conference Summary
Agile India 2018 Conference Summary
Naresh Jain877 views
Agile India 2018 Conference by Naresh Jain
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
Naresh Jain701 views
Agile India 2018 Conference by Naresh Jain
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
Naresh Jain818 views
Agile India 2018 Conference by Naresh Jain
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
Naresh Jain817 views
Pilgrim's Progress to the Promised Land by Robert Virding by Naresh Jain
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert Virding
Naresh Jain385 views
Concurrent languages are Functional by Francesco Cesarini by Naresh Jain
Concurrent languages are Functional by Francesco CesariniConcurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco Cesarini
Naresh Jain497 views
Erlang from behing the trenches by Francesco Cesarini by Naresh Jain
Erlang from behing the trenches by Francesco CesariniErlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco Cesarini
Naresh Jain442 views
Anatomy of an eCommerce Search Engine by Mayur Datar by Naresh Jain
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur Datar
Naresh Jain1.5K views
Setting up Continuous Delivery Culture for a Large Scale Mobile App by Naresh Jain
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Naresh Jain641 views
Towards FutureOps: Stable, Repeatable environments from Dev to Prod by Naresh Jain
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Naresh Jain671 views
Value Driven Development by Dave Thomas by Naresh Jain
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas
Naresh Jain2.4K views
No Silver Bullets in Functional Programming by Brian McKenna by Naresh Jain
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKenna
Naresh Jain774 views
Functional Programming Conference 2016 by Naresh Jain
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016
Naresh Jain567 views
Agile India 2017 Conference by Naresh Jain
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 Conference
Naresh Jain25.5K views
Unleashing the Power of Automated Refactoring with JDT by Naresh Jain
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDT
Naresh Jain623 views

Recently uploaded

InitVerse :Blockchain development trends in 2024.pdf by
InitVerse :Blockchain development trends in 2024.pdfInitVerse :Blockchain development trends in 2024.pdf
InitVerse :Blockchain development trends in 2024.pdfInitVerse Blockchain
24 views9 slides
Motilal Oswal Small Cap Fund One Pager.pdf by
Motilal Oswal Small Cap Fund One Pager.pdfMotilal Oswal Small Cap Fund One Pager.pdf
Motilal Oswal Small Cap Fund One Pager.pdfmultigainfinancial
326 views2 slides
PPI - the role of CDC in decumulation by
PPI - the role of CDC in decumulationPPI - the role of CDC in decumulation
PPI - the role of CDC in decumulationHenry Tapper
224 views40 slides
Minister of LGBT Affairs in Qatar.docx by
Minister of LGBT Affairs in Qatar.docxMinister of LGBT Affairs in Qatar.docx
Minister of LGBT Affairs in Qatar.docxRamis Al-Kuwari
6 views3 slides
TriStar Gold- Corporate Presentation - December 2023 by
TriStar Gold- Corporate Presentation - December 2023TriStar Gold- Corporate Presentation - December 2023
TriStar Gold- Corporate Presentation - December 2023Adnet Communications
514 views14 slides
InitVerse :Blockchain technology trends in 2024.pdf by
InitVerse :Blockchain technology trends in 2024.pdfInitVerse :Blockchain technology trends in 2024.pdf
InitVerse :Blockchain technology trends in 2024.pdfInitVerse Blockchain
23 views9 slides

Recently uploaded(20)

PPI - the role of CDC in decumulation by Henry Tapper
PPI - the role of CDC in decumulationPPI - the role of CDC in decumulation
PPI - the role of CDC in decumulation
Henry Tapper224 views
Minister of LGBT Affairs in Qatar.docx by Ramis Al-Kuwari
Minister of LGBT Affairs in Qatar.docxMinister of LGBT Affairs in Qatar.docx
Minister of LGBT Affairs in Qatar.docx
Ramis Al-Kuwari6 views
TriStar Gold- Corporate Presentation - December 2023 by Adnet Communications
TriStar Gold- Corporate Presentation - December 2023TriStar Gold- Corporate Presentation - December 2023
TriStar Gold- Corporate Presentation - December 2023
Stock Market Brief Deck 125.pdf by Michael Silva
Stock Market Brief Deck 125.pdfStock Market Brief Deck 125.pdf
Stock Market Brief Deck 125.pdf
Michael Silva37 views
Stock Market Brief Deck 12:8.pdf by Michael Silva
Stock Market Brief Deck 12:8.pdfStock Market Brief Deck 12:8.pdf
Stock Market Brief Deck 12:8.pdf
Michael Silva29 views
Debt Watch | ICICI Prudential Mutual Fund by iciciprumf
Debt Watch | ICICI Prudential Mutual FundDebt Watch | ICICI Prudential Mutual Fund
Debt Watch | ICICI Prudential Mutual Fund
iciciprumf24 views
1_updated_Axis India Manufacturing Fund-NFO One pager.pdf by multigainfinancial
1_updated_Axis India Manufacturing Fund-NFO One pager.pdf1_updated_Axis India Manufacturing Fund-NFO One pager.pdf
1_updated_Axis India Manufacturing Fund-NFO One pager.pdf
ENTIME_GEM___GAP.pdf by GRAPE
ENTIME_GEM___GAP.pdfENTIME_GEM___GAP.pdf
ENTIME_GEM___GAP.pdf
GRAPE5 views
Anthony Cattapan: Exploring the Journey of a Financial Luminary by anthonycattapan1
Anthony Cattapan: Exploring the Journey of a Financial LuminaryAnthony Cattapan: Exploring the Journey of a Financial Luminary
Anthony Cattapan: Exploring the Journey of a Financial Luminary
Stock Market Brief Deck 127.pdf by Michael Silva
Stock Market Brief Deck 127.pdfStock Market Brief Deck 127.pdf
Stock Market Brief Deck 127.pdf
Michael Silva228 views
Digital4Climate-Leveraging Digital innovations & data for climate action by Soren Gigler
Digital4Climate-Leveraging Digital innovations & data for climate action Digital4Climate-Leveraging Digital innovations & data for climate action
Digital4Climate-Leveraging Digital innovations & data for climate action
Soren Gigler71 views
List of Qataris Sanctioned by the U.S. Treasury Department for Links to Al-Qa... by aljazeeramasoom
List of Qataris Sanctioned by the U.S. Treasury Department for Links to Al-Qa...List of Qataris Sanctioned by the U.S. Treasury Department for Links to Al-Qa...
List of Qataris Sanctioned by the U.S. Treasury Department for Links to Al-Qa...
aljazeeramasoom11 views
Blockchain, AI & Metaverse for Football Clubs - 2023.pdf by kelroyjames1
Blockchain, AI & Metaverse for Football Clubs - 2023.pdfBlockchain, AI & Metaverse for Football Clubs - 2023.pdf
Blockchain, AI & Metaverse for Football Clubs - 2023.pdf
kelroyjames112 views

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