Notes on Udacity "remote team management" course
Tools for Connecting
Remote Talent.
Teams don’t have to be in the same time zone
to effectively collaborate. You’ll want the right mix of tools that can support
both synchronous and asynchronous interactions because chances are you won’t
all be online at exactly the same time. It can also be helpful to facilitate
face-to-face interactions to create more of a “watercooler vibe” with remote
workers. Good communication isn’t just limited to chatting and meetings either.
Inline comments and tracked feedback can serve as a constant brainstorming session.
- ·
Google
Docs for asynchronous
collaboration without files having to be locally downloaded
- ·
Slack for communication
- ·
Google
Hangouts for video
communication
- · Chromebox video conferencing equipment
- Jing and Snagit for screen-capture and image sharing.
Keep collaborative
code clean
If you adopt a distributed model, know that
joint coding will make up a significant portion of collaboration on software
development projects. For that reason, Git repositories are crucial. Developers
can work on a single branch of code not shared with other teams, then merge
code back to the main branch. It’s a good idea to run some unit tests (and
automate those, if you can).
- · Bitbucket
- · GitHub code repository
- · GitLab
- · Jenkins continuous integration server
- · Functional testing tools: TestNG, Selenium, PhantomJS, Sauce Labs
Centrally locate project progress and issue
tracking.
For more simple
development processes, an issue tracker like that built into Github/Gitlab may
be sufficient. Using progress assignment, coordination, and tracking tools can
help set to-do’s and let everyone check in on the status of a project, no
matter where they are. Some projects might be large enough to require two types
of project tracking (e.g., Basecamp for high-level project views and JIRA for
granular, technical issue tracking).
- ·
JIRA for issue and bug tracking
- · Asana
- ·
Confluence for documentation
- · Basecamp
- · Trello
- · Float
·
Prototype apps for a
tighter feedback loop.
Prototyping apps is crucial for rapid
iteration. For mobile apps and user-facing software, prototyping allows for
feedback and testing early on. Try one of these platforms to transform static
designs into interactive mockups, allowing stakeholders to get the end view of
a product.
- ·
InVision
- ·
Flinto
- ·
Origami Studio
- ·
Justinmind
- ·
Marvel
- ·
AdobeXD
Develop, deploy, and monitor in the cloud.
Software is getting more modular, and so are
the IT environments we use to build, test and launch that software. Embracing
this approach also makes sense for teams adopting a more distributed model. If
you aren’t looking to invest in a large, expensive suite of integrated DevOps
software, consider using different tools to divvy up aspects of your
development cycle such as collaboration, testing, deployment, or monitoring.
Some tools can multitask, so pick the one with the features you need.
- ·
Bamboo
- ·
Capture for Jira
- ·
Docker
- ·
CircleCI
- ·
Hipchat
- ·
Amazon Web Services
(AWS)
- ·
Other tools for
monitoring: BigPandaHostedGraphite, Nagios, New Relic, Pager Duty, Pingdom,
Splunk
Consider security when
sharing data and information.
What about protecting the data, systems, and
communications that happen when you’re hiring remote freelancers? You might opt
to use a virtual private network (VPN) to encrypt connections, grant limited FTP
access, or limit rights and permissions when granting access to your server.
Download Upwork’s Data Security whitepaper for practical tips on securely
working with remote freelancers.
- ·
Dropbox
- ·
SmartFile
- ·
Google Drive
Check out these additional resources that
provide perspectives on various tools:
· Blog on Technologyadvice.com, Wikipedia link
Distributed teams need trust to succeed:
Three Trust Pillars
- 1. Trust
that each person knows how to do the work.
- 2. They’re accountable to each other.
- 3. They’re doing their best in uncertain circumstances.
Consider these tips to help support your team as you all move forward:
·
Be available. Communication
is pivotal to your team’s success—and that includes creating space if someone
needs to talk. Sometimes, people just need to feel heard, whether they have a
conflict with a colleague, struggle with working on their own, or are anxious
about news in their community.
·
Create a sense of
community. Working from home can be isolating—something that can impact
wellbeing as well as productivity. Find ways for your team to stay connected on
a regular basis. Here
are some ideas:
·
Daily coffee breaks: A
daily “coffee break” can give everyone a chance to catch up and talk about
their day.
·
Weekly team meetings: A
weekly team meeting can help everyone share successes and stay in the loop.
· Video calls: Use video calls to keep your team engaged. Meetings have different dynamics when you aren’t sitting around the same table. Circulate an agenda ahead of time so your team can be prepared, and call on each person so everyone has a chance to speak. Pause frequently so there’s room for questions that may come up.
·
Err on the side of
overcommunication. Particularly while everyone
adjusts to new working arrangements, share frequently—whether it’s updates from
the executive team or a progress report on current projects.
· Set clear expectations, roles, and responsibilities. Reduce duplicated efforts and cross-communication by defining individual roles and responsibilities. For example, you might be the only one with remote access to sensitive customer information; another person may liaise with IT to troubleshoot tech problems.
Using Agile with Remote Teams
The Agile
methodology for software development is used successfully by many
remote engineering teams. Agile leaders and teams should understand key
principles for its usage, while also not rigidly adhering to a strict set of
rules.
We'll discuss some challenges
that must be navigated to use Agile effectively with remote teams as well.
Challenges faced by remote teams and how Agile can help overcome
these issues
·
Timezone issues
·
Communication problems regarding code and requirements
·
Availability and response time for inquires
·
Lack of interaction and rapport
·
Cultural differences
Stages of an Agile Scrum Workflow
There are 3 stages to an Agile Scrum Workflow:
·
Sprint planning
·
Sprint review
·
Sprint retrospective
During the sprint there is also a daily meeting, scrum or stand
up. They tackle a lot of the drawbacks and challenges that remote workers face.
Sprint Planning:
The planning stage lays the groundwork for the entire sprint and
establishes the sprint goal. By working remotely you can get a handle of what
you need to do in the next couple of weeks (depending on the sprint duration)
and who you need to work with. Sprint planning can be done remotely using tools
like Jira. It should also be done through video calls where all members of the
team take part. This type of meeting is highly beneficial for working remotely,
offering several touch base and chat opportunities that might not come up
naturally. The planning stage brings together all the people working on the
project, no matter where they are.
Stand Up or Scrum:
This is a recurring meeting, happening daily, for up to 15
minutes. During stand up you tell people what you did the day before, what do
you plan to do today and if you have any roadblocks. This daily type of
communication with the entire team offers opportunities to establish rapport
and discuss important matters. From a remote perspective regular meetings, with
everybody involved, give a lot of perspectives and build connections as people
working individually can easily get boxed in and lose focus of the team.
Sprint Review:
In this stage the sprint goal set during planning is assessed.
The entire team takes part, including the Product owner and the Scrum master.
The sprint review is focused on deliverables, on the product increments, on the
software itself and the actual work that was done. For remote teams this is an
important stage of analysis, discussion of problems, of solutions to those
problems, estimations that might have been misleading or other issues that came
up in the sprint. The review meeting is very informal, builds rapport, trust
and increases the level of collaboration between team members.
Sprint Retrospective:
While the sprint review
focuses on deliverables and software, the sprint retrospective focuses on
reflection and improvement in the teams processes and collaboration, on what
went well and what went wrong. It covers the team dynamics, how can the
workflow improve and what particular things should be changed. The review is
all about the product and the retro is all about the processes. The lack of a
physical presence can be compensated by these discussions that focus on process
and continuous improvement.
For Further Reading
Upwork - Using Agile in a Remote Team: Processes, Impact and
Benefits