The ongoing tech talent shortage has made working in remote and extended software development teams a popular option. Whether it’s managing an in-house development team or an (external) extended one, each model comes with its own unique challenges.
This article will focus on how to make your in-house and extended teams work in concert and stay productive. In this scenario (most often) both teams work on different areas of the same development project.
However, to achieve successful outcomes, it demands excellent coordination. This is because both internal and external teams need to maintain the same pace as they code towards the same goal.
Over the last decade, we have refined the process of coordinating clients’ on-premise and extended development teams and formulated the following best practices we’d like to share with you.
1. Set Clear Goals and Over-Communicate Them
Whether it’s software development or a non-technical project, successfully working together comes down to setting clear goals.
By clearly defining each professional’s responsibilities and your expectations for the development cycle, you will be better placed to get everyone on the same page. It will also help if you take an Agile approach to manage dispersed teams and keep everyone on track.
2. Choose an Appropriate Project Management Tool
Software development projects that run smoothly depend heavily on seamless communication. As a product owner, you’re charged with picking the right communication tools and setting up some ground rules.
Communication usually depends on the company culture, but you can also create a complementary communication model within your team. The key here is to avoid email clutter and engaging within a centralised system where all comments, questions, and suggestions are stored (and easily accessed as needed).
By deploying transparent communication and collaboration protocols (like Jira, Trello), both teams can work on the project without the need to continually update each other on their progress.
Cool fact: The use of MS Teams in business has grown from 5% in 2019 to almost 17% as of now due to quarantine as a result of the coronavirus outbreak.
Top PM Tools Used By Software Teams In 2020
3. Make Regular Meetings the Norm
From the first discussion to deployment, meet regularly with your internal and external teams. There are tools like Zoom that make video conferencing easy. Use these platforms to your advantage and create an environment where both sides are encouraged to engage.
This is critical to ensure that both teams advance at a similar pace. By doing so, you can integrate each function smoothly and not waste time and money waiting on one team to deliver.
Weekly meetings are also the perfect time to brainstorm and find solutions to problems that come up during each iteration. These cross-functional development meetings will also illuminate the challenges they face while providing status updates and more.
Top Communication Channels For Software Teams In 2020
4. Encourage Team Members to Meet Without You
We are social creatures, and it’s important to know who we are working with. So make time for team members to engage in non-work related video conferences and calls to get to know each other better.
You can even engage in team-building exercises and games through video conference tools. This will help reduce some of the psychological distance some team member may experience while collaborating on the project.
Another effective online communication method to synch up in-house and extended software teams is to have regular daily virtual coffee meetups where both teams choose a convenient time to join a group call to discuss things other than work (e.g., fun, personal moments, lifestyle, etc.).
At Evolve, we practice daily team challenges: each day a new team member assigns a certain challenge to all colleagues. During the day, they should complete a challenge and send a photo proof to the group chat in MS Teams. It can be anything from exercising yoga to doing pushups, citing poems, or washing hands correctly while singing a national anthem (it works extremely well with diverse multinational teams!).
5. Eliminate Duplication and Set-Up Continuous Delivery (CD)
When development teams don’t communicate efficiently, there’s a risk of both in-house and extended teams working independently to solve the same problem. To help negate these types of scenarios, it’s essential to have a transparent system where each team member can see what the other is doing.
Reworking has a considerable impact on your resources, so it’s vital to take active steps from the beginning to avoid it. By enabling access to the entire code developed by both teams, you can also save time by making it easier for software engineers to reuse the code written by the other team.
Continuous delivery (CD) allows teams to track down all changes of any type (such as new product features, configuration changes or updates, bug patching and testing) and push them into production in a fast, secure, and scalable way.
Continuous Delivery is an umbrella term including continuous integration and deployment (CI/CD), build automation, and configuration management.
Continuous deployment allows teams to deploy code instantly as each tiniest change has been made rather than wait for multiple updates to take place and deploy them as a group. This helps automate the entire process and deliver seamless and constantly updated software applications.
This development practice lets development teams and individuals check out and verify portions of code from a repository. The code can be edited, changed, and updated; it is eventually integrated into the overall application. This reduces the need for teams to set time aside for long, bulky integrations and software updates. The process requires multiple developers and ensures quick, significant changes that are quickly integrated into applications.
Top 5 CI/CD Tools For Software Teams In 2020
Check out their comparison here.
In build automation, developers still the same process as in CI/CD. The code is still compiled, built, and tested; changes still require approval. However, the same kind of triggers that automatically put changes into place are not allowed here.
Top 5 Build Automation Tools In 2020
- Lambda Test
- Apache Maven
You can compare them here.
Configuration management (CM), a.k.a. IT automation, reduces the burden placed on development teams to ensure the application in its current state performs as expected. Configuration management allows documenting historical records of all changes made during CD as well as the app’s current state and performance. Essentially, CM means build version management and benefits app performance control significantly.
Top 5 Configuration Management Tools In 2020
- Red Hat Ansible Automation Platform
- CloudBees Core
- Octopus Deploy
- AWS Config
Feel free to compare them here.
6. Review the Code Every Week
Aside from the regular team meeting, it’s crucial to schedule weekly meetings where the teams share their work and engage in code reviews. This approach helps minimise technical debt and problems down the road.
To achieve this, you have to get both in-house and extended team leaders to communicate with each other extensively. Communication can also help avert barriers during future iterations when bugs pop up in the system.
Furthermore, if your in-house team leader is aware that the external team is building a component you can use, for example, they will be able to wait and work on something else.
7. Find Balance Between Control and Flexibility
Whether you nearshore development or build software in-house, it can be tempting to micromanage the process. Or you might even want to assign responsibilities and take a step back and leave it to the teams.
However, to stay on point, it’ll be essential to strike a balance between both control and flexibility to keep both teams working smoothly. You can do this by establishing milestones but with some level of flexibility. If the delivery of a component was late, for example, discuss what happened and move on.
This applies to both your in-house and extended development team. While it’s natural to try and micromanage your extended team (because they aren’t physically in the same building), it’s better to trust them.
When you micromanage remote workers, you risk making them feel undervalued and demotivated. Instead, create an environment where they feel appreciated and encouraged to innovate.
As challenges pop up through the development cycle, make yourself available and, if needed, solve the problems together.
The key here is not to micromanage everything or to move forward with a completely hands-off approach. Keeping software development projects and on schedule requires balance and extensive communication and collaboration.
Evolve has been building successful client-tailored Extended Teams in our Ukraine-based R&D Centre for 10 years now and we're ideally placed to help you do just the same! Would you like to see how we make a difference?