Distributed Agile: An oxymoron? © ThoughtWorks 2008
Agile = Co-located © ThoughtWorks 2008
Agile Manifesto Principles © ThoughtWorks 2008 Business people and developers must work together daily throughout the project. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. On-site customer Collective Code Ownership XP Practices Osmotic Communication Easy access to expert users Crystal Clear (principles) Active user involvement DSDM (principles) Unnecessary Movement Lean Software Development Waiting Unnecessary Transportation
Agile = Co-located © ThoughtWorks 2008 Distributed = Different locations Distributed Agile = An Oxymoron?
Enterprise Software © ThoughtWorks 2008 Large Sometimes Distributed Complex Heavily dependent Business critical
Our experience… © ThoughtWorks 2008 Large Complex Heavily dependent Business critical Sometimes Distributed
© ThoughtWorks 2008 Distributed development looks easy (a slightly fictional story)
Once upon a time… © ThoughtWorks 2008
there was a team… © ThoughtWorks 2008
working together on the same project… © ThoughtWorks 2008
… … … … … … … … Same project at the same location
everyone understood each other… © ThoughtWorks 2008
some people wanted the project distributed… © ThoughtWorks 2008
= ££££££ + = ££ + $$$$ = ½ £££
(of course, it might be more than just £££s) © ThoughtWorks 2008
they started work with new people in another place... © ThoughtWorks 2008
New
life was great! © ThoughtWorks 2008
they would talk over the phone... © ThoughtWorks 2008
… … … … … … … …
and send ... © ThoughtWorks 2008
type type type…
sometimes things would take some time... © ThoughtWorks 2008
I wonder what Jane meant by that. I better send an ... … whats the gobbleflux about …
© ThoughtWorks 2008 Thats an easy one. Here you go. … Gobbleflux? On the left …
© ThoughtWorks 2008 On the left? … on the left of what? …
something that should have been ten minutes © ThoughtWorks 2008
stretches to several days... © ThoughtWorks 2008
!!! … To the left of the widget …
© ThoughtWorks 2008 Theres a widget? … What widget are you talking about? … Shes not even trying...
© ThoughtWorks 2008 Why doesnt he understand? … The breadcrumbs widget …
things continue like that for three months... © ThoughtWorks 2008
until... © ThoughtWorks 2008
I cant wait to see... Theyre going to be impressed by this...
A KEY LESSON © ThoughtWorks 2008 every physical boundary increases noise
© ThoughtWorks
© ThoughtWorks 2008
cost of distributed development (is more than just people)
A more realistic formula © ThoughtWorks 2008 = ££££££ + = ££ + $$$$ ½ + Cost of (timely response and shared understanding) On-shoreDistributed
© ThoughtWorks 2008 Challenges of Distributed Development Look familiar? Shared understanding Timely decisions Trust and rapport Visibility into progress Working in the same way Its (almost) the same as co-located development... just much harder. Overcoming the
Division by role Functional teams Must haves for successful distributed development © ThoughtWorks 2008 Analysts Developers Testers Infrastructure
Must haves for successful distributed development © ThoughtWorks 2008 Cross functional teams Division by feature, not by role
Must haves for successful distributed development © ThoughtWorks 2008 Excellent relationship with the business
Must haves for successful distributed development © ThoughtWorks 2008 Speedy Escalation Paths
Must haves for successful distributed development © ThoughtWorks 2008 Shared Culture
© ThoughtWorks 2008 Example: Sharing culture
Must haves for successful distributed development © ThoughtWorks 2008 Shared Environments
Must haves for successful distributed development © ThoughtWorks 2008 Shared sense of 3 Ps (Purpose, Priority, Plan)
Must haves for successful distributed development © ThoughtWorks 2008 Frequent software demos
Must haves for successful distributed development © ThoughtWorks 2008 Continuous Reflection and Improvement
Must haves for successful distributed development © ThoughtWorks 2008 Frequent visits
Must haves for successful distributed development © ThoughtWorks 2008 Cross functional teams Excellent relationship with the business Speedy Escalation Paths Shared culture Shared environments Shared purpose, priority, plan Frequent showcases Continue Reflection and improvement Frequent visits
Good practices still hold © ThoughtWorks 2008 Visibility and transparency of information Face to face time Tools that support distributed teams Agile development practices Frequent rotation Principles of good teams JIRA
Conclusion Distributed Agile: An oxymoron? © ThoughtWorks 2008
Questions and Comments?
Flickr Creative Commons Alarm: Masonic handshake: Plane: East meets west: Free wallpaper Matrix wallpaper: Photo Credits © ThoughtWorks 2008