Managing remote teams is a challenge by definition. We proved this by own thorny experience during a recent project where Logicify PM was to lead a remote team of sub-contractors and decided to share our best practices and the lessons we studied along the way. This article would be useful for CTOs hiring remote teams, Project Managers leading such teams and for team members working remotely as sub-contractors.
Hiring remote teams is a regular practice in software services outsourcing. Logicify software development teams also work remotely with clients who reside abroad. This was the case for one of our FinTech projects: Logicify team worked as a remote subcontractor of a US-based client. The project was long-lasting, and the team on Logicify side comprised developers, quality assurance specialists, and technical support managers led by a project manager (PM). In aid of developing an integration with a new financial system, the client decided to staff another remote team. It was recruited in Bulgaria, and Logicify team had to cooperate with it to develop the integration. As there was no manager on Bulgarian side, Logicify PM had to shoulder all the organizational and technical management, like specification and deliverables, and represent the customer’s interests for both teams, and vice versa.
Since being a part of such a triangular work model was a new experience for Logicify, we raised a few bumps along the way. So, we decided to share the challenges faced and the lessons learned from this mode of cooperation as well as our best work practices that proved effective yet again during this project.
Main Managerial Challenges
Managing a remote team, which is a challenge by itself, in this project, has coupled with other issues we could not foresee before we started our mutual work with the newly hired team. Since this was the first-time experience for Logicify Project Manager to manage both an on-site dev team and a remote one, she had a hard time aligning both teams’ needs and the customer’s expectations on the project. As a result, this was not always possible to provide 100% accurate ETA or anticipate difficulties that any of the teams would face working on the integration.
Another tough aspect of the manager’s work concerned treating both teams equally and staying non-biased when working with every team member, regardless of their location, achievements, or failures. However, the largest intricacy the PM had to manage was a result of opposite approaches to programming each of the teams had. At Logicify, we stick to an unwritten code of dev ethics, which presupposes cleanliness of the source code, daily code merging, commenting on the code where necessary, no copy-pasting of the source code. Our remote colleagues, in some instances, failed to follow these cooperation norms. What is more, they preferred using obsolete technologies or already retired versions of the programming tools, which complicated the whole process for all team members.
Useful Cooperation Practices We Employed
Yes, we used to be green in managing and cooperating with remote teams; yet, there were a few Logicify best practices we applied when working with our Bulgarian colleagues. And these practices proved effective once again. They included but were not limited to:
- fair play inside Logicify team, between Logicify team and the client, and between Logicify and Bulgarian teams. This is the foremost rule we apply to whatever project we undertake, and we have never failed with such an approach.
- developing a sense of project ownership among both teams. We strongly believe that proper “doer” culture is impossible without being a part of client’s own business. So we try our best to align our value system and goals with those of the client. This FinTech project was no exception.
- establishing an effective communication between two teams. Transparent and constant communication is the key to success, so we tried to make sure both team communicated on the daily basis and, as a result, adopted each other’s experience and learnt from each other’s successes and mistakes. Online communication tools, such as chats and apps for screen-sharing, were used for this purpose;
- tracking the tasks assigned to both teams on a daily basis. Logicify PM kept abreast of the development process using online bug tracking systems. In this project, Redmine aided in clear and transparent recording and tracking of the dev and QA tasks.
- daily stand-ups and weekly status calls between two teams. No surprise, performance checkups have value when it comes to efficiency. Daily touch points of both remote teams allowed the Project Manager to always stay on top of the events. The team members, on the other hand, knew there was a support channel in place if they encountered a problem or had questions. Through these calls, both teams and the customer gained insight into the progress of the project and what to look forward to over the next couple of days.
What We Have Left Behind (Though We Should Have Not)
When the newly hired team was to come onboard, we should have minded a few peculiar aspects of cooperation. However, due to lack of experience in such a mode of work, we failed to do this from the very beginning. And we have indeed adopted this lesson for further projects of the same kind. Now you could learn from our experience not to fall into the same trap. So, as a team that was more experienced in project-specific ins and outs, we should have taken care of the following aspects:
- We should have taken part in interviewing the new team members. We had a long relationship with the client, so this was wholesome for the Project Manager and the technical lead of Logicify team to take part in interviewing the new team members and check their professional level. A test assignment could have been the most efficient way to prove the candidates’ skills and motivation.
- We should have outlined the areas of responsibilities inside the teams, between the teams and the PMs before we started to work together. This could have ensured there were no serious misconception along the way.
- The technical lead from Logicify side should have done regular code reviews starting from day-one. This way, we could have ensured the source code written by Bulgarian colleagues aligned with the specification and overall project design before it was merged with whatever Logicify dev guys wrote.
- There should have been no cross-tasking before we made sure the professional level of both teams was commensurable. This particularly concerned the tasks of similar and equal complexity shared between teams. At the very beginning of cooperating with a newly hired team, the best practiсe is to assign them easier short-term tasks.
Human factor is the first and foremost in every team. And while people are the most valuable asset in every organization, they are, at the same time, the most complicated asset to manage. Every Project Manager knows there are numerous factors to consider while working with remote teams to boost their efficiency coefficient and improve cooperation spirit. But not everyone knows remote teams are only as productive as a manager’s ability to manage them. This article touched upon a few managerial challenges Logicify faced while working with a remote team of subcontractors. It also summarized some best practices of cooperation and a few lessons learned from this mode of work on a recent FinTech project. Though we used to be unschooled on managing remote teams, we gained a few important aspects while cooperating with our foreign colleagues. We couldn’t help but shared these tips as they may come in handy.
- Logicify Double-Sided System of User Behavior and System Condition Monitoring
- Logicify Best Practices for Knowledge Transfer Between Developers
- Fail Fast or Pivot. On Importance of Collecting Feedback and Monitoring User Behavior
- IoT: How We Built Logicify Connected Office with a Soldering Iron (Slide Deck)
- Logicify Debut in EdTech: How We Built an Online Platform for Inclusive Education