Remote Development Resource Guide
What is remote development?
Remote development typically refers to software development where members of the development team are not in the same physical location. This might be teams working in multiple corporate offices, developers working in a fully distributed workforce, contractors joining a team, or even employees temporarily working from home like many impacted by COVID-19. What this actually looks like can vary considerably. Some teams embrace Agile development, employing Scrum and true pair programming or mob programming practices. Other teams may choose the waterfall method with each team member independently working on a feature, but enlisting fellow teammates for the occasional design, mentoring, or troubleshooting session.
What area of remote development are you interested in?
Get the most out of your remote development with this guide full of helpful resources. Simply go to the area of remote development you are interested in and check out answers to common questions along with a variety of informative articles.
Tips & Tools
How can I become a successful remote developer?
To be a great remote developer, you’ll want to take the time to design the optimal home office setup, and then select the tools that will meet your specific needs. Preparation is important, but there’s much more to being successful at remote development. While good communication is critical for all teams to succeed, it’s especially true for remote teams. Many thrive in a remote environment, but it’s not easy for everyone. It’s important to take care of both your mental and physical health when working from home. There’s some great advice on these topics and other best practices for remote development, so take a look at some of the articles we’ve collected to help you be the best remote developer you can be.
If you spend much time at all doing remote development, you’ll want to create an ergonomic workspace. The following articles include great tips for helping you set up the ideal environment for comfort and productivity.
- How to set up a work-from-home ‘office’ for the long term
- How to Set Up a Home Office You Love: 12 Tips
- Tips for Setting Up Your Home Office
- Office ergonomics: Your how-to guide
Now that you’ve got the perfect office setup, you’ll want to make sure you have the best tools for remote development. There are a lot to choose from and the right tool for one person is not necessarily the right tool for another. Check out these articles to see a comparison of features and decide which tool is right for you.
- Pair Programming Tools for Remote Development
- Zoom alternatives: Best video conferencing software for business
- Remote Pair Programming: 7 Collaborative Coding Tools
Now that you’ve decided on the right communication tools, you’ll want to use them effectively for seamless communication. The following articles can help you avoid the miscommunication and inefficiencies that often surface in virtual teams.
- 5 Tips for communicating effectively on a Remote Team
- 10 Ways Remote Workers Can Improve Communication Skills
- How to Collaborate Effectively If Your Team Is Remote
Maintain Healthy Habits
While there are obvious advantages to remote development, it can also take a toll on both your mental and physical health. If you know what to watch for and have a plan to prioritize your health, you can avoid the health issues often associated with working from home.
- Working Remotely During COVID-19: Your Mental Health and Well-being
- It’s Not You: Working from Home Can Be Incredibly Lonely
- How To Keep Your Mental Health in Check When You Work From Home
- Ways to Stay Fit When You Work From Home
- Staying Active While Working From Home
Follow Best Practices
As the virtual workforce has grown, so has the volume of articles focused on making you succeed in a virtual environment. We selected some of our favorite articles that we found useful.
- 20 Tips for Working From Home
- Best Practices For Working From Home
- How to Work From Home: 20 Tips From People Who Do It Successfully
What is Agile development?
Agile development is an iterative approach to software development that follows 12 principles outlined in the Manifesto for Agile Software Development, product of The Agile Alliance whose goal was to come up with an alternative to “documentation driven, heavyweight software development processes.” Agile software development involves collaboration between self-organizing cross-functional teams. The goal is rapid delivery of high-quality software, in an environment that allows teams to easily respond to changing requirements.
Can you do remote Agile development?
Absolutely! Although the original principles called for face-to-face communication, “meeting” tools such as Zoom, Slack and Microsoft Teams are the next best thing. As far as pair programming or mob programming, CodeTogether is a great tool for that. It lets IntelliJ, Eclipse, and VS Code users host simultaneous coding sessions securely. Participants only need a browser to join in, yet they still get IDE functionality with the look and feel of their preferred IDE. There is always a free plan for occasional collaborative coding, or affordable plans for those who regularly practice Agile development. For organizations with strict security measures, an on-premises version is also available.
- Pair Programming Tools for Remote Development Comparison Matrix
- Bring Remote Agile Teams Together: Expert Tips and Best Practices
- Revisiting agile teams after an abrupt shift to remote
A simple framework for effective team collaboration on complex products. Scrum is centered on self-organized teams working in sprints, fixed time periods of 1-4 weeks, to complete a “Done” increment. The product owner represents customers and other stakeholders, driving the product backlog. A Scrum master leads the team and daily Scrum meetings keep the project on track. At the end of the sprint, a sprint review joins stakeholders and the scrum team to inspect the results. Afterwards, the scrum team holds a sprint retrospective to evaluate their performance and plan improvements.
A workflow management method in which work items are represented visually on a kanban board, allowing teams to balance demands with capacity and improve the handling of bottlenecks. Its roots are in lean manufacturing, where production is based on a pull system driven by customer demand for just-in-time delivery.
Pair programming is a technique in which two programmers work together at one workstation. Each assuming the role of either driver or observer (also called navigator), and switching between these roles during the session. The driver writes the code, while the observer reviews the code as it is typed and considers the strategic direction of the work. With this technique the team benefits from cleaner code, and each developer can improve their programming skills with the knowledge gained from their partner.
Extreme programming (XP) is a development method used by Agile teams that focuses on customer satisfaction. Its goal is to deliver the software that is needed when it is needed, and is an ideal method to use when customer requirements are dynamically changing. Extreme programming revolves around small groups of around 2-12 programmers, an extended team including managers and customers, as well as frequent releases in short development cycles. It encourages pair programming or extensive code review along with unit testing of all code.
Mob programming is an approach to software development where self-organizing teams work on the same code at the same time, in the same space, and at the same computer. In addition, the team works together on other areas associated with software development such as defining stories, working with customers, designing, testing and deploying software. A similar practice is called swarming.
- Agile Alliance: Mob Programming – A Whole Team Approach by Woody Zuill
- I did mob programming every day for 5 months. Here’s what I learnt.
- The Value of Pairing, Swarming, and Mobbing
- Swarm: Beyond pair, beyond Scrum
How do I set up a secure remote development environment?
Security in a remote development environment has to be a top priority. None of the advantages associated with working remotely are worth it if critical data isn’t secure. It’s important to create a policy that promotes best practices, ensure your employees know the policy, and have a plan in the unlikely event of a security breach.
Create a Remote Access Security Policy
A comprehensive plan has many considerations. Will you be providing devices or will employees use their own computers? Each option has its own pros and cons, but if you allow employees to use their own equipment, you’ll need a Bring Your Own Device (BYOD) policy. If you have a computer use policy, make any changes related to remote work. Your policy should require employees to use the latest versions of both their operating system and antivirus software to minimize risk. To keep workstations secure, advise employees to lock their workstation when away and encrypt local data and backups. Accessing the Web significantly increases the risks of remote development. To reduce risks, employees need to use strong passwords and ensure both the WiFi used and sites visited are secure. Additional precautions such as SSH connections and setting up a Virtual Private Network (VPN) can further reduce the risk in a remote development environment.
- 10 Steps to a Secure Remote Development Environment
- Increase Productivity While Maintaining Organizational Security with an Effective Remote Access Policy
Communicate to Employees
After coming up with a solid security policy, make sure all of your employees are aware of the details. Encourage employees to take ownership of their role in preventing a security breach. Cyber scams are getting more sophisticated, educate employees on what to look out for.
Create a Response Plan
After creating a solid policy and making sure your employees adhere to it, what happens if there is a security breach? You don’t want to answer that question after disaster strikes. Think of your response plan as an insurance policy. You hope you’ll never need it, but it’s nice to have just in case.
How do I lead a remote development team?
After you’ve hired the best developers, you’ll want to get the most out of your team. Consider the following areas to effectively lead your remote development team.
Good communication is required for any team to succeed, but it is especially true for remote development teams. When leading a remote team, clearly communicate team goals and be sure each team member is clear regarding their role in reaching that goal. Encourage your team to overcommunicate, this will help make up for the lack of incidental communication that typically takes place in a physical office. Even if you don’t embrace Agile development, it’s still a good idea to have daily scrum meetings to keep the team on track, along with weekly progress reports. Keep minutes for all meetings with action items, this helps the team stay on track and is an effective method to get team members caught up when they miss a meeting.
Establish Work Schedules
According to the 2020 State of Remote Work report, remote workers selected the ability to have a flexible schedule as the number 1 benefit to working remotely. As the team leader, you’ll want to set expectations for team members regarding their work schedule. A happy employee is a more productive employee, so you may want to allow your employees at least some degree of flexibility. Because communication is so important to productive teams, establish regularly scheduled times for meetings. If you have developers working in different time zones, try to find a time when their work schedules typically overlap. When time zones don’t overlap, get creative. Maybe divide teams by compatible time zones, so that each team can have daily scrum meetings, and then find agreeable times for less frequent large team meetings. For flexible schedules to work, communication is key. Use a good communication tool and have all team members update their status when leaving to avoid the misconception that they are slacking off. You’ll also want to have a plan for when emergencies happen. How will your team members get in contact with you?
Just because most of us love working from home, that doesn’t mean we don’t want to feel connected. As the leader of a remote team, you may have to find creative ways to help your remote developers feel connected. Since teams don’t get the usual “watercooler” talk, include occasional unstructured time in meetings and solicit questions and creative thought. Focus on ways to reward employees, from small things like praising them during a meeting, recognizing birthdays, or sending milestone gifts, to big things like comp time after a big release or even cash bonuses. At least once a month have one-on-one video meetings with each team member to build rapport, listen to their concerns and provide feedback. And lastly, if at all possible plan an in person team building activity at least once a year. If this isn’t possible, get creative! Think outside the box, maybe host a virtual team party where food is delivered to the team, or a virtual team wedding shower where gifts are shipped to the honoree and opened over a video call.
Create the Ideal Environment
Make sure your development team has the proper setup and tools they need to do the job well. The good news is that there is now a plethora of tools. Use this guide to help you select the right tools for your team. The proverb “All work and no play makes Jack a dull boy” is true in remote development. You want your developers to be sharp, so encourage team members to have a clean start and stop time to promote a healthy work/life balance.
Manage . . . Don’t Micromanage
Good remote development requires trust. Managers have to trust that developers are doing their jobs and let their results speak to their productivity. Code reviews are a great way to not only produce quality code, but also gauge productivity. Use code reviews as a way to praise a job well done or detect areas where you can help developers with skills they are lacking. In a remote development environment, it’s easy for developers to become siloed. Keep in regular contact with your team, even if it’s just a quick “hello”. Look out for issues they are having, especially when they “go dark” and stop communication. Encourage team members to sync with others on the team, this promotes a healthy team vibe in a virtual environment.
- The 2020 State of Remote Work
- 10 Important Tips for Managing a Remote Development Team
- How to thrive working remotely from a communications expert
- An Employer’s Guide To Work From Home Best Practices (2020)