Developing a product is a pretty damn hard thing to do.
You not only have to create something people want to buy, but you also need to avoid technological dead ends and keep your eyes on the recent feature your users requested. And I haven’t talked about deadlines...
If you work for a startup, the whole thing just gets worse.
You are probably often faced with a fluctuating workload that sometimes demands more people than are currently available.
Apart from working more and hiring software developers, there is another way to overcome these challenges. In these pressing situations, outsourcing software development partly or fully could make a real difference.
I know what you think...
I’m sure you’ve already heard some horror stories about offshore software development. It has a really bad reputation thanks to fraud and fake companies that take the money without delivering what they promised.
But here’s the kicker:
We’re bringing a fresh, transparent approach to software outsourcing.
With this guide, you will see the whole process of offshore software development and learn how to use best practices to filter out frauds, reduce potential risks and eventually make it work for you.
If you’re looking for an offshore software development team, this guide is for you.
Use these links to jump to a specific part of this post:
Offshore software development or offshore software engineering is outsourcing work to a third-party software developer. Software related services can vary and can be offered in a wide range; these could include web development, web application development, mobile app development and many other related services. There is really a hell of a lot of software development related things.
Your partner company is typically far away from your country and probably has a different business culture, which is usually the main cause of discomfort and missed expectations. One of the main reasons to outsource software development to an offshore partner is to leverage cost advantages.
A software project can be outsourced to an individual or a company. In the first case you hire a freelancer to do the job, in the second you hire a whole team for a project. These projects are typically much bigger and demand more diverse expertise.
In this guide we're focusing on outsourcing software project to a software development company.
Let’s dig deeper and see the pros and cons to offshore software development.
Well, it’s not just cost-saving...
Even with remarkable advantages, there are some disadvantages that definitely can hold us back from working with an offshore software developer or simply keep us up at nights.
You might be wondering: After these, who the hell wants to work with an offshore software development company?
The thing is that 80% of these disadvantages and risks mentioned above can be mitigated or eliminated. Really!
All you need to do is to keep reading.
Unfortunately, there is no guarantee that your software developer partner will be a good fit but I’m sure by following these tips you can definitely reduce the risks involved in the selection process.
These can be addressed in the following stages:
Before you start searching for the perfect software developer agency, you need to clarify first what you exactly need. It seems obvious but trust me, surprising things can happen out there.
Having a vague idea is not enough. Having an idea with few sketches is better but still doesn’t cut it. If you’re about to find an offshore or nearshore software developer, you need to clarify the following things first:
1. Have a clear understanding on what product/features your target customers wants (for your own sake). Get out of the building and talk with your customers.
2. Make sure that the form of product you want to build is met with the regulations (if applicable). It’s very painful when regulation issues are uncovered during the project.
3. A product roadmap with milestones needs to articulate your project’s goals and what milestones you need to reach. This creates a priority list.
4. Put together user stories. These clarify who will use your product and what they will be able to do with your app. Here is a guide how to do it.
5. Put together the wireframes, sketches or mockups of your project. Here is an easy to use iPhone app mockup creator and one for other applications.
6. What do you need to make this project happen? Capacity? Skills? Identify gaps and technologies you need.
7. Select one person who is allowed to make product-related decisions and can be reached by the software agency (it speeds up communication and decision making).
When you’ve found some potential partners to work with, the first thing you should do is to check out their online presence. Here is where you should focus:
References: Does the company has any references showing that they’re actually doing stuff?Obviously, you don’t have to be a rocket scientist to put fake projects on a website, so here are two things you can do:
Testimonials: Testimonials from clients definitely build trust. In this case, you can also take it one step further by getting in touch with the person who was quoted.
Relevant skillset: “I’m a software developer with 2+ years of experience in iOS application development.” Even if I have nothing to do with software development, it’s pretty easy to write anything and publish on a website. So, what can you do?
Here, I prepared a free excel template for you to collect every necessary information and easily compare the potential companies.
It’s time to get in touch with the selected companies who survived the first qualification round. I recommend you pay attention to the following things:
Responsiveness: How fast did they get back to you after your first contact? It can be a weak indicator of workload of the company.
First impression: Usually at this step, you need to clarify the most crucial details of your project and define its focus. See how deeply they want to understand your concept by paying attention to what questions they ask.
Technologies/tools they use: Always ask what technologies they use. Not just software development-related technologies and tools matter, but also tools used for communication and project management. This gives you a better understanding of their workflow and practices.
Time zone challenge: In many cases, your software partner is based far away from your country. Make sure to clarify how you will handle communication and when you have dedicated times for regular meetings and collaboration.
Idea protection: You’re the person who knows your market the best so you can execute faster and better than anyone else.
Chances are your software development agency doesn’t know your market and doesn’t have the necessary resources to make it work. Honestly, until it’s just an idea, your project is only 1% ready and there are the other 99% that need to be done.
Even if they won’t steal your idea, I recommend you make a nondisclosure agreement (NDA) with your software development partner (this is what we do with our clients at Coding Sans.
Test projects: Fast results build trust. Do they offer a sample project? With a test project, you can see exactly how they work and how the communication and coordination works with the other team. You can also check their code and see if the quality meets your expectations.
I prepared a free excel template for you to collect every necessary information and easily compare the potential companies.
Working with a geographically distributed team adds a small complexity to the cooperation, making it a bit harder to coordinate work and communicate issues during the project.
Time zone syncing demands time flexibility from every stakeholder on the project.
Find appointments when both your team and your partner are available. Send out calendar invitations to project members so every call and meeting will be pre-booked in their calendar.
Tracking progress: Regular meetings and a commonly used messaging platform always give a picture about the project’s progress.
But the thing is, it’s pretty hard to keep everything in mind.
You will remember only a fraction of information your remote developers mentioned at the daily meetings. It’s good to have a tool to track how tasks are actually completed and what the ones that need to be finished are.
I recommend you add Trello or Milanote to your toolbox. These are awesome tools that make task management easy.
There are also other project management tools such as DaPulse, which helps you organize your workflow and keeps your team updated about the project. You can create a visual roadmap, set goals, assign tasks, create boards and share files. And it’s integrated with Google Drive and Dropbox.
We at Coding Sans use GitHub not only to manage our software development but also as a tool to be fully transparent with our clients, providing them the opportunity to see exactly how our developers work on the project. We know that ensuring code quality is crucial so we put together a guide that helps you get high-quality code from your software developer. Click here for the guide.We love using Slack, this is the central of our team's communication. The best thing is that Slack can be integrated with other apps such as GitHub, Google Drive and many more. Here you can find the best Slack integrations recommended for software teams.
Handling documents: For sharing, editing and accessing documents, we like to use Google Drive. Shared spreadsheets are good for analysis and documents are good for sharing contracts and reports. These files can be accessed by everyone involved on the project.
Easily handle administration: Working with an offshore software developer comes with some administration (well, almost everything comes with administration) and tools such as Docusign and Hellosign provide paper-free solutions to sign any documents. It simply saves you from the printing, scanning and uploading soul crushing activity.
So, this is a system that can be used to manage outsourced software projects; this is the backbone of mutual trust and a successful cooperation that leads to a transparent cooperation between your team and your outsourcing partner.
Check out this software outsourcing case study and learn how this company successfully outsourced software development.
Even if the code has been tested, there can be minor bugs that weren’t uncovered during the tests. That’s absolutely normal and your outsourcing partner has to provide support after the project ended. We usually offer 6 months of live support so every issue within the scope of the initial project can be resolved.
We recommend you negotiate at least 2-3 months of support from your software developer.
FINIS is a swimming brand, selling swimming goods and products to anybody who is around or in the water participating in swimming.
Their specific market is providing technical training products to take anyone’s swimming to the next level.
FINIS is well known around the world as the leader in this category. As they grow towards the future, they now include swimwear, goggles and apparels as a larger part of their products.
Besides their products they created a mobile application that increases workout quality by providing data and insights on the health benefits of swimming.
As a small team, what did they do to create a mobile app that helps swimmers further improve their performance?
Enter CJ Fiala, Marketing Lead at FINIS.
Due to our limited work bandwidth (only 70 employees in the company), it would have required much extra work for the web development team to create a mobile application from scratch. We known a lot of companies that had success with similar outsourcing projects, so we outsourced the app development and decided against expanding our web development team.
There were three important factors we considered:
Any company that develops a mobile app encounters challenges during the project.
We had to work hard on figuring out the functionality of the app. Also, implementing graphic design was tricky, but for the most part, it went pretty seamlessly.
In collaboration with the software development company, we were in the same time zone, which made it easier to communicate. Any scenario where you work with remote workers, you should understand it will not be as simple as having someone in house. During the project, we used TeamWork to communicate and manage the project.
We definitely encountered some bumps, but it requires patience and a level of trust.
We had a heavy round of beta testing to make sure everything was working correctly.
The ability to stay on time and schedule was huge. We were developing our product on site while they were developing the app. So, making sure these projects work together was crucial and demanded a higher level of coordination.
As a small team, things come up and you must make changes, and the ability to adapt to those is very important.
Good and honest communication: constantly talking and responding to us when we get in touch with them. If there was an issue, they honestly communicated it to us.
Consistently sharing updates with the team about the current state of the project. It was a big plus seeing the inside process to understand the quality of their work.
Do your research and talk to people around you who have done software outsourcing before.
When you talk with an outsourcing company, always communicate openly and honestly.
Communicate all needs at the beginning of the process, since new needs arising during the project could affect the price and schedule.
Understand that it’s an open, working together collaboration, not just a one-sided thing.
Outsourcing software development isn’t as scary as seems if you do it right.
You can significantly reduce risks and make it work for you if you carefully define your project, research potential companies and use best practices to keep the work transparent, communication clear and the project coordinated.
With this guide, we wanted to shed light on the other side of outsourced software development that actually works.
About the author:
Tamas Torok is a marketer, helping tech companies to grow. He currently leads the marketing operations at Coding Sans and focuses on crafting high-quality, research-based content for engineering leaders. He started publishing the State of Software Development report and supports the growth of the Level-up Engineering podcast, dedicated to engineering leaders.