2. 2
To start with …
• A 229-second clip about Global Software Development
3. 3
Agenda
• Motivation – the What, Who and Why ?
• The-state-of-practice outsourcing industry
• Taxonomies
• Five types of global distances
• Impediments to global team coordination
• Supporting mechanisms
• For a future global software engineer
• Exam candidate questions
5. 5
Motivation – what is GSD?
• 1970s … contract programming
• 1990s … mainstream GSD
• 2000 … first research on global software development
Global software development (GSD)
6. 6
Motivation – what is GSD?
globally distributed development, in particular from a project
management perspective, is considerably more challenging than
even the most complex project managed entirely in house
10. 10
Motivation – Why to do GSD? (2)
Productivity
• Faster and better services
• Head count reduction
• Scalability
• Leverage business
and technology expertise
Pär J. Ågerfalk, Brian Fitzgerald, Helena Holmström Olsson, Eoin Ó Conchúir:
Benefits of Global Software Development: The Known and Unknown. ICSP 2008: 1-
9
12. 12
Motivation – Why to do GSD? (4)
Strategic movement
• To access the global talent pool
• Focus on core business area
• Risk sharing
• Proximity to market
Pär J. Ågerfalk, Brian Fitzgerald, Helena Holmström Olsson, Eoin Ó Conchúir:
Benefits of Global Software Development: The Known and Unknown. ICSP 2008: 1-
9
13. 13
Motivation – Why to do GSD? (5)
Why is global distributed development?
• To save development cost
• To reduce development cost
• To reduce the time to market
• To access the global talent pool
• Focus on core business area
• Leverage business and technology expertise
• Faster and better services
• Risk sharing
• Proximity to market
• Head count reduction
• Scalability
16. 16
The-state-of-practice
Darja Šmite & Claes Wohlin & Tony Gorschek & Robert Feldt, Empirical
evidence in global software engineering: a systematic review, Empir
Software Eng (2010) 15:91–118
17. 17
Taxonomies
• Outsourcing vs. Insourcing
• Offshore vs. onshore
• Nearshore vs. Farshore
• Crowdsourcing – Crowd and outsourcing
• Open sourcing - Volunteer
• Freelancer - Individual
18. 18
Taxonomies
Darja Smite, Claes Wohlin, Zane Galvina, Rafael Prikladnicki: An empirically based
terminology and taxonomy for global software engineering. Empirical Software
Engineering 19(1): 105-153 (2014)
22. 22
Five distances (3) – Cultural
• Cultural is blueprint for action
• A cultural group can be understood through the groups’
rituals, customs and values
• Cutural blindness occurs when we don’t accept or
perceive other’s behaviors that are guided by their
culture
28. 28
Five distances (5) – Organization
• Distances in regulations, goals, objectives between
organizations
• Boundaries provide control – efficiency are derived from
this control
Team Department Company
29. 29
Impediment (root) – Project Dependencies
Nguyen Duc Anh, Daniela S. Cruzes: Coordination of Software Development Teams
across Organizational Boundary - An Exploratory Study. ICGSE 2013: 216-225
31. 31
Impediment (root) – Project Dependencies
Global distances Coordination
problems
Project outcomes
Coordination
mechanisms
Anh Nguyen Duc, Supporting coordination of software development across
organizational boundaries, Ph.D Thesis, IDI, NTNU, Jan, 2015
32. 32
Impediment (cause) – Coordination
problems
Coordination Issues
Dispersions #
G T C O W
Decrease of communication frequency 10 0 0 2 1 13
Large communication network 11 0 0 0 0 11
Difficulty in finding relevant expertise/ Coordination
requirement
8 0 0 0 0 8
Lack of trust 2 0 1 0 0 3
Lack of team identity/ team awareness 2 0 0 1 0 3
Delay in communication and coordination 0 5 0 1 0 6
Difficulty in organizing task 0 4 0 1 1 6
Limited choice of communication mean 2 3 2 0 0 7
Developing informal communication 1 2 1 0 0 4
Misinterpretation of tasks 1 1 8 2 1 13
Extra coordination due to mismatches in goals,
perceived value
0 0 2 3 0 5
Extra coordination due to mismatches in
organizational structure
0 0 0 1 0 1
Extra coordination due to different local management
policy 0 1 1 1 2 5
Complicated communication and coordination paths 0 0 0 1 1 2
Difficulty in identifying role and responsibility 0 0 0 0 1 1
Total 37
1
6
1
5
1
1
8
Nguyen Duc Anh, Daniela S. Cruzes, Reidar Conradi: Dispersion, coordination and
performance in global software teams: a systematic review. ESEM 2012: 129-138
34. 34
Supporting GSD
Global distances Coordination
problems
Project outcomes
Coordination
mechanisms
• Architectural modularity
• Social media
• Version control system
• Frequent/ Continuous Delivery
• Bridge engineer
• Team building
• Temporal collocation
35. 35
Supporting GSD
• Architectural modularity
– Organizations which design systems are constraint to the
product designs, which are copies of the communication
structure of these organizations (Melvin Conway, Datamation,
1968)
Frontend
Backend
Database
37. 37
Supporting GSD
• Architectural modularity
– Design team structure according to product architecture
• Location
• Role
• Authority
• Communication channel
– Adjust your product architecture according to team structure
• Microservice
• Modularity
• Branches
39. 39
Supporting GSD
• Social media
– Informal communication mechanism
– Sense of belonging to a community
– Awareness of other’s presence
– Encourage curiosity and knowledge seeking
41. 41
Supporting GSD
• Frequent/ Continuous Delivery and Feedback
David Redmiles, André van der Hoek, Ban Al-Ani, Tobias Hildenbrand*, Stephen Quirk, Anita Sarma, Roberto
Silveira Silva Filho, Cleidson de Souza**, Erik Trainer, Continuous Coordination: A New Paradigm to Support
Globally Distributed Software Development Projects
43. 43
Supporting GSD
• Team building
• Temporal collocation
Tuckman, Bruce (1965). "Developmental sequence in small
groups". Psychological Bulletin 63 (6): 384–99
44. 44
Prepare for the future …
• Proper adoption of communication tools
• Ability to establish a common language
• Tolerance of ambiguity and uncertainty
• Understand and use control version systems
• Time management skill
• Ability to think from the perspective of the other side
• Informal communication and improvisation skills
• Conflict management and resolution
I have two news for you today. Pekka is not here today. And Juhani and I will be responsible for the class. The bad news is that he is in the airport and might get back in one hour. The topic of today is GSD. You might know about this phenomemon as, Globally distributed software development, distributed software projects, global team . Or you might be more familiar with Outsourcing.
I spent four years of my life to research Global Software Development. What is the problem? How we can support it. The biggest lesson I have learnt is that you don’t need a PhD degree to be
You ended up spending a lot of time talking to your colleagues in other side of the world
globalization of the world economies brought significant changes to nearly all industries, and in particular it includes software development. The concept of global software engineering (GSE) originates from contract programming, which was a form of outsourcing known from the 1970s, GSE addresses software engineering activities performed by globally distributed teams. Not only coding, …
Software development became global in the 1990s as a consequence of the PC revolution (Carmel 1999) and sequential problems of tight budgets, shortage of resources and time motivated many companies to start looking for partners or to set up development sites in different countries. As an outcome of this evolution, many companies built joint ventures and relocated their development centers to low-cost countries.
However, soon practitioners started to realize that globally distributed development, in particular from a project management perspective, is considerably more challenging than even the most complex project managed entirely in house (Karolak 1998).
Happen in all segment of business, startup, medium size to cooperation.
Microsoft: The Seattle-based tech giant is one of the biggest names to have embraced outsourcing. Microsoft also outsources jobs that most people believe to be exclusive to in-house employees, such as software architect, software testing engineer, and management positions in R & D. Microsoft also outsources patent filing work, with over 100 full time outsourced positions needed to handle around 2500 patent filings in a year.
AT&T Inc. is one of the consistent providers of outsourced work in the U.S. As the second largest mobile service provider in the country, The kind of positions they outsource tend to be the typical jobs normally associated with call center work, such as tech support, customer assistance, and billing.
Google If they’re willing to outsource such a crucial part of their operations (the ad network accounts for the majority of their revenue), it is not far fetched to think that they’re also sending a lot of low level IT positions or jobs
Github: The company has used many people who did their development work from home or from other remote locations. Today, over 10 million people use GitHub and it is the largest code host.
Slack: This company is valued at nearly $3 billion, but in its earliest days, they used outsourced workforce to develop its solution.
Skype: they used a team of developers based in Estonia to help build out their business
grow at 5-8% per year
manufacturers outsource 70% to 80% of the content of their finished products.
Large companies commonly outsource half of their IT operations.
Organizations outsource their entire back office operations, including human resources, payroll and accounting
GSD is the fact that you need to live with. It seems not a choice when you want to work in an international company. It is also the case when you want to start your company with a tiny budget.
Cost saving
Development cost
Maintenance cost
Operationalization cost
A standard web app, front end with html 5, backend in cloud
We are not saying about UX or any advanced algorithms,
I got this graph from a website in the internet. I am not 100% sure about the accuracy of all the number, but for countries nearby my hometown So it is a good reference.
… for indian this will be the 40 or 50th web apps to develop. They know by heart how to make it … In my case, tough learning curve esp. after your phd.
Not a single organization can stay gloriously in the whole lifetime. To able to be responsible for the same work, CEO requests helps from a friend who running an outsourcing services. They can sign a borrowing contract to .
In the other phase, when your company gets larger and large. The workload is surely
The world is living through one of its most extraordinary revolutions, with game-changing implications, many of them still unknown. The growth rate of adults with tertiary education qualifications, and the knowledge and skills associated with them, has never been higher. Still, the map of the global distribution of the tertiary graduates looks very different from the map of academic excellence, at least as measured by the established global rankings of universities
In investing, it’s best to diversify your portfolio rather than put all your money in one stock. By spreading your risk, you reduce your total risk.
Deloitte surveyed 140 companies in nearly 30 different countries, on specific dimensions representing changes affecting the outsourcing industry. These categories included: regulation and legislation, functions and services, geography, and innovation and technology. Based on the results of the questionnaire, the following key trends emerged:
The last two decades have seen a significant rise in offshoring to external service providers. The driver for thistrend has been largely economic, since offshoring often offers more competitive price points for the same service levels. Beyond cost savings, companies oftenalso use outsourcing to support their strategy — in this case the choice of focusing on core, strategic competencies and relying on a global network of external service providers to perform less strategic functions. In recent years we have witnessed a small but growing reversal
of this trend where companies that have
previously offshored functions are bringing them back to their home country(also known as “onshoring”).1
Based on the results of the 2014 Survey,a significant majority of respondents have not and do not plan to move work from offshore locations back to their domicile country locations. Those in the minority, who do plan to move things back onshore, cited supplier performance and inability to achieve cost targets as the primary drivers for reverting or pursuing an alternative sourcing strategy.
Only 16% of respondents have moved work back to their home country.• Most of the respondents who have moved work back to the home country have done so due to offshore supplier performance.• Government incentives provide less motivation for respondents to move work back to their home country than other driving factors.
End of the first 16 minutes.
Outsourcing: involves the contracting out of a business process to another party
Insourcing: performing a business function that could be contracted out internall
Offshore involves relocation of a business process from one country to another
Crowdsourcing: the process of obtaining needed services, ideas, or content by soliciting contributions from a large group of people, and especially from an online community,
crowdsourcing is distinguished from outsourcing in particular for a number of reasons; including that the work may come from an undefined public, rather than being commissioned from a specific, named group,
Freelancer - a person who is self-employed and is not necessarily committed to a particular employer long-term.
Geographical dispersion occurs when project members are located in different physical places, from where it is not possible for them to perform direct communication since they do not work in the same room
Physical face to face
Problem of travelling and site visiting.
Vast geographical distances imply the difficulty of re-locating to another of the company’s sites, and not being able to stroll over to a colleague’s desk to chat about an implementation issue.
a reduced sense of accountability, commitment and partnership inherent in the long distance relationship,
Temporal distance across multiple time zones reduces the number of overlapping working hours, forcing a heavier reliance on asynchronous communication technologies.
Temporal dispersion occurs when there is a difference in working time among the distributed team members
Management of project artifacts may be subject to delays
Good site is follow the sun strategy
GSD requires close cooperation of indi- viduals with different cultural backgrounds.
CulturalDistance.A country’s cultural attributes determine how people interact with each other.
Some cultural attributes, like language, are easily perceived and understood. Others are much more subtle. Social norms, the deeply rooted system of unspoken principles that guide individuals in their everyday choices and interactions, are often nearly invisible, even to the people who abide by them.
Americans are task-oriented. It’s about getting the work done. You don’t need to like your co-workers or have personal relationships with them as long as you all get the work done on time together," Tolbert says. "India is a more relationship-based culture, in which they will do business with someone they trust without a contract. That seems appalling to litigious Americans who assume you can’t trust the person, but if they adhere to the contract you can work with them."
Power distance: the extent to which the less powerful team members accept unequal distribution of power. A higher degree of the Index indicates that hierarchy is clearly established and executed without doubt or reason.
Individualism: belongness to a group. emphasize the “I” versus the “we.
In feminine societies, woman share modest and caring views equally with men. In more masculine societies, women are more emphatic and competitive, but notably less emphatic than the men.
Uncertainty avoidance is the tolreance for ambiguity
A lower degree of this index (short-term) indicates that traditions are honored and kept, while steadfastness is valued. Societies with a high degree in this index (long-term) views adaptation and circumstantial, pragmatic problem-solving as a necessity.
Indulgence :This dimension is essentially a measure of happiness; whether or not simple joys are fulfilled
Socio-cultural distance arises from the different national and organizational backgrounds of the people involved and exacerbates communication breakdown.
Work dispersion is conceptually referred as (1) variations in the engineering process, (2) differences in task and expertise distribution across locations, (3) differences in the work environment, tools and (4) development practices.
Varierty of software development process.
Even pushing a share is not enough
There are lack of common process about acceptance procedures of mutual deliveries, escalation mechanisms, lack of clearly assigned responsibilities and lack of central control of integration [18]. Prikladnicki et al. showed that the software development process variation is more severe in offshore outsourcing projects than in internal offshoring projects
Organizational dispersion occurs when a team consists of members from different organizations or independent organizational units (Knobben and Oerlemans 2006). Organizational dispersion occurs when (1) a team consists of members from different organizations or independent organizational units; (2) there are differences in the objectives and development strategy among organizational units; (3) there are differences in organizational structure across projects; and (4) existence of different responsibility sharing and team identity.
collaboration policy, organization structure, engineering process, development practice and tool adoption negatively influence technical coordination among project stakeholders.
Software complexity can be traced back to the technical dependencies among software components. Traditional software measures have captured logical and syntactic dependencies by measures of e.g., cyclomatic complexity, cohesion and coupling (McCabe 1976; Chidamber and Kemerer 1994).
The failure to recognize these dependencies comes from not only the technical nature of the software components, but also the way they are developed. Besides the technical dependencies, the relationship among developers and between developers and software components can create other types of dependencies, such as technical dependencies, knowledge dependencies, process dependencies, and organizational dependencies:
Technical dependencies occur when different developers work on the same module in the same period of time
Knowledge dependencies occur when a developer relies on expertise of others (colleagues, customers or testers) to work on technical tasks that are responsible by others
Process dependencies happen when developers depend on their configuration management systems, the embodiment of their tools and practices; or when collaboration between two teams in different development phases, or different release cycles
Organizational dependencies are when a functional team depends on another, such as a dependency between a development team and a system test team.
Software complexity can be traced back to the technical dependencies among software components. Traditional software measures have captured logical and syntactic dependencies by measures of e.g., cyclomatic complexity, cohesion and coupling (McCabe 1976; Chidamber and Kemerer 1994).
The failure to recognize these dependencies comes from not only the technical nature of the software components, but also the way they are developed. Besides the technical dependencies, the relationship among developers and between developers and software components can create other types of dependencies, such as technical dependencies, knowledge dependencies, process dependencies, and organizational dependencies:
Technical dependencies occur when different developers work on the same module in the same period of time
Knowledge dependencies occur when a developer relies on expertise of others (colleagues, customers or testers) to work on technical tasks that are responsible by others
Process dependencies happen when developers depend on their configuration management systems, the embodiment of their tools and practices; or when collaboration between two teams in different development phases, or different release cycles
Organizational dependencies are when a functional team depends on another, such as a dependency between a development team and a system test team.
The hypothesis is that the impact of global distances did not directly come to project outcomes variales like quality or … but to. …
Coordination mechanism will
Coordination breakdowns occur when coordination needs are not satisfied in a right time and right manner. It is recognized when a decision about coordination of team members leads to development problems.
Large and complex dependency network: many stakeholders from different sites (Nidumolu 1995), which creates a larger dependency and communication network than in collocated projects
Delay in communication and coordination: communication and information exchange take longer time in GSD than in collocated projects (Nidumolu 1995, Damian 2007);
Limited choice of coordination mechanism: distances among sites disable team coordination in face-to-face manner (Darja et al. 2008)
Difficulty in identifying coordination requirements: identification of people who are technically inter-dependent is difficult (Damian and Zowghi 2003, Cataldo, Bass et al. 2007)
Difficulty in scheduling tasks: the involvement of many sites across geographical locations and time zones makes scheduling common meetings difficult (Espinosa, Cummings, et al. 2011)
Lack of team awareness: GSD project team members are often unaware of tasks and activities of other developers from remote sites (Cataldo, Wagstrom, et al. 2006, Damian, Izquierdo, et al. 2007)
Misinterpretation: team members can misunderstand each other working in different environments and contextual information is not sufficiently given (Holmström and Conchúir 2006, Boden, Avram, et al. 2012);
Collaboration–are 2 or more people working to achieve a common goal. The activities can be done together or separately, but usually the fence between activities is fluid and dynamic.
Coordination – is again 2 or more people working to achieve a common goal. However, the activities are siloed either into small distinct groups or to individuals. Only when pieces are “ready” are their individual pieces brought together and coordinated to fit into a new whole.
It is not just a good idea, it is a law
For example, if a development team is set up with a SQL database specialist, a JavaScript/CSS developer and a C# developer you they will produce a system with three tiers: a database with stored procedures, a business middle tier and a UI tier. This design will be applied whether it is the best or not.
Netflix and Amazon for example structure themselves around multiple small teams, each one with responsibility for a small part of the overall system. These independent teams can own the whole lifecycle of the services they create, affording them a greater degree of autonomy than is possible for larger teams with more monolithic codebases.
Group Belonging
One of the main reasons for why people decide to connect with others on social media channels is to have a sense of belonging to a community
Social networking sites are the new form of social interaction and they fulfill users’ need for companionship and emotional support (Baek et al., 2011). By joining these sites and creating networks of friends, people can interact with more people than what is possible in real life. Social networking sites fulfill users’ need for keeping in touch with friends, staying updated on community events, and maintaining offline connections (Baek et al., 2011).
A second social mechanism behind social media is curiosity and knowledge seeking. According to Perlovsky et al. (2010) acquisition of knowledge is a deeply rooted psychological need, a motivational mechanism for perception as well as higher cognition. This means that gaining knowledge is emotionally pleasing and people get satisfaction from their curious behavior.
Go against it and you’ll get a mess
It is not just a good idea, it is a law
Group Belonging
One of the main reasons for why people decide to connect with others on social media channels is to have a sense of belonging to a community
Social networking sites are the new form of social interaction and they fulfill users’ need for companionship and emotional support (Baek et al., 2011). By joining these sites and creating networks of friends, people can interact with more people than what is possible in real life. Social networking sites fulfill users’ need for keeping in touch with friends, staying updated on community events, and maintaining offline connections (Baek et al., 2011).
A second social mechanism behind social media is curiosity and knowledge seeking. According to Perlovsky et al. (2010) acquisition of knowledge is a deeply rooted psychological need, a motivational mechanism for perception as well as higher cognition. This means that gaining knowledge is emotionally pleasing and people get satisfaction from their curious behavior.
Go against it and you’ll get a mess
SVN adopts a centralized architecture, in which a single central server hosts all project meta- data. Developers use SVN clients to check out a limited view of the data on their local machines. Today, several systems are using distributed ver- sion control that operates in a peer-to-peer manner. Examples include Git (www.git-scm.com), Mer- curial (http://mercurial.selenic.com), and Darcs (www.darcs.net). Unlike centralized tools that let developers check out a project from a distributed version-control system, the peer-to-peer systems provide a complete clone of the project’s repository (called a fork) on local machines, not a just a por- tion of it.
Distributed revision control takes a peer-to-peer approach to version control, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a complete repository.[1] Distributed revision control synchronizes repositories by exchanging patches (sets of changes) from peer to peer.
No canonical, reference copy of the codebase exists by default; only working copies.
Common operations (such as commits, viewing history, and reverting changes) are fast, because there is no need to communicate with a central server.[2]
Communication is only necessary when sharing changes among other peers.
Each working copy effectively functions as a remote backup of the codebase and of its change-history, protecting against data loss.[2]
Numerous different development models are possible, such as development / release branches or a Commander / Lieutenant model, allowing for efficient delegation of topical developments in very large projects.[3] Lieutenants are project members who have the power to dynamically decide which branches to merge.
DVCS proponents point to several advantages of distributed version control systems over the traditional centralised model:
Allows users to work productively when not connected to a network.
Makes most operations much faster.
Allows participation in projects without requiring permissions from project authorities, and thus arguably better fosters culture ofmeritocracy[citation needed] instead of requiring "committer" status.
Allows private work, so users can use their changes even for early drafts they do not want to publish.
Avoids relying on one physical machine as a single point of failure.
Permits centralized control of the "release version" of the project
On FLOSS software projects it is much easier to create a project fork from a project that is stalled because of leadership conflicts or design disagreements.
Group Belonging
One of the main reasons for why people decide to connect with others on social media channels is to have a sense of belonging to a community
Social networking sites are the new form of social interaction and they fulfill users’ need for companionship and emotional support (Baek et al., 2011). By joining these sites and creating networks of friends, people can interact with more people than what is possible in real life. Social networking sites fulfill users’ need for keeping in touch with friends, staying updated on community events, and maintaining offline connections (Baek et al., 2011).
A second social mechanism behind social media is curiosity and knowledge seeking. According to Perlovsky et al. (2010) acquisition of knowledge is a deeply rooted psychological need, a motivational mechanism for perception as well as higher cognition. This means that gaining knowledge is emotionally pleasing and people get satisfaction from their curious behavior.
Case Study at Rosemount Tank Radar AB
Human factor is as important as practice and process in software development.
Forming Stage
In this stage team members are introduced. The program manager needs to state why they were chosen and what they will accomplish for the team. This is a good time to lay out the mission, vision and goals of the team. This is a stage of transition from individual to team member status, and of testing the leader’s guidance both formally and informally.
Storming Phase
This is the phase when a group becomes a team. During this phase most members have their own ideas as to how the process should look and personal agendas are often rampant. Storming is probably the most difficult stage for the team and the program manager to control. They begin to realize the tasks ahead of them are different and more difficult than they previously imagined. They also get impatient about the lack of progress and members argue about what actions the team should take. They try to rely solely on their personal and professional experience and resist collaborating with other team members.
Norming Phase
This phase is when the team reaches a consensus on the “To-Be” process. Enthusiasm is high, and the team is often tempted to go beyond the original scope of the process which a program manager must prevent. During this stage, members reconcile competing loyalties and responsibilities. They accept the team, ground rules, controls, roles and the individuality of fellow members. Emotional conflict is reduced as previously competitive relationships become more cooperative.
Performing Phase
In this phase the team has primarily settled its relationships and expectations. They can begin performing by diagnosing, problem solving, and implementing changes. At last, team members have discovered and accepted other’s strengths and weakness. In addition, they have learned what their roles are.