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