Upwork’s mobile vision centers around helping people get more work done faster than ever. Being the world’s largest freelancing marketplace, this means our mobile experiences must help 12 million freelancers and five million clients worldwide connect and work faster than ever before.
As the mobile product manager, I often work with a hybrid team of onsite and remote employees, as well as freelancers completing projects located in multiple countries, spanning across several continents. You may be thinking that working with remote development teams and freelancers can get tricky. You’re right, it can. This may make you wonder…
Why work with remote development teams?
Much has been written about the benefits of distributed teams and its potential impact on your organization if you adopt this new way of working. Basically, it comes down to the fact that if you truly want to work with the best people in the world—who have the skills you need—you likely have to find them where they live (and that’s not always in San Francisco). This way of thinking is becoming increasingly prevalent as reported in the latest study, “Freelancing in America: 2016.”
At Upwork, we don’t just work with remote developers because it’s our business. We work with remote developers because we rely on their amazing talent to help build our products, website, and business. Han Yuan, Upwork’s SVP of engineering, goes into depth about the competitive advantages we gain from using the Upwork platform.
While there are inherent challenges to working with remote developers, we continue to successfully launch valuable products and features, such as mobile features that allow:
- Freelancers on Upwork to search for and submit proposals for jobs on the go
- Cients on Upwork to review proposals and hire on the go
- Freelancers and clients to collaborate on projects with instant messaging
So how do we make hybrid teams work so well? From my experience, below are seven tips that help us succeed.
1. Start with the reason why
It’s important your developers buy into the entire product before they begin work. This starts with communicating why you’re building what you’re building.
Yes, this may take longer than just telling people about the piece of the project they’ll be working on. But it’s worth it because when the developers and designers you’re working with know the underlying reasons why they’re doing something, chances are they will know how to do it even better than you imagined. When they’re dedicated to the reason, they may even make the impossible possible.
Starting with why is especially important when working with a distributed team. Because it guides the product—and the team—along the path to success.
2. Share a clear vision of what you’re building
After getting designers and developers to invest in why they’re building a product, you have to be clear about what you’re building. We use design thinking, which starts with truly understanding who you’re building for and clearly defining the problem you’re solving. How we employ this process at Upwork should have a post of its own (maybe a future topic).
Accompanying the design specs, I create user stories and acceptance criteria. This provides a clear and easy way for a remote or onsite developer to understand the requirements for what we’re building. From there, we use JIRA to track work of the team—but you can use any other task management app, such as Trello. What’s most important is providing clear requirements that are broken down into pieces that work for your team.
3. Communicate regularly and be available for questions
We hold three scrums per week with the team. They give everyone updates and identify any blockers. Why don’t we do this every day? The reason is we supplement these updates with “always on” instant messaging. Jason Fried, founder and CEO of Basecamp, provides a detailed reasoning for this practice here.
You want the ability to communicate constantly so that no one spins their wheels or remains stuck for too long. We stay in constant contact with DASH, Upwork’s instant messaging tool. It’s great for situations such as when a requirement hits a development roadblock or may no longer make sense. Rather than have a remote team member spin their wheels, we remain responsive and agile enough to quickly identify a path forward.
4. Set clear roles and responsibilities
When working with any team, chances are people will have differing opinions. Or different perspectives on the details of what you’re building. In these situations, conflict may arise, which is a bit more difficult to manage when the person works remotely.
Coordinating time zones and finding time to get people on the same page can be difficult. And if we use asynchronous communication (such as email) to work it out, it can take days before we reach a resolution.That’s why it is important to bring people together to discuss the issue in real time, such as during a video conference.
One way to minimize conflicts is by building trust amongst everyone involved in the project. While people may have differences of opinion, you can avoid conflict when each team member trusts the other person is doing the right thing. Generally speaking, a designer should be the expert in design, the developer should be the expert in development, and QA is the expert in QA. Everyone should be able to voice their opinion about the product and be listened to respectfully. This is especially important for remote workers, who can feel isolated because they’re physically removed from the rest of the project team.
When you build trust between colleagues and across roles, it also empowers the experts to convince others of their perspective and to make the call when needed. At Upwork, we help build trust by holding a week-long offsite, which we invite all remote team members to attend. During the offsite, we set goals and participate in team building activities that help us get to know one another on a personal level. At other times, we hold tech talks where we learn from one another. And when we’re on video conferences, we try to briefly talk about things that aren’t about work.
Even when you have a group of professionals who trust one another, there may be times when you as the owner of the product must voice your point of view and make the final call. Try to use this card judiciously. But know that sometimes, you have to move the ship forward with your point of view. Be sure to do so while balancing everyone’s voice and sense of ownership in the product.
5. Plan ahead for multiple time zones
Meetings can be difficult across multiple time zones. We found while face-to-face meetings may be preferred, they are not always productive or convenient.
When it comes to communication, we follow these rules of etiquette:
- If something can be handled via chat or email, skip the meeting and save everyone the time.
- Don’t email or chat when something can be resolved faster with a live conversation.
- Create rules and stick with them. For example, if an email or chat thread is more than five replies long, then call a meeting.
For productive meetings and to avoid confusion about what work needs to be done afterwards, take diligent notes on key decisions and follow up on action items. Notes should be visible and accessible to all participants. At Upwork, we use a combination of Google Docs and Confluence. When we plan for face-to-face meetings, we use Google Hangouts for ease of use and accessibility.
5. Use visuals often
When working with teams, whether onsite or remote, it’s easy to miscommunicate. You can minimize miscommunication by writing things down. When taking live notes, use visual slides or screenshare so everyone can follow along. Or use markup tools like Skitch to add commentary and call outs to screenshots or visual requirements.
6. Celebrate wins
Teamwork doesn’t end once you ship; you will iterate and continue improving the product, things will break, or things will go wrong. That’s why it’s critical you build relationships with the developers you work with. Continuity makes it easier to make the product and your results better.
One way to build continuity is by celebrating wins. There is power in celebrating even small wins. It’s hard to celebrate with a distributed group, but you can have a toast remotely or send tokens of appreciation.
Tip: Save on shipping by sourcing local gifts or vendors. Such as gift cards to a local coffee shop.
7. Hold retrospectives
When working remotely, it’s harder to spontaneously share your thoughts or feelings. But these conversations can be valuable. By holding retrospectives, you give everyone an opportunity to discuss what worked well, what didn’t work so well, and identify ways to fix things. The more regularly you do this, the better your can all become.
Format the retrospective in such a way that everyone can participate. We use Google Drawings to draw a retrospective board of what went well, what could improve, questions, and suggestions. Everyone writes, then we summarize and vote on what to follow up on.
It’s easy to get too busy to do this (our team faces this problem), so schedule time on the calendar in advance to build this habit. In every one of our retrospectives, we’ve identified issues we can solve or improve, whether it’s a development process or giving more effective updates in scrum meetings. The point is, we always improve from retrospectives. And the cumulative power of small improvements can be monumental.
See what works—then make it your own!
These are some of the things we do to make our distributed workers more cohesive and agile. As a result, we consistently release better products. Because projects and individuals are different, you will need to test what works best for your projects, your organization, and you as the project owner.
Remember that when leading any team—remote or onsite—think of it as if you’re leading a jazz band. When you improvise and let people step up, you can make great products together.
The post 7 Tips for a Successful Distributed Team: Lessons Learned as Product Manager for Upwork’s Mobile Apps appeared first on Upwork Blog.