seven principles of cross-continent, distributed development
TRANSCRIPT
7 Principles of Cross-Continent Distributed Development
Agile Software Development Conference - East 2014!Igor [email protected]
Software Development is Global …
... global can be agile
Reasons for Distributed Development• Local Expertise
• Cost Advantage
• Distributed Organizations
• Intricate rules
• Few Interactions
Complicated
Complex
• Simple rules
• Many interactions
distributed development …
7 Principles• Interaction
• Issue tracking
• Backlog management
• Software architecture
• Documenting APIs
• Design for testability
• Integration checkpoints
Traditional Agile• Accommodate Change
• Manage backlog
• Plan iterations
• Daily scrum meeting
• Local decision making
Distributed Challenges
• Communication less efficient
• Remote decision making
• Time zone difference
Interaction - Email
Inbox Competition:
• 11% personal
• 7% spam
• 63% internal
• 15% gossip
* Based on http://gigaom.com/2012/06/08/how-useless-is-email-two-new-studies-weigh-in/
Interaction and Culture
• Communication style
• Attitudes toward conflict
• Approach to completing tasks
• Decision-making style
• Attitudes toward disclosure
• Approaches to knowing
http://www.pbs.org
Advantages of Issue Tracking
• Assign priority
• Track ownership
• Control work in progress
Distributed Interaction
• Use the issue/task tracking system:
• Assign task owner
• Require added value before passing the task on
• Limit the attendees of any exchange to 3-5
• Agree on and monitor the change process
• Prefer web-meeting over e-mail
Backlog Management
• User Stories
• Requirements
• Change requests
• Bug Fixes
• Documentation
• Integration Checkpoints
Distributed Backlog Management
Tool:
• Distributed Scrum Board
• Coordinated Sprint Planning
Personal Interaction:
• Customer Collaboration
• Prevent Issue Escalation
Individuals and interactions over processes and tools …
Distributed Software Architecture
• Module decomposition using patterns
• Personal interaction within local team
• Evolutionary architecture inside module
• Well defined API between modules
Distributed Software Architecture
• Agree on module architecture, then evolve
• Agree on APIs so they are stable
• Document APIs to improve interaction
• Make APIs testable to reduce interaction
Documenting APIs
API definition
• Operations
• Data & Rules
• Error Conditions
Working software over comprehensive documentation …
Documenting APIs• Just-enough
documentation supports collaboration
• Improve interaction
• Facilitate training
• Document operations data and rules
• Meaningful error output
!
Design for Testability
• Test with realistic remote system
• Continuous build and deployment
• Schedule integration tests in backlog
• Actively manage remote system availability
!
Integration Checkpoints
Integration workshops:
• Synchronize team backlogs
• Importance of planning and coverage
• Travel considerations
• Issue documentation and resolution
7 Principles• Interacting efficiently and with
respect
• Track issues effectively
• Actively manage and synchronize backlogs
• Give importance to software architecture
• Negotiate and document the APIs
• Design for testability to improve interaction
• Face to face integration checkpoints