"Global software development is not a phenomenon but a reality nowadays" [1].
Hence, more and more companies are using (or at least considering) distributed software engineering as a means to develop
software. On this website, we consider a global(ly distributed) software engineering (G(D)SE) to be a contractual relationship
between a client and vendor organization, where the client organization outsources parts of its development process. There
are a number of advantages to this approach of developing software, such as cost savings, reduced time to market and proximity
to the market and customer [2]. Unfortunately,
these advantages do not come without drawbacks that are the result of the gap between developers, introduced by the distributed
way of working. Based on renowned work in the area of GDSE ([3]),
we identify this gap alongside four directions: communication, coordination, cultural differences and team bonding. On
this website we will discuss these categories and divide them in subcategories which pose serious risks to the smooth execution
of a distributed software engineering project. Per subcategory we serve the reader with solutions that make developers
happy, namely: technology. In short, we will propose a collection of tools to actively mind the gap in your distributed
software project.
Speaking of tools, we created the following tool for you to explore solutions to challenges in GSE. You can read all of our
suggestions in a linear manner by scrolling down. But feel free to (first) hover over the core dimensions, subcategories
and tools for a short description. Clicking on them will take you directly to the details!
Hover the graph
Hover the graph to find out what kind of tools we propose to deal with the different GDSE challenges.
Four main difficulties in GSE
Almost two decades ago(!), Carmel described in his renowned book "Global Software Teams: Collaborating Across Borders and Time Zones" ([3]) the five centrifugal forces of global software teams:- Geographical dispersion
- Coordination breakdown
- Loss of communication richness
- Loss of teamness
- Cultural differences
Tools for communication
Communication is key in software engineering, but with globally distributed engineering it may very well be even more important, while it is also harder to maintain. In addition, this is not limited to the planned communication (such as the daily stand ups and sprint reflections). The well renowned 'Allen Curve' from the seventies ([6]) describes that a gap between two people over 50 meter (or more) drastically reduces the chance of unplanned communicaton. Luckily, there are a lot of tools that can support communication in a distributed setting. We divide these tools into three subcategories, which can all significantly contribute to closing the virtual gap between multiple software teams. The three subcategories are:- Share tools
- Todo and progress tools
- Free talk
InVision
InVision is a web-based (and mobile) app that lets designers/developers turn their work into active prototypes with animations. Clients can provide feedback and comments directly on the site and track progress in real-time by looking at your to-do list.InVision can help in global system engineering in the design phase. InVision lets off-shore designers create a full app in a mock-up way where you can click through the app. By adding to-do's while clicking through the app, you can communicate in an efficient way.
Try out InVision
Screen Hero
Screen hero is screen sharing software which works well in combination with Slack. Screen Hero allows members of the team to share their screen in real time, and allows multiple cursors so you can actually pair program on someone else’s machine.With Screen Hero you can thus combine the power of inhouse programmers with off-shore programmers, both concerning pair programming and problem solving.
Try out ScreenHero
BlueJeans
BlueJeans is a cloud video conferencing platform, which enables your remote teams to video conference on any platform with ease. Seeing the other party when communicating can be a beneficial factor for bonding and expressing yourself, which is hard to do in GSE because of the distance between remote teams.In GSE communication is key, but many communiation tools rely on instant messaging or concept sharing, which are all good for their own purpose, but for meetings it can be essential to see the other party. Expressing emotion for instance is very hard to do via text alone. When you are able to see the other person, you bond more, and can get your point across in more ways than only text. A conversation gets more natural With facial expressions or hand gestures, this will avoid misunderstandings and wrong assumptions.
Try out BlueJeans
To-do's
To-do's can be seen as a subcategory of coordination, but we here make a distinction between coordination tools for management purposes (discussed in the coordination category) and coordination tools that heavily increase communication between developers (discussed here). Tools that ease the work of developers are more likely to be used often by them. If these tools in turn also have social features, the chance for unplanned communication increases. That is why the following tools are beneficial for not only communication but also project progress.Asana
Asana is a free project management tool designed to help teams track projects from start to finish. One of its best features is that it lets you see the overall progress of your project step by step, so your clients know exactly how long something will take without having to bug you about it.Asana is a great tool for globally distributed software engineering, for managers, developers and clients. With Asana you can plan your sprints, and every item on the sprint has its own message board. Asana also asks for regular updates on the project-wide message board. This actually forces you to post something on the board, with a big chance that others will respond. The project-wide board is for managers and even clients to see what the progress is, but also for developers working on different parts of the software to see how everyone is progressing. This transforms the project into a much more living and social entity.
Try out Asana
Wunderlist
Wunderlist is a to-do list tool that helps you plan your individual tasks, set notifications and reminders, and collaborate with clients so they can see exactly what you’re up to and when you’re working. It is available on both desktop and mobile, so you can update it on the go. If you have clients who want to see the project laid out in detail, this tool will definitely help.Wunderlist has a lot in common with its direct competitor Asana and is thereby for exactly the same reasons a great addition to GSE. Which tool to use is up to your preference.
Try out Wunderlist
Basecamp
Basecamp is a very popular web-based project management tool that helps multiple groups rally around a single project. Because the project is the focus, you can create a system where both you and the client are on the same page about various stages of the project.Basecamp focuses on everything in one place and cutting meetings. This essentially is decreasing the total amount of communication, but increasing the amount of effective communication. Because everything is in one place, it is ideal for GSE. Everyone can see what is going on and organize their communication in the same place. Group chatting, scheduling and sharing is all available in basecamp which increases the chance of communication for distributed teams thus helping decrease the virtual gap.
Try out Basecamp
Trello
Trello is a planning tool in which all parts of the project can be listed. This tool offers one location which everyone can access and can use to discuss current dependencies and planning with regard to the project. In Trello, tasks can also be assigned to a person or a team which is especially useful for teams that are located around the world.Trello is much like Basecamp, however it focuses more on management then communication, it is still increasing the chance of unplanned communication because deveopers work in one organized place. Much like Basecamp the advantages lie in a centralized place for organizing communication and isssues.
Try out Trello
Free talk
Aside from the communication solely based on work related stuff, it is important that employees also have tools that can be used for all kind of random talk. Hence, the last section of communication is about free talk. This helps the creativity flow and can improve working relations. There are a lot of tools for this, think of instant messaging and social platforms. We will discuss a few that stand out for office use and explain their popularity and why they are suited best for GSE.Slack
Slack is a popular communication tool and for good reason. It takes the best of email and live-chat features and combines them into one app that you can use on your desktop or mobile device. Aside from private messages you can also create collaborative boards around different projects or topics, which is helpful if you’re working with a larger team of people or on multiple projects with a single client at once.Slack may be the best messenger suited for GSE and free talk. Slack works by joining a slack group where all your employees/colleagues can be in. From there you can easily create separate channels with the people you need/want for any reason. Channels could be project-specific, but you can also create channels for Friday drinks and other random stuff. The strength of Slack is then that everyone can reach each other in a very simple way. The simplicity is then the reason that the chance on unplanned communication increases.
Try out Slack
Appear.in
Appear.in focuses on remotely distrubted teams and is in essence build for GSE. You can use it right from your browser by creating a new chatroom that enables you to share your screen(s) and have group conversations.What makes Appear.in great for GSE and closing the virtual gap is the simplicity of use: you can join whenever you want on your mobile/laptop or office PC by just entering the given chatroom address in your browser. Naturally, you still need to have a cause to create a chatroom, but the simplicity to join somewhat closes the virtual gap between the remote teams. Tools that are always running will sometimes be overlooked, wich may very well lead to slower and less utilized communiation channels. On the other hand, when a new chatroom was created and you get invited, there is probably a cause and multiple people will join quickly. This way communiation is improved and with all the features this specific chatroom brings, it is of great use in GSE.
Try out Appear.In
Skype for business/Microsoft Teams
It is very likely that you have used Skype at least once and therefore know that such a tool is a must have when it comes to GSE, so we will not elaborate on that. However, it might be interesting to really look into the advanced features of skype, such as sharing files, screens or a digital whiteboard while calling. There are plenty of ways to use skype as a real GDSE supportive tool, rather than "just" sending your voice across the globe.Microsoft Teams is bascially following up Skype for business and has more features like Slack and is becoming a direct competitor of the previously discussed tool. MS Teams is heavily gaining traction because Skype was already widely in businesses. Another advantage lies with the fact that bigger companies naturally are more likely to use Microsoft's software. Some also say that you can interact more quickly by using Microsoft Teams.
Try out Microsoft teams
Tools for Coordination
Coordination in software development teams can be divided into the following categories:- Centralized Structure
- Early Identification of Dependencies
- Documentation
- Progress Analysis
Centralized Structure
If the structure of the project is clear and decisions about the structure are centralized in one place then the communication about it is also clear. Everyone knows how the project is formed and that makes the communication and coordination about it more easy. Below are two software analytics tools that help in analysing projects by making the structure and statistics of the project more readily available.SonarQube
SonarQube is a software project analytics tool to which you can connect a git repository. SonarQube then analyses the structure and quality of your project. These analytics are available to everyone at any time.Try out SonarQube
Codefactor
Codefactor is another software analytics tool which helps in analysing the code base of your project. The tool also easily connects to git and gives a clear overview of each branch available in the project.Try out CodeFactor
Identification of Dependencies
For a global software development team it is important that remote teams are not working on dependent parts of the project. So it is necessary that these dependencies are figured out as early as possible. Below are project planning and team management tools that in combination with a software analytics tool can help in identification in dependencies such that no two remote teams are working on dependent parts.Trello
Trello is the planning tool in which all parts of the project can be listed. This tool offers one location which everyone can access and can use to discuss current dependencies and planning about the project. In Trello, tasks can also be assigned to a person or a team which is especially useful for teams that are located around the world.Try out Trello
Github
Github is the main versioning tool for software projects. With this tool each team can add new work on their own branch. With this it becomes clear what features are being added. With Github the structure of the project can also be analysed to detect dependencies of different project parts. Especially interesting is the usage of other tools through GitHub for managing your dependencies. Examples of such are depicted in the image below.Try out GitHub
Agile Cockpit
Agile Cockpit is a project management application and offers tools for tasks suck as backlog management, release planning but also a tool to organise the teams structure. This tool gives an overview of the project's active teams and their members. Easy management of remote development teams is crucial for a succesful project. This tool helps in coordinating tasks between teams when project dependencies are clear.Try out Agile Cockpit
Documentation
For teams that do not run in to each other on the workfloor it is particularly essential that the documentation of the project is up to date and clear. When a certain part of the project is unclear you could ask someone in person for extra clarification, but for remote teams this is impossible. Therefore it is important to have proper documentation to prevent these situations. Below are two tools that provide a good way to keep the documentation up to date.Github Wiki
Github Wiki is a tool on Github which you can link to your project repository. In this tool you can create all sorts of pages on every subject you can think of. These pages are automatically added to the sidebar in alphabetical order. The search bar makes for an even more accessible body of information. The best part is that anyone in your business can access these pages as well as make new ones.Try out GitHub
ReadTheDocs
ReadTheDocs is a documentation tool similar to Github wiki pages. It also allows for easy creation and searching of documentation, but it does not simply list all pages, pages can also be grouped and categorised. It lets the user browse the documentation more easily when they are unsure what exactly they are looking for.Try out ReadTheDocs
Progress Analysis
The way the teams in a company are integrated with each other decides how internal relations between the teams are set. These relations determine what information and updates about the project a team needs from other teams.Github
Github is the main versioning tool for software projects. On their website you can browse your repositories and comment on all parts of a project. You will probably be familiar with the issues and milestones you can create on GitHub, that are especially usefull to analyse progress. You can also mention other people to involve them in the conversation if they need to hear what is being said. In addition to that users can turn on notifications for certain repositories to get all the updates they need.Try out GitHub
JIRA
JIRA is an advanced project tracker that helps software development teams with issue and bug tracking. It also offers online scrum boards and agile reporting tools for sprints. These tools are very useful for tracking the progress of a project for teams that are spread around the globe because they are accessible online. Remote teams can thus interact with each other more easily and in an effective way for the project.Try out JIRA
Tools for cultural differences
Another problem that causes a gap between members of a global distributed software engineering project is culture. Using global distributed software engineering often means working with people all over the world, people that can have different cultures. These different cultures can sometimes fit well together without effort, but can sometimes cause problems for people working together. In order to bring down the gap between team members, cultural differences must be dealt with. However, it is important to note that there are a few pieces of technology that really adhere to this. We here discuss some of those, but more elaborately focus on the steps to take when managing cultural differences. The tools we propose are thus a means to help you do so.Managing:
Managing a culturally diverse team is different from managing a team consisting of members with the same cultural background. To help manage a multi-cultural team there are three different aspects that can help according to [4]:- Systems to harmonize between outsourcer and supplier The first goal can be achieved by using technology and coordination/control systems so members of the team can be kept up to date of the process of the project. Universal tools that are understood by everyone in the field independent of culture can help accomplish that.
- Understand differences in norms and values The second point is about defining the hierarchy/power between the members and the companies. State how different people practice business differently and define which aspects should be included in the project and which should not.
- Encourage 'negotiated culture' of cross-cultural teams developing compromise 'working culture' The last point concerns the exchange of mechanisms between members, so that members can learn from each other and try create custom mechanisms for the current team that work for all the members.
- Globesmart is a tool that helps manage a culturally diverse team. The tool provides information on managing the team and how to do assessments.
- Git helps with version control and mananging projects, independent of any culture.
- GitHub is a version control platform tool, that is a standard in the software engineering industry. Thus this tool can be used to manage files, independent of culture.
- Trello can help provide a general overview of the progress of the project. It can help planning with SCRUM and Agile development.
- JIRA can be used to manage projects in an easy to understand way, independent of any culture.
- In order to communicate for exchanging experience and methods between team members of different cultures, Slack can be used. Slack can help with both sending files, using bots, and chat.
- Skype can be used to have a direct communication line for team members to exchange methods and experience.
Staff:
Choosing the right staff is another important aspect for overcoming cultural differences. [4] defines the following three points related to choosing the right staff:- Recognize limits to cultural adaptation The first point states that there are limits to adaption of culture. So foreigners cannot become locals and vice versa. Don’t try to change people completely so that only one culture exists in the team.
- Use 'cultural bridging' staff The second point states that there should be an effort to have people in the team that are familiar with both cultures in the team. These people can help bridge the differences between the team members with different cultures.
- Use locally-relevant recruitment and retention incentives The last point is about the different salary and status/expertise acquisition. Make sure that these are according to the standards of the different culture, but are not too different in the team.
- Linkedin is a tool that can provide the right staff for the team. It can also be used to search for developers who are multi-cultural.
Training:
The last aspect is training. The team needs to be trained so they learn how to communicate and work together with the different team members. Three aspects can be looked into when considering training:- Give pro-posting cultural training for supplier employees working in outsourcer companies (supplier) The first point is about learning the language and cultural practices, norms and values. This way team members know how different people have different views on various aspects.
- Develop systematic on-the-job cross-cultural training The second point is used to reflect on ongoing experience and share knowledge with colleagues, so that the team members can learn from each other and how they experienced and handle curtain (technical) situations.
- Recognize that training needs are two-way (outsourcer) The third point makes sure that not only the outsourced part of the team is trained, but the local team should be trained to work with different members as well. This way the local team can get familiar with the outsourced team members so they know what drives them and how to best communicate and work together with them.
- Duolingo is a tool that can help members of the team to learn languages spoken by other members of the team in an easy and fun way. This can help understand different team members better.
Tools for team bonding
One thing that will increase productivity as well as quality in a global software project is team bonding. A team with strong social bonding will have less need for tools and formal procedures, because many issues will already be resolved informally. Sue Newell, Carole Tansley and Jimmy Huang define two kinds of social capital, described in [5]: External bridging social capital, and internal bonding social capital. While this section has few tools, it is worth to note that this is still a very important category. Team bonding however has a very strong social aspect, and a lack of teamness represents a problem that cannot easily be removed by extra communication or coordination. It is very much a feeling, and as such this is a challenge that has been faced since whenever people started to perform tasks together rather than by themselves. As a result of that, there are many non-technical solutions, which precede the technical age, which are often preferrable solutions over developing new tools, which explains the lack. Nonetheless we will try to give you a feeling of what is out there concerning tools to support team bonding.External bridging social capital
External bridging social capital tools are tools that increase a feeling of 'teamness' between different teams that are working on different locations/projects. An often observed occurrence is that while internal trust and cohesion of the different teams are fine, there is little trust between teams on different locations. Note that many of the tools described before increase this bonding and trust. Here we discuss two other tools that can support your distributed project.Ariadne
Ariadne was initiated in 1996 by the European Commission's telematics for education and training program. Since then, an infrastructure has been developed in Belgium and Switzerland for the production of reusable learning content, including distributed storage and discovery, as well as its exploitation in structured courses. The core of this infrastructure is a distributed library of digital, reusable educational components called the Knowledge Pool System (KPS) now actively used in both academic and corporate contexts.Try out Ariadne
Note: Unfortunately, we can only provide you with this image of an older version of Ariadne, but it should give you a feeling of its interface.
SocialCDE
SocialCDE (formerly SocialTFS) is an extension of Collaborative Development Enviroments (aka ALM platforms) to aggregate teammates’ content from social software into the developer’s workspace. Current services include CodePlex, Team Foundation Server, and GitHub as supported CDEs. We also provide plugins for Visual Studio and Eclipse-based IDEs to aggregate and show socio-technical content from the following Twitter and Facebook. SocialCDE is part of a research project in the areas of Social Software Engineering and Global Software Development, led by the Collaborative Development Group at the University of Bari, Italy. SocialTFS has been developed to support our hypothesis that information shared on social media can work as a surrogate of the social awareness gained during informal chats, thus helping to build trust among members of global teams.Try out SocialCDE
Internal bonding social capital
Another challenge that can play a role in globally distributed software engineering is the internal bonding social capital of a team. If there is no internal trust, this will have serious impact on the quality of the software. It is worth to note there are almost no tools available that have strengthening internal social capital as an explicit goal. Most often these are found to be secondary goals, and even then this is rarely explicitly mentioned. While this may be considered a gap in current technology, one must also think that there are many other ways internal teambonding can be strengthened. For internal social capital has the advantage that the entire team is in the same place. It's an entire field in the study of management and HR, and there are as many techniques as there are experts. The lack of software most likely does not reflect a lack of solutions to the problem, it's just that this part of the problem may not be one that is most easily solved by adding more tools. There are however many non-tool approaches to increasing internal team bonding. Susan Heathfield, management consultant and HR expert, recently wrote an article for The Balance, in which she describes the “12 C's for Team Bonding”. Among these C's are Clear Expectations (has executive leadership clearly communicated its expectations?), Control (does the team have enough freedom and empowerment to feel the ownership of their product?), the earlier mentioned parts of our site, Culture, Communication and Collaboration, and many others. Samantha McDuffee, an analytical marketing consultant, recently wrote a piece for teambonding.com, in which she describes 6 DIY activities to create in-office team bonding. These range from the standard icebreaker games, to beyond icebreaker games like family events, and even include quite sophisticated ideas like office gamification. Through their site there's a free e-book available with many tips, as well as many examples of activities. In conclusion, there are many resources for team building and reinforcing internal social capital, but since this is a problem that is as old as companies themselves, most prominent solutions to this problem are not necessarily technology-based.References:
- Šmite, Darja, and Juris Borzovs. "Managing uncertainty in globally distributed software development projects." University of Latvia, Computer Science and Information Technologies 733 (2008): 9-23.
- Ågerfalk, Pär J., et al. "Benefits of global software development: the known and unknown." International Conference on Software Process. Springer Berlin Heidelberg, 2008.
- Carmel, Erran. Global software teams: collaborating across borders and time zones. Prentice Hall PTR, 1999.
- Krishna, Srinivas, Sundeep Sahay, and Geoff Walsham. "Managing cross-cultural issues in global software outsourcing." Communications of the ACM 47.4 (2004): 62-66.
- Sue Newell, Carole Tansley and Jimmy Huang. "Social Capital and Knowledge Integration in an ERP Project Team: The Importance of Bridging AND Bonding" British Journal of Management, Vol. 15, S43–S57 (2004)
- Allen, Thomas J. "Managing the flow of technology: technology transfer and the dissemination of technological information within the R and D organization." (1977).
- Thissen, M. R., Page, J. M., Bharathi, M. C., & Austin, T. L. (2007, April). Communication tools for distributed software development teams. In Proceedings of the 2007 ACM SIGMIS CPR conference on Computer personnel research: The global information technology workforce (pp. 28-35). ACM.