The Nuances of Hiring and Managing Remote Employees for Software Development
Originally published at onix-systems.com.
A startup’s chances of building a successful product directly depend on its software development team. Early-stage startups usually have at least one tech-savvy founder but little money. Often, they can’t afford an office and build and fine-tune their product themselves, working remotely.
However, remote employees may be a startup’s oyster. Instead of relying only on the local workforce, startup founders can hire top specialists from more affordable foreign markets. Eventually, they can open a physical headquarters, but more and more startups opt for distributed workforce models. It’s even more reasonable during the COVID-19 crisis that makes teams shift to remote work anyway and puts budgets under increasing pressure.
Established companies are increasingly relying on offshore outsourcing too.
This article outlines the benefits of remote software development and procedures to hire the right workers. The management of such teams differs from managing software development teams in-house, so we’ll offer some tips as well.
Distributed Workforce Models and Examples
In the software industry, two team compositions are typically distinguished: on-site (co-located) and virtual teams. These latter are subdivided into distributed and remote teams. These terms are often used interchangeably, but there is an inherent difference between the types.
A distributed team is a hybrid model combining co-located and remote workers and practices. Any business managing remote teams in different locations can be called a distributed company. It may have a physical office or offices located in different cities or even countries, but the team members can work from anywhere, e.g., their homes, co-working spaces, cafes, or while traveling, using digital collaboration tools.
It’s suitable for startups looking to augment their teams with remote talent while downsizing their office, transitioning from a physical office to the all-remote model, or just exploring the pros and cons of virtual teams for their business.
A totally remote team doesn’t need any physical headquarters, only a virtual office built with digital tools. Colleagues that may live all over the world and work from home or other places, nevertheless, collaborate using videoconferencing and other technology.
Many tech companies began remote-first and are still driven by a distributed workforce. Here are several examples:
1. Automattic, the people behind WordPress, WooCommerce, and many others have been managing remote teams for over 15 years. Without any physical headquarters, around 1,300 Automatticians collaborate across 77 countries.
2. Basecamp, where Ruby on Rails was born, is another original remote-first company. Starting with four people, now they have about fifty located in 32 cities around the world. They love working remotely so much they wrote a book on it.
3. Buffer is a fully distributed team of 85 people living in 15 countries. Grown from humble beginnings, they are now serving over 73,000 customers.
4. GitLab is arguably the largest all-remote company. Convinced that all digital product companies will operate similarly eventually, they also have published a handbook about managing software development teams remotely.
5. InVision has 700 employees distributed across the world. When a fully remote team was building InVision Studio and spotting gaps in their workflow, they applied their solutions to ensure the platform’s intuitiveness, accessibility, and efficiency for other remote workers.
6. Zapier is based in Sunnyvale, California, but employs 300 people across 17 time zones. Deeply concerned about remote team management, they created their own applicant tracking system and The Ultimate Guide to Remote Work.
Naturally, remote software development is not a magical cure for all startups’ problems. Like any practice, the model has its pros and cons.
Software Developers Working Remotely: Pros and Cons
Many startups are afraid of hiring remote workers for two reasons. First, most people are used to going to the office to work. The second reason concerns building a remote and co-located team together, which would require the optimization of all processes for both teams.
Along with the fear of changes, the following disadvantages are usually cited:
The remote team’s inadequate knowledge of your product
Remote employees may not know much about your product at the very beginning. However, proper onboarding, communication, and project management can solve this problem quickly.
Lack of personal contact with and among remote developers
Candidates usually can’t come in for an interview, and some companies have difficulty trusting someone they haven’t met face-to-face. Others believe that when developers work miles away from them, it’s impossible to manage, control, and motivate them.
This myth is refuted by numerous successful companies outsourcing their software development. Moreover, at some point, you will be happy that your project manager (PM) relieves you of the burden of daily interaction with every team member. As for the perceived lack of interaction between remote workers, modern technology can make them feel more connected than employees who work in the same office.
Different time zones, languages, and cultures
Significant time differences may cause delays, inconveniences, and distractions to the startup leadership and the distributed team. However, the right communication strategy and tools will mitigate the inconveniences and risks. As long as remote developers are willing to communicate during your business hours, a time difference poses little problem. The right attitude and vast international experience also eliminate the problem of language and cultural barriers. Major outsourcing software companies guarantee their developers’ English language competence. Moreover, their cultural diversity can benefit a project or product.
It may take a while to find a suitable team
Hiring the right remote software development team takes more effort and time than hiring a single freelancer, to say nothing of a local specialist. However, once contracted, a reliable partner will boost a company’s productivity and growth significantly.
Thus, each problem either has a well-known solution or a “silver lining.” Moreover, they are fully offset by the following benefits:
1. Access to the best talent
Instead of hiring professionals available nearby, entrepreneurs can select from the global pool of talent. They can hire the best experts to suit their unique project goals and needs at reasonable compensation.
When you work with outsourcing agencies, they typically offer pre-screened candidates that have met a prior quality standard. These professionals have rich expertise and experience in implementing various features, employing multiple technologies, and solving issues for international clients. They are interested in positive feedback and references from clients, keenly aware of corporate policies, and quickly adapt to dynamic work culture. Remote work environments, with more freedom and less pressure, increase their creativity and productivity.
2. Faster start and continuous development
It’s common to hire for projects a whole outsourced software development team rather than recruit professionals one-by-one. Clients get all the amassed software development expertise they need for a complex project. The team, which is already fully staffed and has gone through a vetting process, is accustomed to working together and can set off on the project immediately.
As distributed team members are located in different time zones, it’s fair to say that remote developers work for you around the clock. According to several industry surveys, remote workers tend to be more engaged than their peers working in offices. A developer who works from home experiences fewer distractions. Outsourced teams that have an immediate need to remain on the cutting edge of the industry also have greater development capabilities. All of these factors accelerate a product’s time-to-market.
3. Minimizing administrative tasks
Offshore team members are essentially your employees that are managed and housed by your outsourcing partner. You don’t have to find space for them, make payroll, etc. Remote team leads and PMs take away most of your headaches associated with the product development process. This frees up your resources and enables you to focus on acquiring and retaining customers, increasing sales, and more.
Once the work is done and the team is paid, there are no more obligations. It’s up to you to continue the cooperation, order support, or part ways.
4. Saving money
An offshore team has a lower burn rate. For example, in Eastern Europe, it’s possible to secure high quality at much lower prices than in Western Europe or North America. Startups typically pay for the hours spent working on their project or a fixed service fee. They don’t need to pay health benefits, taxes, equipment, or insurance. All-remote teams don’t have to pay for office rent and maintenance either.
Outsourcing agencies help startups avoid expenses associated with recruitment, personnel management, payroll, infrastructure, accounting, and financial management. They also help estimate the development budget so the startups can plan ahead.
5. Expanded market reach
Closely connected with your product, the remote employees will become unpaid brand ambassadors in their respective areas. Thus, by collaborating with outsourcing companies and web or mobile app developers located across the globe, companies are indirectly expanding their market reach.
If you opt for working remotely, pros and cons, risks, and side effects should be considered. The following bits of advice may help you mitigate those risks when you build your distributed software development team.
How to Hire a Remote Software Development Team or Developers
An optimized hiring process is crucial to get the most out of your distributed or remote teams.
1. Clearly outline your software development requirements.
Before hiring remote software developers, and actually, before anything else, it’s essential to formulate your project requirements. We typically ask clients to pick the two most important points out of the three: time, money, or quality. This helps set the priorities of the upcoming project and determine the necessary resources, e.g., 1–2 freelancers for temporary staff augmentation or a whole full-time team.
Formulate your requirements for the team composition and your goals and expectations for each role concerning their work and delivery time. Codify your requirements into a job specification for each role, e.g., web or mobile UX/UI designer, front-end developer, back-end programmer, quality assurance engineer, solutions architect, DevOps expert, etc.
Some jobs may require that you enumerate exactly the necessary programming languages, frameworks, technology stacks, and skill levels. Also, consider what soft skills, domain knowledge, and cultural know-how you would like a candidate to have. Split the requirements into essential and desirable: give a chance to candidates who may not be a perfect fit now but may become indispensable after a reasonable amount of training.
Will you offer a fixed-price rate or pay per hour? Do your research into the pricing in different regions of the world.
2. Work out the remote employees’ search and screening plan.
Make sure to prepare clear and appealing vacancy announcements. Top software developers look for benefits beyond a paycheck, so highlight the value of your project or other benefits of working remotely with you rather than with other companies. Don’t over-promise in your job offer, though: you may need to offer additional perks when you need to close the negotiation.
To get more inbound interest for your remote jobs, post your job ads widely:
- You may take advantage of the big job boards like Monster or Toptal, focus on platforms with a flourishing membership community, such as StackOverflow or, if needed, job boards for specific technology experts.
- Publicize your vacancies and needs on LinkedIn and other social networks.
- If you need a niche expert, consider posting on specialist’s forums too.
- On your website, refresh About Us, Jobs, or Team pages and add your present team members’ testimonials.
You might look for candidates yourself as well. There are plenty of options online: generic freelancing sites like Upwork, massive professional social networks, and specialized hiring platforms, such as Behance and Dribbble for designers, Clutch for specialized staff augmentation agencies, or marketplaces like TECLA where one can hire virtual teams directly. You can also hunt candidates on Hacker News, GitHub, Twitter, or other places where professionals congregate.
The developers’ per-hour rates vary from freelancer to freelancer and firm to firm because they depend on the country’s economic setup and market rate, their expertise, track record, and even your project type and complexity. Try to select companies or professionals with the best price/quality ratio.
Once you’ve short-listed those whom you consider interesting, email, or message them to learn more about the people and what they have done.
3. Develop a structured interview and testing process.
Put together a screening process with technical interview sessions that will help you evaluate the remote developers’ caliber, competence, and dedication, compare the candidates objectively and make the right choice.
It’s generally recommended to start with a screening video call. This can immediately flag insurmountable barriers.
Your technical screening should be poised to challenge the candidates, weed out those who lied in the resumes, and highlight any potential flaws. This can be done in many ways. A recorded 30-minute test could suffice for some jobs, while others may require several rounds of interviews concerning more than just coding.
A paid trial period, ranging from a day’s work to a whole week, may be the most effective way to prove a candidate is a good fit. It will help you assess their skill set, level of personal commitment towards work, and ability to deliver under pressure.
Besides the necessary skills to get the job done, look out for the following qualities:
- strong self-discipline and motivation required for work outside traditional work environments;
- problem-solving skills necessary in situations where no one can help or instruct them;
- proactive mindset;
- ability for collaboration and teamwork in a virtual environment;
- being passionate about your product, company, and brand.
Try to match up each person to the role. Do they fit? Do they extend the role? Do they have the right personality traits? If you doubt, ask for more information and schedule an additional call.
If a candidate proves capable at the interviews and skills tests, do the standard reference checks and then an offer call. Be transparent with the candidates regarding the wages. Don’t conceal the extent of your requirements to negotiate a lower rate.
4. Negotiate, develop, and sign a contract.
It’s essential to work out a detailed roadmap defining the scope and timeline of the project. On fixed-price projects, the parties also need to agree upon the budget. Make sure to review the costs thoroughly and look for any hidden fees.
Consider the time difference when you talk about regular stand-up and Scrum meetings. It is also important to account for any national holidays or other factors that might affect your project timeline.
All of the developers’ hardware and software platforms should be compatible with the target platforms where the software product will run.
An outsourcing agency would normally send you a standard contract. It covers the deadlines, rates, standards, communication model, and a non-disclosure agreement to protect your sensitive business information. It must be clear who owns the code and has access to the secret sauce.
Take your time to study the terms of services, negotiate additional terms, if needed, and seek legal advice before signing a contract.
Simultaneously, you need to get ready for managing remote employees. Remote teams, especially working in different time zones, may present certain difficulties in terms of project management. The following advice should help you avoid them.
How to Build a Virtual Office Environment for Remote Teams
1. Create your virtual work environment and processes.
When you build your distributed team’s virtual office and set up your workflow processes, you will need to address the project plan, work hours and availability, communication channels, protocols, guidelines for teamwork, productivity, accountability, project glossary, and more.
Most outsourcing IT companies adhere to Agile methodologies, breaking the product development process down into iterations. Create in advance a database where you will record the team members’ workload.
Collaboration tools will further structure your distributed team’s work. Such teams typically require at least common
- email service
- video conferencing application
- file-sharing instrument
- project management tool including tasks and time tracking
A rule of thumb is to create for each remote worker daily or weekly goals that can be tracked with tools like Asana, Trello, or the paid JIRA that integrates with GitHub, GitLab, and other useful instruments. Clearly communicated deadlines will facilitate your team’s successful collaboration. The tools should also help you follow up, if needed, and leave a digital “paper trail.”
Various project management tools will help ensure that work is getting done as expected. For example, AceProject helps with managing projects from start to finish. In Onix’s experience, JIRA has proved effective at managing tasks, logging time dedicated to the tasks, tracking progress, and updating clients.
If you pay your remote team members per hour, you need to track how many hours each person works. The majority of people also need a certain level of discipline, especially when one works from home. There are screen-sharing tools that allow you to control another computer remotely, e.g., TeamViewer and Join.me.
For corporate communication purposes, it’s better to choose a messenger that supports video calls. For example, Onix prefers Slack and Skype. All employees are equipped with webcams, and meeting rooms are always video conference-ready.
Approve one tool and stick to it: the team needs to receive all information through one channel and to keep records.
To manage the code, we typically use Bitbucket, GitHub, and GitLab. Think about setting up an organizational commit log. Everything should have one “correct place” that everyone knows.
Slack, Sharepoint, Google Docs, or the paid Confluence can help with documenting your operations.
Test out each chosen tool and check whether it has a convenient dashboard, integrates with other services, is secure, and meets other requirements of your company and employees. Its integration into your workflow may include some instruction and training as well.
If your employees work in different time zones, allocate a synchronized time when all members of your distributed team can work together and hold virtual meetings. Create a meeting schedule and agenda and share them with everyone.
The remote development team may often need prompt answers to urgent questions. Try to plan your schedule to be able to respond during their working day. If your working hours do not overlap at all, either party may have to schedule video or phone calls outside of business hours.
Clarify your security expectations and establish procedures to maintain security standards. Set up 2-factor authentication systems, virtual private networks, and proper security hygiene for remote developers.
Publicize the approved workflow processes and project requirements document for your distributed team members to consult. Present them at a virtual meeting and answer the staff’s questions.
An internal blog may help synchronize everything. Onix has also built custom tools for its employees, such as dashboards and utilities to find information.
2. Conduct a proper onboarding procedure.
Onboarding is hugely important to your distributed team’s long-term success. Well-planned introduction and early interaction help remote workers integrate and feel like part of the project faster.
Learning more about your remote team’s culture, communication styles, and workflow in advance, you can improve your communication and productivity. Take your time to get to know your new team members. Be open about your project’s goals, give insight into your company’s mission, values, and project history, and tell explicitly what you’re expecting of them.
Introduce the new colleagues to the entire team and explain who is responsible for what. Provide guidance to help them understand and adopt your established workflows and patterns. It may be useful for them to work alongside an experienced team member for a while. Hold regular video catch-ups and encourage them to share concerns and questions.
3. Plan the communication and regularly interact with the remote teams.
The most common tips on effective communication with remote software developers are writing everything down, sharing everything, using modern tools, not relying on informal communication methods, and maximum transparency.
Your internal and remote teams will have to agree on the preferred mode of communication, tools, and format. Put up a simple set of rules and share them with all.
Daily short online meetings will help you organize your team’s workflow and day work and eliminate the time gap between the distributed team members. Internal communication via real-time chat should remain alive but not distracting.
All team members should also regularly report what they’re working on. They can do it through a Trello card, a daily or weekly email, or other means. They can also report during a weekly standup for the whole company. For teams of up to 20 people, the agenda may be as follows:
- CEO update (~5 minutes): Announcements, important news, an update on the key business metrics, or things that particularly stood out during the week. The CEO may also talk about the people that did a piece of work that deserves recognition.
- Team updates (~1 minute each): Every week, in a random order, everyone would say something about their work or something they learned.
- An opportunity for everyone to ask questions.
Be ready to offer feedback after every sprint and iteration. Try to avoid slang or idioms that leave space for misinterpretation.
It is a good practice, after making a decision, to share follow-up messages or emails with everybody in the team. It’s also useful to mark specific decisions about the tasks in the card descriptions or anywhere where the information can be available to all and trackable.
Encourage and facilitate communication among your distributed team members. For example, once a week, everyone may be paired up with a random colleague for a 30-minute call to discuss anything they like. This helps connect team members who might rarely (or never) talk to each other.
4. Motivate the team and nurture their creativity and productivity.
The health of your team determines the health of your startup. It is a bad idea to divide employees into the “core” and “remote” regarding responsibilities and trust. Your distributed team members should feel like valuable contributors from day one.
It’s recommended to avoid exercising intrusive control and micro-managing remote employees. Sometimes, issuing specific tasks is necessary, but the best software development is driven by individuals that are guided by the company’s values but are free to decide how to achieve the desired outcomes.
Remote software development, more than any other, calls for managers who intuitively understand their team, keep them interested and motivated, track their progress, and effectively resolve issues. You can nurture successful managers by providing appropriate training, detailed and honest feedback, and tools to enhance their work. It’s essential to make it clear what you expect from them and monitor their response to your feedback: good PMs will improve while bad PMs will blame the others.
Every expert developer can enrich your project with their ideas and recommendations. It’s essential to remain flexible and make the remote employees comfortable so that they remain creative and innovative for your project. They should understand that mistakes may happen, but it’s not a problem as long as they are not a pattern and the person learns from them.
Try to prevent your remote workers’ burnout, stress, and the feeling of isolation. Find opportunities to build relationships within your team, break the communication barriers, strengthen relationships at the personal level, and make remote teams a part of your corporate culture.
It is necessary to create opportunities for “direct” communication. For example, you may start an informal chat for the entire company to create a chill-out effect and a sense of connection through social interaction.
However, even the best video chat experiences can’t match face-to-face conversations, so distributed companies do hold in-person team meetups and all-company gatherings. Early-stage startups may hold more ad-hoc and frequent meetups. Growing companies are trying to get the whole company together quarterly.
Starting a new project is a good reason to have the team together for the kick-off, planning, design, and initial implementation. Celebrating the launch of a major project can boost their morale incredibly.
If possible, plan the time when your team members can play, unwind, and recharge together at least once a year. The events may range from flying the whole team away for retreats to a few days working together in one place. It’s all about getting everyone together to work, socialize, and get to know fellow team members across all departments and regions.
5. Measure success and adjust the remote work model as needed.
Not everything will go as planned, and problems may arise. Your distributed team will also have to adapt to the changing market conditions. That’s why Agile with its continuous iterative analysis, adjustments, and improvement is the optimal approach to remote software development.
You will quickly see whether a new developer fits in. If their delivery doesn’t meet your expectations, don’t hesitate to address this promptly. If your remote employees can’t do their job without you standing over their shoulder, you’ve hired the wrong people. Startups need results fast, so they’re quick to fire employees that fail or repeat the same mistakes.
The team’s results and employee happiness are tightly linked. It’s important to track metrics on both. It’s up to you how to measure success, e.g., monitoring customer satisfaction, number of projects completed, quality of work rated by peers, etc. Periodic surveys provide the easiest way to track the employees’ wellbeing. The insights will help you modify the strategy and management of your remote workers for the best results.
The benefits of remote software development teams for businesses include access to the best talent out there, work around the clock, quick project completion, and exemption from the bulk of administrative and project management tasks. Startups that outsource software development offshore can achieve more significant economies.
Whether you decide to run as a distributed team or entirely remotely, you will need proper tools and work processes in place. Remote and distributed companies also need to know the nuances of managing remote employees located in different time zones.
Having twenty years of experience in web and mobile app development for international clients, Onix provides excellent remote development solutions. We offer an Agile development process, quickly adjusting to shifting project goals, expert project management, and a plethora of highly-skilled and experienced developers that can build anything you need: eCommerce solutions, WordPress websites, custom software or Software as a Service, mobile applications, VR games, IoT apps, and more.
If you are looking for perfectly balanced affordability and capability, please don’t hesitate to get in touch with Onix.