Feedback: a Critical Element for Remote Team Management.
Anybody who has dabbled in modern management knows that critique and openness are all the rage in modern management books. The days of just following orders and protocol are long over; feedback from both bottom-up and top-down are critical factors for your company's continued success. With business environments changing at such a fast pace, it would be foolish to ignore new ideas and continue to do things the old way. Agile software development methodologies such as Scrum and XP are feedback-heavy and allow for changing business requirements.
In remote software development teams providing adequate space for feedback becomes especially important. Remote team members don’t have shared office space and water cooler meetings to exchange important ideas and address concerns. Failing to provide space for feedback and open discussions will end in disaster, considerable time and money will be spent following the wrong path simply because management didn’t think to ask or developers didn’t feel comfortable speaking up.
Avoid driving off a cliff
One of the most common complaints we get when speaking to new clients about their previous experience working with remote development teams is “They met with the firm multiple times to thoroughly outline their requirements. Then development starts but after a month or two, the product isn't looking like it's supposed to, and on the third month the firm delivers a partially working piece of junk." The client will usually decide to cut their losses, take their junk code and try to hire a more competent developer (usually a much more expensive one) to try and salvage what they can. The development team was given a map and asked to follow it, but didn’t have a compass. They started to drive, drifted off course and drove straight off the cliff. The compass they needed was a feedback process.
One of the main requirements that we have for taking on a new client is that they can ensure they have the proper processes and tools in place to allow remote team members to be successful. We can place the best developer in the world on your team, but if the processes and tools are not in place to provide adequate communication and feedback the developer and his team will fail, the product will go in the wrong direction, and money and time will be wasted. Our work often involves helping our customers figure out what the right process is ensuring that there is an adequate process for communicating with their developers.
Tools of the trade
Modern software development teams (the good ones at least) have a number of tools available for them to ensure that adequate communication and feedback exist. These are some of the ones that we have found most valuable:
Agile development methodologies:
Implementing an agile methodology, like Scrum or XP, will automatically provide a good amount of the communication and feedback space you need for your team to stay on track. Scrum, for example, includes a sprint planning, daily standup and sprint retro meetings. Each of these has a purpose, but together they provide the opportunity for developers, project managers and product owners to speak to each other, understand each other's concerns and take decisions based on the best information available. We work with a lot of smaller teams where a full-on Scrum methodology would be too heavy, but many of them have their own variations of agile methodologies, taking the pieces that work best for them. We can’t stress the importance of having a proper, open process, enough.
Project management tools:
Depending on your team size and project complexity you will want to pick a project management tool that will help your team understand the scope of the work to be done. Trello, Pivotal Tracker, Jira and Basecamp are all popular tools, each one with it’s strengths and weaknesses. What tool you choose will be a matter of personal preference, the important part is to keep it up to date with all of the latest information about your project, what has been done, what is coming up and what needs additional work. Ensuring that your product owner, project manager, QA people and developers all have access to the latest information will go a long way towards ensuring that everyone understands what they are doing and your project goes in the right direction.
Chat, voice and video:
Many successful remote software teams have an open door policy, brought to them by the good folks at Slack, Hipchat and Skype. Make sure that your team is able to quickly reach out via chat, a voice or video call quickly and easily, to discuss urgent matters and architectural decisions they need to make along the way. Walking over to your coworkers desk is common practice in co-located teams and shooting them a Slack message or having a quick video call is the remote equivalent. Requiring your team members to be available via chat during work hours is a good way to ensure there is an open feedback channel.
Using pull requests on GitHub or Bitbucket is one of the best ways to ensure code quality and quick feedback on code decisions. Unless you have only one developer and no one else with technical knowledge, require your team to create pull requests and have them reviewed by at least one other team member. This will allow your team as a whole to know the codebase better and catch mistakes that individual team members might make much faster. It will also encourage developers to write better, cleaner code, at the risk of being called out by their teammates.
We feel that pair programming is very underused, but it’s a great tool for remote teams to do their best work on particularly challenging, complex or critical pieces of code. Encourage your developers to reach out to each other, use Skype or UberConference to share their screens and work on sections of code together. Although this might sound like spending two team members’ time on the same piece of code, it is a great way to encourage quality and well thought out solutions on critical pieces of code, as well as ensuring that there is a team understanding of these components.
Even if you implement all of these tools and principles for your team, you will find you are wasting your time if your team members don’t feel comfortable raising their hands and speaking up when they see things going in the wrong direction. Your team members need to feel that they will not be chastised for raising issues, that their opinions will be heard and carefully considered, and that they understand the business decisions behind the code they are asked to implement. Allowing your team members to easily give and receive feedback, however you choose to do it, will give your projects and your team a much higher chance of success.
Feedback and fairness
Ultimately, providing adequate feedback is simply a matter of fairness to your team. As mentioned in The One Minute Manager, without proper feedback your employees will be working as if they're bowling with a screen in front of the pins: they can only guess at how well they are doing. Feedback, good or bad, will allow your team to understand what's expected of them, help them make the right decisions and improve their shortcomings. Failing to provide them with feedback will only lead to resentment, lousy work and long term dissatisfaction for everyone involved. Be kind, be fair, and be generous with your feedback.