Best practice guidelines for mastering the remote challenge in distributed software development. By Marko Djuric, Managing Partner, InterVenture Nearshoring GmbH, Switzerland.
The right Team Spirit instead of “Us” and “Them” Building a talented and strong distributed team from various disciplines is in any new project or venture a challenge. But the most difficult thing to find is, not necessarily people with certain skills, but an organisational and management style which allows distributed team members to develop their full potential and remain intrinsically motivated over a long period of time.
What never must happen is that your people feel disconnected and that needs a very coordinated effort for open communication and platforms that stimulate a feel of being in this together. Let people share their work openly to create a true engaging environment where the individual contributes to a team, distributed teams contribute together to the company goals and create an “Us” and not a “We” and “Them”.
Following are practices from our own experience which can help to overcome the challenges of distributed software development. They are meant as general guidelines as every distributed team has its own specifics and needs a tailored organisational setup.
1. Support regular Communication
Open communication is the key to successful distributed teamwork. You should minimize the overhead by having a conference room easily available for all teams. Video conferencing is a better option than voice conferencing and in today’s times technical equipment for video conferencing is in terms of price really not a big deal.
You can let your team members choose and even vote for the most practical tools like Google Hangouts, Lync, Skype and different instant messengers and social tools. Email communication should remain the core tool for formal written communication.
We also suggest that you include regular communication as an explicit part of the local Team Lead’s function. This helps to catch up with the missed hallway communication and ensures that all team members are up to date with the relevant information.
2. Use face-to-face Meetings
Our experience shows that regular face-to-face meetings constitute one of the basic success factors for nearshoring. Team members can get to know each other and build mutual trust which is important for many key decisions that need to be taken. At the beginning we suggest that you give each team member the chance to spend a few days on your collocation for an efficient know-how transfer. Personnel bonds can be refreshed by periodically bringing the whole team back together on a regular basis, which can be combined with social events. We suggest face-to-face meetings at least four times a year for ongoing smooth releases and shipping process.
3. Appoint a local Team Lead as the Single Point of Contact
Distributed teams encounter more organisational challenges and need a clear communication and line management structure. Having one local Team Lead on the team as the single point of contact is vital in keeping a distributed team on the right path.One of the main responsibilities of the Lead is to manage and control the work load locally and to find the right mix of programming development practices: Sprint plannings, estimates, pair programming, code reviews, story cards and so on.
The Team Lead’s role is to remind the team of the underlying principles and help guide them to adapt their practices when the temptation might be to abandon them. He takes responsibility for the overall performance of your nearshore team and should have the necessary decision freedom and support.
4. Acknowledge outstanding Performance
It is important that your distributed team or individual team members receive a recognition for good performance. We encourage your to reward individual results with a compensation mix of: Year-end bonus, salary raise, additional days off, promotion in terms of responsibility and role within particular project. Our experience shows that recognition for particular performance stimulates your employees to give their best and to go the necessary extra mile, by e.g. coming in on weekends to finish work and meet tight delivery deadlines.
5. Distribute Work smartly
One of the challenges when the team distributes work is not to do so according to location. Our experience shows that the architecture will begin to reflect the team’s geographical distribution and different locations will become over specialized in particular components.
We suggest that distributed teams should continue to think about their work in the context of completing user stories not adding features to components. They need to consciously distribute tasks relating to a single story across the whole team, regardless of geography, and think in terms of user stories not system components. Avoid breaking user stories into tasks and then assigning tasks according to geography and/or skill sets. Over time this would build up knowledge silos leaving the team with new work that can only be done by one or two people.
6. Reason technical Decisions
Good engineers give well argued suggestions when it comes to software design, architecture and development and there is often disappointment if these suggestions are not accepted, in particular if proper explanation is missing. This is usually part of the daily business and most likely has a direct connection to business aspects developers are not aware off: Budget restraints, framework agreements with customers and other partners, time limitations and similar. We encourage you to take time to transparently explain why a particular decision was made as this will give developers the relevant other (business) perspective, take out the “natural bitterness” and keep them intrinsically motivated.
7. Cultivate Documentation
Maintaining valuable documentation will also improve distributed team collaboration process while using agile practices. We encourage you to provide user stories with use case diagrams in globally accessible backlogs to reduce misunderstandings and improve team collaboration. Various tools like issue tracker (e.g. Jira), project management tool (e.g. Scrum works) also help in maintaining documentation and good transparency. Our experience shows that investing in quality documentation pays off quickly as it goes in line with high development efficiency.
8. Keep up the Feedback Loop
Give your distributed team members the opportunity to comment on things like, motivation, satisfaction within the technology stack they work with, factors which influence their performance both positively and negatively and future ambitions.
This allows you to discover early warning signs, which can often easily be corrected. It is important that distributed employees receive a formal slot to outline positive as well as negative aspects, suggest improvements and give information about their everyday work. Our experience shows that semi-annual employee satisfaction surveys contribute significantly to the overall team atmosphere, intrinsic motivation and employee retention.
9. Use the right Tools
Agile teams cannot rely on sticky notes on a task board or a burn down chart on the wall for project tracking if they are not in the same room. Similarly designs and diagrams need to be shared across multiple locations.
Your decision to distribute a team needs to be coupled with the commitment to provide the team with the tools it needs to maximize communication and the expectation that it will take them some time to optimize around them.
The complete development environment should from our experience include the following integrated tools:
- Project management
- Bug tracking
- Issue tracking
- Documents collaboration
- Source code and repository insight
- Code review system
- Release management (continuous integration)
- Version control system (source code repository)
As mentioned earlier, every team is specific and this requires a specific and individual set up of the environment.
The Author: Marko Djuric, Founder & Managing Partner. After holding different professional positions in Switzerland, Germany and UK while being personally and culturally bound to Serbia, the country of his origin, Marko has co-founded InterVenture with a straightforward mission: Leveraging professional organisational and managerial practices with the outstanding Serbian IT talent in order to create sustainable competitive advantages for international IT companies. Contact Mr. Djuric (English or German) via:
Office: +41 (0)43 299 69 70
Email: marko.djuric@interventure.info,
Web: www.interventure.info
We would like to thank Mr. Djuric and InterVenture for their major contribution to the relaunch of the Outsourcing Journal Online Edition as our Technology Partner.
This article was published in the Outsourcing Journal Special Edition “Nearshoring Europe Edition” in Q4/2015. You can download this edition (150 pages, PDF) free of charge here (membership with German OutsourcingA association required (free, personal membership available) > https://outsourcing-journal.org Special-Editions/outsourcing-journal—nearshoring-europe-edition.html