seven principles of cross-continent, distributed development

11
7 Principles of Cross-Continent Distributed Development Agile Software Development Conference - East 2014 Igor Gejdos [email protected] Software Development is Global … ... global can be agile

Upload: techwellpresentations

Post on 28-Jul-2015

20 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Seven Principles of Cross-Continent, Distributed Development

7 Principles of Cross-Continent Distributed Development

Agile Software Development Conference - East 2014!Igor [email protected]

Software Development is Global …

... global can be agile

Page 2: Seven Principles of Cross-Continent, Distributed Development

Reasons for Distributed Development• Local Expertise

• Cost Advantage

• Distributed Organizations

• Intricate rules

• Few Interactions

Complicated

Page 3: Seven Principles of Cross-Continent, Distributed Development

Complex

• Simple rules

• Many interactions

distributed development …

7 Principles• Interaction

• Issue tracking

• Backlog management

• Software architecture

• Documenting APIs

• Design for testability

• Integration checkpoints

Page 4: Seven Principles of Cross-Continent, Distributed Development

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

Page 5: Seven Principles of Cross-Continent, Distributed Development

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

Page 6: Seven Principles of Cross-Continent, Distributed Development

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

Page 7: Seven Principles of Cross-Continent, Distributed Development

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 …

Page 8: Seven Principles of Cross-Continent, Distributed Development

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

Page 9: Seven Principles of Cross-Continent, Distributed Development

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

Page 10: Seven Principles of Cross-Continent, Distributed Development

!

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

Page 11: Seven Principles of Cross-Continent, Distributed Development

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