global software development
Post on 02-Feb-2016
39 Views
Preview:
DESCRIPTION
TRANSCRIPT
Global Software Development
Riku Granat
Vice President, Applications Software
In this episode …
Where do I come from? What is GSD? Why GSD? Why not GSD? Challenges and what to
do with them? Summary Q&A
What is GSD?
What is GSD?
What is Global Software Development? Software development Geographically distributed to multiple countries
Global development (own + 3rd party) Global markets
Across national, cultural and other boundaries Controlled – driven by
Common goals Common policies
Coordinated – orchestrated – managed Teams Tasks Deliverables
Communication between the distributed teams Information sharing
Why GSD?
Why GSD? – the most common answers
Cost savings “Up to -80%”
Lack of local software developers
Focus on core competencies
… I.e. the usual management
story
Why GSD? – “the right answer” Access to the world wide talent pool Cost structure and savings Risk management Focus on where you get the best ROI Market presence
understanding local needs being close to the customer
Mergers and acquisitions Improved quality Follow-the-sun / -seasons development
Gaining competitive advantage
The bottom line is …
Regardless of what your reasons are you need to understand them, you need to understand “why” …
… build your GSD strategy to support it
... because there are a lot of issues as well
i.e. there is a price to pay!
Why not GSD? – some issues
Strategic choices – timing, partners, … Management / comms overhead –
complexity Cultural issues Communication issues Technical issues – does your software
architecture support distributed development model?
… Your own management and leadership
skills! … You name it!
Challenges
Site strategy Cost level Communication Culture Work split Software architecture Processes Methods Open source Internet Leadership
Challenges – What to do about them?
Everyone needs to and almost everyone can change!
Site strategy
Challenge Understand why you do it Understand what you want to achieve It is all about strategic choices
When, where, with whom, … The bottom line: how to maintain and gain competitive advantage?
What to do about it? Create a strategy Create an implementation plan Execute it Make frequent but not too frequent updates Continuously review whether your “whys” and your strategy / plans
match
Costs Challenge
Savings and how to measure them? How can you control costs in a dynamic environment without losing
productivity?
What to do about it? Develop unambiguous metrics / “accounting system” and follow-up Flexibility from tactical, typically black box, subcontracting
Typically suitable only for simple well-specified short term projects For long term business more sustainable solutions are needed
Build on the site strategy – have a portfolio of sites – distribute risks Have real options, based on own staff and partners Have critical mass per site Do not move responsibilities “every day”
Can cost saving ever be your only goal? Costs will always go up, if there is success
“Went for cost, stayed for quality, building future on innovation”
Communication
# of “tribes”
Communication Challenge
Frequency of comms decreases with distance, more comms with local than remote staff
Formal comms: how to keep the mill running (normal reporting, specifications, reviews, meetings, …)
Informal comms: changes, legacy knowledge, background, informal requirements
What to do about it? Keep your comms tools in extremely good shape
phone, video conf, net meeting, e-mail, chat, discussion forums, wiki pages, …
Make sure that also development tools work fluently Distributed SCM, sharing documents (wiki,
databases), … Encourage people to share and collaborate
Explain reasons, motivate, use common goals, …
Culture
Challenge Meaning of the org chart, not taking risks, collectivism,
long term vs short term, … Attitude to time, work itself, quality, … Race, religion, …
What to do about it? Be very sensitive to the cultural differences Pay attention to the work split Pay attention to the management structure Bridge cultures
site visits, local people on- site, common processes, expatriates, …
Trainings See also work split
Work split 1/2 Challenge
How to split the work in an optimal way? What to do about it?
Understand what you are trying to do! What is driving your business? Define clearly your work split approach based on your business drivers
Distributing software assets (for special competences) Distributing development phases e.g. testing (for cost savings) Distributing product or product families e.g. customization for certain regions Distributing localization e.g. Chinese variants to China
Examples of candidates for remote development
Driven by cost – maintenance or further development of old versions or specific components
Driven by local requirements – localization / tailoring specific components / products
Driven by scale and access to global talent pool – whatever your architecture supports
Work split 2/2 What to do about it?
“One size does not fit all” – different goals require different set-ups Distribute only big enough and isolated enough projects
Otherwise the management overhead will eat your gains quickly Ultimately aim at self contained local teams
Remote extensions are ok as starting points but are not sustainable solutions
Remember that is the evening it is still team work and things must come together
Software architecture
Challenge How can you split the work between separate development sites
and still get the components integrated and maintain software integrity?
What to do about it? Ideally do only things that your software architecture supports! Respect the interfaces in the architecture (existing specs, change
control, …) Develop the architecture to support independent development
and ultimately also independent deployment Distribute only architecturally isolated development efforts
What if your architecture is not ready for all this? Build on strict SCM code line policy Inner source model – Use controlled parallel development
practices – have one “master” and as many “slaves” as you need
Software architecture special topics
Vertical integration
User experiences
Processes Challenge
Global business and strategy driven optimization vs local optimization Even in a distributed development environment people need to communicate,
software has to be integrated, project status has to be made visible, … Doing all that with totally different processes will result into misunderstandings,
invisibility, delays, additional cost, frustration, …, and ultimately to failure What to do about it?
Always start from the business imperatives and globally optimize for those Have a common project model
Sufficient level of common processes (key milestones, key phase results, key deliverables, …)
But leave some room for local fine-tuning keeping people motivated getting the best out of the team accommodating some local differences acknowledging that “one size does not fit all”
Methods
Challenge Some methods are more local by their nature than
some others e.g. some agile methods have some implicit and even
explicit needs for proximity of people What to do about it?
Apply the theory / processes, you rarely find an out-of-the-box solution from the school books
Use common methods across the sites Look at the development methods from work split
perspectives and the other way round Understand the constraints of your software
architecture e.g. in terms of where can you use Scrum teams
Open source
Challenge You are not in charge anymore! You need to learn to collaborate with/in the communities Potential mismatch between OSS drivers and your business drivers Mismatch between your processes and tools and those of open source
What to do about it? Again, start from your business drivers Understand where you can use OSS and still meet your business goals
Licenses e.g. GPL vs protecting your IPR Development drivers – differentiation vs commoditization, …
Adapt to the community (externally)! Communicate with the community! Give, not only take – be a good citizen in the OSS communities
Internet
Challenge You are not in control anymore, neither is your company, nor your
government Things happen where the experts are / where they want to go Things can be more easily move from place A to B Blogs, information leaks, …
What to do about it? Just accept it and adapt, take it as an opportunity Be a good citizen in the Internet Communicate, communicate and communicate
Leadership Challenge
Need for fuzzy management More unknowns More dependencies Can’t control everything
What to do about it? Train your leaders and staff to cope with it
Global project management and working in a global project is a totally different ball game than local small projects
Recruit “modern leaders” with strong collaboration skills
Summary
Summary
Summary GSD is a must in any big software business It comes with a lot of challenges and issues …
… most of which have solutions or workarounds
… if you know what you want to achieve
… and if you manage those challenges properly!
Remember to drive GSD from your business and strategy perspectives, don’t let it become an engineering exercise
Every GSD case is unique in terms of culture, work split, drivers etc
… you need to treat them uniquely and learn as you go! Mr Brooks is still right – there is no silver bullet!
Thanks!
Any questions?
top related