distributed agile
TRANSCRIPT
Distributed teams have become business as usual
• Mergers and acquisitions• Shortage of local
expertise• Centers of excellence• Proximity to customers• Labor arbitrage
• Outsourcing• Lines of business• Countries of operation• Joint development efforts• Open source• 3rd-party Suppliers• 24 x 7 development
What influences are you feeling on your project?
Your software delivery effort
Distributed teams are today’s software supply chain
OffshoreVendor
Internal ISTeam
Domain Experts
ServicesVendor
PackageProvider
Distribution Models
© ThoughtWorks 2008
Dysfunctional
Testers
Analysts
Testers
Analysts
Developers
Developers
Developers
Developers
Location 1 Location 2Customers
Customers
Customers
Customers
Location 3
Distribution Models
© ThoughtWorks 2008
Dysfunctional
Testers
Analysts
Testers
Analysts
Developers
Developers
Developers
Developers
Location 1 Location 2Customers
Customers
Customers
Customers
Location 3
Developers Testers
Customers Analysts
Functioning
Developers Testers
Customers Analysts
Distribution Models
© ThoughtWorks 2008
Dysfunctional
Testers
Analysts
Testers
Analysts
Developers
Developers
Developers
Developers
Location 1 Location 2Customers
Customers
Customers
Customers
Location 3
Developers Testers
Customers Analysts
Functioning
Developers Testers
Customers Analysts
Developers
Customers
Testers
Analysts
Developers
Customers
Testers
Analysts
Most Effective
Agile Manifesto - 2001
• In 2001, industry leaders meet and decide to name a family of methodologies “Agile”
• “We are uncovering better ways of developing software by doing it and helping others do it.”
While there is value in the items on the right, we value the items on the left more.
Individuals and interactions over Process and Tools
Working software over Comprehensive Documentation
Customer collaboration over Contract negotiation
Responding to change over Following a plan
12
Summary of Agile Best Practices
• Best practices followed by highly effective development teams
• All activities are aligned to deliver business value
• Drive efficiency, productivity and quality
Distributed Agile?
Sure, Agile is great but. . .
It is ad hoc and undisciplinedNo one writes any documentsIt only works for small teams
You have to be co-located
Key Principle:In a distributed scenario, the technical benefits of Agile development remain unaltered and the communication and team practices directly mitigate the primary risks of distributed development.
Distributed Agile?
Sure, Agile is great but. . .
It is ad hoc and undisciplinedNo one writes any documentsIt only works for small teams
You have to be co-located
Key Principle:In a distributed scenario, the technical benefits of Agile development remain unaltered and the communication and team practices directly mitigate the primary risks of distributed development.
Key Principle:In a distributed scenario, the technical benefits of Agile development remain unaltered and the communication and team practices directly mitigate the primary risks of distributed development.
“ Agile isn’t just applicable in the distributed context – its ideal.”
Four Risk Areas of Distributed Software Development
© ThoughtWorks 2008
• Communication Breakdown– Poor handoffs– Introduce down time / waste in process
• Team Issues– Lack of trust between teams– Low morale / high turnover on teams
• Lack of visibility– Unforeseen risks– Unknown progress, status, etc– Hard to make the right decisions in time
• Release Planning and Execution– Slipped delivery dates– Missed requirements / implemented incorrect functionality– Divergent estimates / incorrect release plan
Communication
Visibility
TrustRelease Plan & Execution
Making Distributed Development Work
© ThoughtWorks 2008
People
PracticesTools
Communication
Visibility
TrustReleasePlanning
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story / Bug Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story / Bug Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Redundant Roles by location
© ThoughtWorks 2008
Project Manager
Iteration Manager
Developer Business Analyst Test Analyst
Project Manager
Business Analyst
Project Manager
Developer Test Analyst
Developer Business Analyst Test AnalystBusiness AnalystDeveloper Test Analyst
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story / Bug Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story / Bug Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story / Bug Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story / Bug Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story / Bug Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Useful Tools for Distribution
© ThoughtWorks 2008
Interactive Whiteboards
Multi-View Webcams
CI and Build Pipeline
Comms Infrastructure
Wiki and Collaboration Tools
Messaging Tools
Best Practices for Distributed AgileImproving Communication
People Process ToolsDining Room Tables Daily Stand up WikiCross Pollination Distributed Meeting 101 Star phonesRedundant Roles (UFOs) Retrospectives Video ConferenceKey Role: IM Showcases Smart BoardsKey Role: Tech Liaison Team core hours IM / SkypeKey Role: Domain Expert Agile Principles Virtual Card WallsKey Role: Customer Proxy Agile Tracking / Metrics Story / Bug Tracking tool
Build Pipeline
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileTeam, Morale, and Trust
People Process ToolsDining Room Tables Showcases Agile Tracking ToolsOverlap Time Co-located release plan Key metricsCross Pollination Retrospectives Collaboration toolsTeam outings Agile principles Communication toolsUnderstanding customs Daily Handoff Digital Camera / VideoPersonal relationships Culture of feedback
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileTeam, Morale, and Trust
People Process ToolsDining Room Tables Showcases Agile Tracking ToolsOverlap Time Co-located release plan Key metricsCross Pollination Retrospectives Collaboration toolsTeam outings Agile principles Communication toolsUnderstanding customs Daily Handoff Digital Camera / VideoPersonal relationships Culture of feedback
Communication
Visibility
TrustRelease Planning & Execution
12 Principles
© ThoughtWorks 2008
Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
Welcome changing requirements, even late indevelopment. Agile processes harness change
for the customer's competitive advantage.
Deliver working software frequently, from acouple of weeks to a couple of months, with a
preference to the shorter timescale.
Business people and developers must worktogether daily throughout the project.
Build projects around motivated individuals.Give them the environment and support they
need, and trust them to get the job done.
The most efficient and effective method ofconveying information to and within a
development team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development.The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
Continuous attention to technical excellenceand good design enhances agility.
Simplicity--the art of maximizing the amountof work not done--is essential.
The best architectures, requirements, and designsemerge from self-organizing teams.
At regular intervals, the team reflects on howto become more effective, then tunes and adjusts
its behavior accordingly.
Best Practices for Distributed AgileTeam, Morale, and Trust
People Process ToolsDining Room Tables Showcases Agile Tracking ToolsOverlap Time Co-located release plan Key metricsCross Pollination Retrospectives Collaboration toolsTeam outings Agile principles Communication toolsUnderstanding customs Daily Handoff Digital Camera / VideoPersonal relationships Culture of feedback
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileTeam, Morale, and Trust
People Process ToolsDining Room Tables Showcases Agile Tracking ToolsOverlap Time Co-located release plan Key metricsCross Pollination Retrospectives Collaboration toolsTeam outings Agile principles Communication toolsUnderstanding customs Daily Handoff Digital Camera / VideoPersonal relationships Culture of feedback
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileTeam, Morale, and Trust
People Process ToolsDining Room Tables Showcases Agile Tracking ToolsOverlap Time Co-located release plan Key metricsCross Pollination Retrospectives Collaboration toolsTeam outings Agile principles Communication toolsUnderstanding customs Daily Handoff Digital Camera / VideoPersonal relationships Culture of feedback
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileEstimation and Release Planning
People Process ToolsCross Pollination Planning Meeting 101 Story / Bug Tracking toolHome and Away Co-located release planning Agile tracking / metrics
Product VisioningProject Inception
Communication
Visibility
TrustRelease Planning& Execution
Best Practices for Distributed AgileEstimation and Release Planning
People Process ToolsCross Pollination Planning Meeting 101 Story / Bug Tracking toolHome and Away Co-located release planning Agile tracking / metrics
Product VisioningProject Inception
Communication
Visibility
TrustRelease Planning& Execution
Best Practices for Distributed AgileEstimation and Release Planning
People Process ToolsCross Pollination Planning Meeting 101 Story / Bug Tracking toolHome and Away Co-located release planning Agile tracking / metrics
Product VisioningProject Inception
Communication
Visibility
TrustRelease Planning& Execution
Best Practices for Distributed AgileVisibility
People Process ToolsRedundant Roles (UFOs) Showcases Virtual card walls
Key Role: Customer Proxy Retrospectives Story tracking tool
Cross Pollination of team Iteration Planning Meetings Defect tracking tool
Incremental delivery Build pipeline
Prioritized business backlog Continuous IntegrationCode quality metrics
Test planning / tracking tools
Agile metrics and tracking
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileVisibility
People Process ToolsRedundant Roles (UFOs) Showcases Virtual card walls
Key Role: Customer Proxy Retrospectives Story tracking tool
Cross Pollination of team Iteration Planning Meetings Defect tracking tool
Incremental delivery Build pipeline
Prioritized business backlog Continuous IntegrationCode quality metrics
Test planning / tracking tools
Agile metrics and tracking
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileVisibility
People Process ToolsRedundant Roles (UFOs) Showcases Virtual card walls
Key Role: Customer Proxy Retrospectives Story tracking tool
Cross Pollination of team Iteration Planning Meetings Defect tracking tool
Incremental delivery Build pipeline
Prioritized business backlog Continuous IntegrationCode quality metrics
Test planning / tracking tools
Agile metrics and tracking
Communication
Visibility
TrustRelease Planning & Execution
Best Practices for Distributed AgileVisibility
People Process ToolsRedundant Roles (UFOs) Showcases Virtual card walls
Key Role: Customer Proxy Retrospectives Story tracking tool
Cross Pollination of team Iteration Planning Meetings Defect tracking tool
Incremental delivery Build pipeline
Prioritized business backlog Continuous IntegrationCode quality metrics
Test planning / tracking tools
Agile metrics and tracking
Communication
Visibility
TrustRelease Planning & Execution
Next Discussion
• Anti-Patterns / Bad Smells– Things to watch out for, when distributed agile goes wrong…
• Things you didn’t see coming & frequent “gotcha’s”– What critical mistakes we’ve made and won’t make again
• Is it worth it for my project?– Which projects are best suited for distribution? Which are not?– How can I estimate the true cost of distribution? Will it outweigh
the benefit?
© ThoughtWorks 2008