2. Project background
Challenges with distributed/offshore team
My observations
The Holy Grail
Small things that made a big difference
Lessons for life
Improvements on my future projects
Licensed Under Creative Commons by Naresh Jain
2
3. Where, why and how did it all start?
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.
Licensed Under Creative Commons by Naresh Jain
3
4. Challenges: Distributed/offshore teams
Decrease in communication bandwidth
Lack of visibility into project status
Configuration management
Art of Command and Control structure
Time difference
Cultural difference
Licensed Under Creative Commons by Naresh Jain
4
5. Painful Distributed Development:
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
5
6. XP Practices used on the project
Planning game – 2 week iterations, story cards, Iteration Planning
Meetings
Small releases – 2 to 3 months
Refactoring
Pair Programming
Collective code ownership
Continuous integration/Automated Release
Test Driven Development
Standup meetings
Coding standards
Licensed Under Creative Commons by Naresh Jain
6
7. What we did not have/could not do?
Onsite Client
Metaphor
Simple Design
100% Automated testing
40 hour week / sustainable pace
Licensed Under Creative Commons by Naresh Jain
7
8. Small things that made a big difference
General practices:
Empowered small teams
Freedom to try new things
Fun work place with lots of outings, parties, ice-creams, food, etc
Licensed Under Creative Commons by Naresh Jain
8
9. Small things that made a big difference
To address lack of trust:
Results matter
Life is more than just a pay cheque
Building a personal rapport
Brand ambassadors and cross pollination
Licensed Under Creative Commons by Naresh Jain
9
10. Small things that made a big difference
To address delayed feedback cycles:
Retrospectives
Involve the customer
Daily client driven demo on Dev env
EOD Status mail
Seamless collaboration between Developers and QA
100% Automation
Refactoring fests
Realistic measures of progress
Licensed Under Creative Commons by Naresh Jain
10
11. Small things that made a big difference
To address loss of context of business/technical problems and decisions:
Involve the customer
IM Chats
Regular Conference call
Demos and functional walk thru by Client
Acceptance tests
Brand ambassadors and cross pollination
Pairing
SCube sessions
Licensed Under Creative Commons by Naresh Jain
11
12. The Holy Grail
Structure and execution of the project
Planning
During the iteration
End of iteration
Release process
Big win!
Licensed Under Creative Commons by Naresh Jain
12
13. The Holy Grail…
How did we manage with lack of tests and documentation?
Unit and functional tests
QA Automation
Red light goes on to say its time to begin
Log files and other artifacts are your friends
Positive feedback cycle: Refactoring
Licensed Under Creative Commons by Naresh Jain
13
14. The Holy Grail…
Automation is your friend till THE END
Installation process
Release process
Configuration management
Database change management
Functional tests
Licensed Under Creative Commons by Naresh Jain
14
15. Improvements on my future projects
Heavy focus on automated tests and refactoring.
Exchange programs
Good roll-off plans for the team members.
Scratch your personal itch day.
Licensed Under Creative Commons by Naresh Jain
15
16. Conclusion
Decrease in communication bandwidth
Communicate, communicate and over communicate
Lack of visibility into project status
Correct and timely feedback
Open and honest work culture
Configuration management
It’s the tool, that differentiate Humans from the rest
Art of Command and Control structure
Self organized team of motivated individuals
Cultural difference
Is it a problem? Was fun! Creative Commons by Naresh Jain
Licensed Under
16
17. References
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
17