Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 4 (more)

Distributed Agile

From nashjain, 3 months ago

This is based on my 5 years of experience with Distributed Agile. more

1264 views  |  0 comments  |  3 favorites  |  54 downloads  |  2 embeds (Stats)
 

Groups/Events

 
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 1264
on Slideshare: 1256
from embeds: 8* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: Distributed Agile Issues & Challenges Patterns and Anti-Patterns Naresh Jain naresh@agilefaqs.com Licensed Under Creative Commons by Naresh Jain 1

Slide 2: Distributed development - Challenges Decrease in communication bandwidth Lack of visibility into project status Configuration management Command and Control structure Time difference Cultural difference Coordination is difficult Licensed Under Creative Commons by Naresh Jain 2

Slide 3: Challenges : Root cause My observations Lack of trust Loss of context, both business and technical Delay in feedback cycle due to increase in distance and time difference Duplication of efforts Change is inevitable Licensed Under Creative Commons by Naresh Jain 3

Slide 4: What this could lead to? Heavyweight processes with emphasis on upfront requirements specification and design Over-reliance on documentation and strict change control Inability to react quickly to problems found late in the cycle, increasing the chances of failure and/or the cost of fixing them Difficulty in understanding & communication gaps Frustration on both sides not getting what they want Erosion of trust and leaving a bad taste Licensed Under Creative Commons by Naresh Jain 4

Slide 5: Agile Licensed Under Creative Commons by Naresh Jain 5

Slide 6: 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.” Licensed Under Creative Commons by Naresh Jain 6

Slide 7: Distributed Agile? The Manifesto itself does not mandate Co-located teams Admittedly, things on the left get more challenging in a distributed environment and people start relaying/emphasizing more on the things on right. Licensed Under Creative Commons by Naresh Jain 7

Slide 8: How can Agile Help? Licensed Under Creative Commons by Naresh Jain 8

Slide 9: 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. Licensed Under Creative Commons by Naresh Jain 9

Slide 10: 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 Licensed Under Creative Commons by Naresh Jain 10

Slide 11: 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 Licensed Under Creative Commons by Naresh Jain 11

Slide 12: Adaptive Planning Inspect and Adapt Help responding to change Teams communicate often, share information frequently Licensed Under Creative Commons by Naresh Jain 12

Slide 13: 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. Licensed Under Creative Commons by Naresh Jain 13

Slide 14: Practices that make a Difference Licensed Under Creative Commons by Naresh Jain 14

Slide 15: 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” Licensed Under Creative Commons by Naresh Jain 15

Slide 16: Licensed Under Creative Commons by Naresh Jain 16

Slide 17: 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 Licensed Under Creative Commons by Naresh Jain 17

Slide 18: 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 Licensed Under Creative Commons by Naresh Jain 18

Slide 19: Other Practices Stand Up Meetings/Daily Scrum Dev Hurdles Retrospectives Planning Game Licensed Under Creative Commons by Naresh Jain 19

Slide 20: Distributed Agile Patterns Licensed Under Creative Commons by Naresh Jain 20

Slide 21: Iterative & Incremental Development Feature or User Story • Expressed from business or user perspective Develop • Business value Test • Estimable Feature Feature List: prioritized features (AKA Product Backlog) Design Evaluate Iteration • 1-4 week timebox Iteration Plan Iteration Plan Evaluate Release Plan Incremental Evaluate Incremental Release Plan Release • 1-6 Iterations • Released internally or externally to end users Product/Project Charter Product/Project Product or Project Plan • Perpetually released Source : Jeff Patton Licensed Under Creative Commons by Naresh Jain 21

Slide 22: 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 Licensed Under Creative Commons by Naresh Jain 22

Slide 23: 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 Licensed Under Creative Commons by Naresh Jain 23

Slide 24: 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. Licensed Under Creative Commons by Naresh Jain 24

Slide 25: Cross Pollination - Offshore Model Time i 0 & i1 i2 i3 i4 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members Licensed Under Creative Commons by Naresh Jain 25

Slide 26: Cross Pollination - Distributed Model Time i 0 & i1 i2 i3 i4 OnSite Offshore - Offshore Team Member - Client-side Team Member - Swap Members Licensed Under Creative Commons by Naresh Jain 26

Slide 27: 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 Licensed Under Creative Commons by Naresh Jain 27

Slide 28: Source : ThoughtWorks Licensed Under Creative Commons by Naresh Jain 28

Slide 29: 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 Licensed Under Creative Commons by Naresh Jain 29

Slide 30: Standup meetings Source : ThoughtWorks Licensed Under Creative Commons by Naresh Jain 30

Slide 31: Anti-Patterns Licensed Under Creative Commons by Naresh Jain 31

Slide 32: 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 Licensed Under Creative Commons by Naresh Jain 32

Slide 33: Expectations Anti-Patterns 50% cost saving - Don’t sell Distributed Development purely as a cost saving scheme Unrealistic expectations - 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” Licensed Under Creative Commons by Naresh Jain 33

Slide 34: Focus related Anti-patterns Tool Driven - Don’t be a tool slave. Choose the right tool for the right job. Process OVER People Licensed Under Creative Commons by Naresh Jain 34

Slide 35: 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 Licensed Under Creative Commons by Naresh Jain 35

Slide 36: Conclusion Distributed Development is difficult in general! Agile can help! Licensed Under Creative Commons by Naresh Jain 36

Slide 37: 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 C2 Wiki - http://c2.com/cgi/wiki Licensed Under Creative Commons by Naresh Jain 37

Slide 38: Questions? Thank you Distributed Agile Naresh Jain naresh@agilefaqs.com Licensed Under Creative Commons by Naresh Jain 38