Because you are either unable to recruit the right people in your area or just eager to beat the skyrocketing salaries of software engineers, you decide to go offshore. Yet, building and managing a remote team could be a real hurdle even for an experienced manager. That’s why we would like to share with you some useful insights that we have gained on this subject. We hope it will save your time, nerves and, last but not least, your hard-earned cash.
This is the first article in our three-part series titled, 101 Outsourcing Guide For Startups.
To work with a company or to recruit a freelancer, that is the question?
Software development is quickly becoming a commodity nowadays and as with every commoditized market you’ve got options. From large international enterprises to individual freelancers, software offshoring comes in all shapes and sizes.
First you have to decide whether you want an out-of-the-box solution i.e. a full service software development company, or if you prefer a DIY approach, such as building your workforce from individual freelancers. Let us compare the advantages and disadvantages of each option.
1. Team building and management
Building even a simple product requires a wide range of different skillsets. Even if you have found a very talented developer, this still might not be enough. You will probably also need designers to handle the UI, testers to test each aspect of your product, and last but not the least, a project manager to organize the workflow and to oversee and manage the progress. Finding the right people individually will not be a walk in the park and will take time, money and a lot of effort. However, the real challenge will be figuring out how to get them to work together as a coherent and effective team. When you work with a company you can expect to get an established team of professionals who have been working together under the same roof for months or even years. The already established team chemistry and their communication capabilities alone can make or break your project. This will certainly have a huge impact on delivery timeframes.
2. Control and predictability (or lack of thereof)
There are many factors that can affect the progress of your project. Your team members can get sick, lose internet access for days, break their computers or come across any unfortunate and unpredictable accident causing you to lose weeks worth of work on. That’s life and there’s little you can do about it in most cases, apart from frequent backups and other good development practices that we will discuss later in this article.
Let us however present the following scenario: you have managed to find few freelance developers and have spent a lot of time and effort establishing a good working process. Everything seems to be running smoothly, but three weeks later, just before you have to show your MVP to your investor, one of the developers vanishes, perhaps into thin air. Who knows, but all you can tell is that their Skype is offline and nobody knows where he or she is. Out of touch and out of reach. Let me remind you that it is not just your developer that vanished, but your source code, advance payment and your likely chances for securing an investment. Sounds like a horror story? Well it is, it is a disaster. This is a very real scenario that happens much more frequently than one would expect.
When working with a company, such a situation is out of the question. The employee that vanished into thin air can be replaced by one with similar experience and skills, your code is safe and secure in the company’s source control system and most of the risks are predictable and avoidable due to the established processes and best practices.
3. Quality and deadlines
There are special sentinels of quality and deadlines – the Project Managers. Even the most self-organized developer will work better when supervised. Project managers ensure that you get a team which is well-managed, easy to monitor, and that you have full control over the development process. To deliver a high quality product, software development companies also provide you with QA engineers who collaborate closely with the development team.
Hourly rates of freelancers are lower than those of software development companies. However, let’s take a closer look at what is included into the company’s rates:
- Expenditures for hiring: recruiter’s salary, adaptation trainings, time for selecting the qualified candidates;
- Administrative overheads: up-to-date hardware and software, working place, corporate training, teambuilding, sick leaves, etc.;
- Management & expertise: company’s best practices, perfect time management, previous experience with similar projects, established working process, unlimited possibility for consultation.
When considering everything previously mentioned, there is simply no comparison when trying to evaluate the advantages and disadvantages of a lone developer working from their home, and an established software development company. The cost-effectiveness of the work and the quality of the end product are simply on two different levels. Would you rather throw the ball around with a little league team or bat in the big leagues? But what is even more important is that software development companies eliminate the most fatal risks of working with freelancers: sudden employee disappearances, loss of money, source code and intellectual property. These can irrevocably ruin your project. So the question is, are you ready to lose hundreds of thousands of dollars while trying to save hundreds of dollars? Software development companies can offer you a peace of mind and assure the quality of the end product. Freelancers, on the other hand, can bring more risks and uncertainty to the table. Whether you are ready to take on those risks and save some cash or spend a little more and eliminate them is up to you. The ball is in your court.
Does size matter?
When you have decided to cooperate with a software development company, there still remains a question about the type of the company that will fit your needs. You can choose from a large offshore development enterprise, a mid-size company or small teams.
Let us take a closer look at each option separately.
So what do we have here? On one hand, you can surely choose to do it the hard way and try to handle a small team that usually has a poorly organized working process and limited access to technologies and skill sets. You can also go with enterprises where you don’t need any management approach at all, since you can’t influence the one that these companies use anyway.
On the other hand, if you work with mid-size companies, you can either rely on their established management process or make your remote team work with the process and quality standards of your company. Next, we will review the on-boarding, communication and performance management techniques you should consider when choosing to keep the working process organized, just as it is in your own company.
After choosing the company, you have to ensure that newcomers will become full-fledged members of your team. The following remote team building activities will help you integrate your remote workers into your team seamlessly:
- Make them feel like a part of your company. Add your remote workers to a corporate e-mail list. Try to set up meetings in real life when possible or even invite them to work for a couple of weeks in your office.
- Set the working hours. Establish a working schedule that is convenient for everybody within their own time zones. They will appreciate your efforts to conform to them.
- Share knowledge. Make sure your remote employees attend the same online classes and professional webinars as your onsite developers do.
- Virtual coffee break. Schedule a 15-min break for interpersonal communication between your on-site and remote team members. A united team is more productive.
- Integrate your remote members with on-site employees. Create a Skype group chat for your on-site and remote developers, ensure they have all the necessary contacts and that they know how to get in touch with one another just in case there are any urgent situations.
- Give them access to everything they need. Provide your remote members with access to bug-trackers, databases, GitHub accounts, Google Drive and Dropbox folders used on your project.
Build strong communication
Often due to timezone differences, or simply lacking the one-on-one interactions and kitchen small talks, many things are lost without strong communication. To avoid this, consider these 2 simple rules:
- Fix time for daily meetings. Learn from Agile methodology – begin the day with a brief meeting to clarify what happens, answer questions so that everyone can stay on the same wavelength. Go ‘all remote’ for meetings. That combines your remote team and the on-site developers.
- Manage the time difference. Define the hours that your employees will be available to communicate. For instance, you can try World Clock Meeting Planner. It allows you to find the intercrossing of time zones, so you can schedule a meeting that is convenient for everybody.
There are lots of tools that can be used for communication. Below you will find the most common ones.
- Email – eternal classics. Using project management systems can save you a lot of space in your inbox, but email still remains irreplaceable.
- Chat – Skype or Slack. They are like a double-edged sword. Perfect for instant messaging and creating a “team” environment. Messengers can devour time for just chatting and any useful information or links become quickly buried in the messenger’s history.
- A diagram is worth a thousand words, isn’t it? The tools for sharing what’s on your screen are extremely useful. A remote control over another computer could also save time for explaining things. These tools are TeamViewer, join.me and not to mention Skype’s screen sharing.
How to manage a team of software developers?
Track the attendance and active hours to have a complete understanding of what’s going on during the project. Very few developers are so self-motivated that they don’t need supervision, and 90% do, so give them a little bit of discipline. You can use Timedoctor to see whether or not your remote worker codes or chats on Facebook.
Task-tracking tools are great for managing the development process when working with a remote team, so let us give you an overview of some of the most popular ones:
- Youtrack (Eastern Peak’s favorite!), a good alternative to such bestsellers like JIRA and Redmine. Created by software developers for software developers and is easily integrated with Bitbucket or GitLab, it has 17 types or reports and what’s more, you can use it without a mouse. Hotkeys, hotkeys everywhere!
- Trello is an easy and convenient system of boards that lets you organize tasks in a few minutes without any special efforts. Free, intuitive and visually attractive. A must have.
- Atlassian JIRA, the classics among bug tracking and project management systems. Stable and sustainable, though it may require customization for your specific needs. Best suited for big companies with established processes.
- Redmine, the golden mean. Well-balanced and has enough plugins to tweak it. Just keep in mind that you must install Ruby on Rails in order to set up Redmine. If this is something that doesn’t bother you, then Redmine is a good choice to start from.
We hope some of these tips will facilitate your cooperation with remote members and make it even more fruitful. But if you have any questions, or are looking for some assistance, then feel free to get in touch with us. Eastern Peak is at your service.