Managing complex distributed software projects

Managing complex distributed
software projects
Sytyke Laivaseminaari 4.9.2013
Juha Asikainen
About the presentation
•
Describe typical
challenges in
distributed software
development
•
Identify solutions and
best practices
•
Discuss criteria for
methodology selection
in a distributed
environment
Copyright © 2013 Accenture All rights reserved.
Juha Asikainen
Accenture Helsinki
Professional Background
Juha is specialized in program / project
management and methodologies used
in customized software development.
He joined Accenture in 1998.
In addition to having program manager
positions in large and complex
deliveries he has been working as a
methodology coach for Accenture's
quality organization and is currently
leading Accenture Finland’s Program
and Project Management practice
area.
2
What is distributed software development?
•
Projects or services that have
multiple locations
–
–
–
•
Inside home country
Inside the region: near-shoring (for
example: EU / Eastern Europe)
Outside the region: off-shoring
There are several approaches for
splitting the work between the
locations
–
–
–
Type of work (for example: testing)
Technology
Software project lifecycle (for example:
analysis work, maintenance work)
Copyright © 2013 Accenture All rights reserved.
3
Reasons for using distributed models?
•
Typical drivers
–
–
–
•
Cost benefits
Availability of skills
Global operating model
Other things to consider
–
–
–
–
Regulations (for example: data privacy)
Organization’s maturity for global sourcing
Preferred delivery model
Risks
Copyright © 2013 Accenture All rights reserved.
4
Potential challenges
Processes
Tools
Language
Culture
Copyright © 2013 Accenture All rights reserved.
5
Solutions – processes
•
Successful distributed requires that the following
things are clearly defined and mutually understood by
all locations
1.
2.
Organization and split of responsibilities
Process and transition points
Define
responsibilities
per work stream
and phase
Design
Build
T
T
T
T
T
Test
T
Introduce transition
points that validate
quality when moving
work packages from
one location to
another
Copyright © 2013 Accenture All rights reserved.
6
Solutions – tools
•
Choose a toolset that improves
productivity and enables smooth
communications regardless of the
locations – consider especially the
following:
Videoconferencing
– Screen sharing
– Collaboration tools
– Reporting
–
•
•
•
Avoid separate repositories for
deliverables
Implement continuous integration
Never underestimate the importance of
face-to-face human contact!
Copyright © 2013 Accenture All rights reserved.
7
Solutions – understanding cultural differences
Could you
solve this
incident by
Monday?
It is unrealistic,
but I do not want
to upset him
Aleksi
Arpita
Maybe, I
will try to
do it.
•
Understand typical behavioral characteristics of the culture you are
working with (for example: direct vs indirect)
•
Arrange trainings about cultural differences for your team
•
Break the ice: arrange some common time in a shared location, rotate
team members between locations
•
Stretch your style when needed
Copyright © 2013 Accenture All rights reserved.
8
Solutions - breaking the language barrier
•
To get full benefits from distributed
development all project documentation should
be produced only in English
–
–
•
In many industries and organizations Finnish is
still the preferred working language in projects
Distributed development by using offshore
deliveries is still possible in such environments
but requires more effort and planning
Approaches for resolving language related
issues
–
–
–
–
–
Include translator resources in the team
Use combination of Finnish and English
deliverables
Use automated translation tools
Create project glossary
Use multi-lingual document templates
Copyright © 2013 Accenture All rights reserved.
9
Choosing the optimal methodology
•
•
Clearly identify the following parameters before building a distributed
delivery model
1.
Development strategy
2.
Split of responsibilities
These parameters can change later as the software and teams get
more mature
Onsite
Maintenance
Build / Unit Test
• Extensive user contact
• Functional design
Production
Support
Offsite
Concept
70%
Design
• Acceptance test
• Deployment to organization
75%
Build
30%
Test
Deploy
25%
20%
• Requirements and functional design
• Offshore resources onshore
• Technical design
• Majority of build offshore
30%
20%
• Requirements refinement
80%
70%
Enhancements
• Integration test and fixing
• Deployment assistance
• Offshore resources onshore
80%
• Implementation
Ad Hoc Reports
100%
• Overnight and immediate
Technical Upgrades
100%
• Assuming no new functionality
• Continuous monitoring and
tuning
• Technical Analysis
Performance Tuning 100%
• Application analysis
Copyright © 2013 Accenture All rights reserved.
100%
50%
Application Analysis
50%
• Prioritization, escalation
20%
Fix on Fail
80%
• Daytime operations
20%
Operations Support
80%
• Day and night operations
• Daytime responses
20%
User Queries
80%
• Day and nighttime service
• Fixes and root cause analysis
10
Distributed agile development – is it possible?
Iteration – Design, Build, Test
Iteration – Design, Build, Test
Iteration – Design, Build, Test
Product
Backlog
Prioritized
Scope
Working
Software
Prioritized
Scope
Working
Software
Prioritized
Scope
Working
Software
•
Yes – it is possible to implement all key agile practices in a
distributed environment
•
But there are potential bottlenecks that need to considered
Availability of product owner
– Organizing distributed scrum teams and handling of
dependencies
– Efficiency of virtual collaboration
– Cultural factors
–
Copyright © 2013 Accenture All rights reserved.
11
Discussion and questions
Copyright © 2013 Accenture All rights reserved.
12