We all have heard horror stories about software outsourcing involving stealing ideas, delivering crappy quality, misdelivering product and broken dreams.
Some horror stories usually distort the picture, but indeed, there is a level of truth to them.
The good thing is most of these horror stories could have been avoided by careful outsourcing partner selection, better work and collaboration coordination.
But even if everything seems to be working fine, sometimes shit just hits the fan and you can’t do anything about it, even with the most careful risk mitigation and selection process.
Interestingly, 56% of startups have already outsourced software development to a freelance or software development company.
From these, 48% were satisfied with the end results and 24% were dissatisfied.
These risks can be mitigated or handled in the following 3 stages:
With this blog post we wanted to provide you some actionable tips on how to minimize risks in software outsourcing.
Jump right to the stages:
Before you start searching for a software outsourcing partner, you have to clarify what you want to actually outsource.
If that’s clear, let’s dig deeper.
Think about your project and make sure that the objectives and goals are clear and understood.
You have to define it clearly in order to avoid messing up your project. Changing scope on the go usually makes it much harder to successfully finish the project.
A scope change can cause project delays and have a bad impact on quality (when have to deliver fast within a limited time).
Once you define what you want, the next step is to start looking for potential partners. There are several risk factors during the research process that should be mitigated.
This research means that you should check out their online presence. Here are the most crucial things you should focus on:
Relevant skillset: Obviously, there should be a service-demand fit between you and your potential software partner. Here are the things you should check out:
- See if the company has a blog where they write about coding
- You can also ask their former clients with similar projects about their expertise
- Check team members and their LinkedIn profile to see their experience and endorsed skills
Technologies/tools they use: Always ask/research 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.
References: Does the company have any references showing that they’re 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:
- Search for case studies showing more details about the projects and technologies they are familiar with.
- Get in touch with the companies they have worked with. This is pretty sneaky but they can give you first-hand feedback on how your potential partner works and handles product development related issues. Make sure to ask them about their experience, what went wrong and what went well during the project.
Testimonials: Testimonials from clients build trust. You can also take it one step further by getting in touch with the person who was quoted. This way, they can provide valuable information than just a few-sentence testimonial.
Here is a free Excel template to easily compare the alternatives.
Time zone difference: In many cases, your software partner is based far away from your country (that’s called offshore). Working with a geographically distributed team adds a small complexity to the operation, making it a bit harder to coordinate work and communicate issues during the project.
Make sure to clarify how you will handle communication and when you have dedicated times for regular meetings and collaboration. Time-zone difference requires flexibility from your outsourcing partner and from your own team as well.
Idea protection (NDA): Chances are your software development agency doesn’t know your market and doesn’t have the necessary resources to make it work. You know your market much better than your outsourcing partner.
Honestly, until it’s just an idea, your project is only 1% ready and there is the other 99% that needs to be done.
Just to put a legal protection behind your project, I recommend you make a nondisclosure agreement (NDA) with your software development partner (this is what we do with our clients at Coding Sans), here is a template you can use.
Signing a nondisclosure agreement doesn’t require huge effort from your outsourcing partner. If they refuse to sign one, it’s a potential red flag. Here you can download a free template.
Test projects: Fast results build trust. Do they offer a sample project? If they do, that’s a big, big plus.
With a test project, you can see exactly how your outsourcing partner works and how the communication and coordination go. This is the best way to get the essence of mutual work.
We also offer a free sprint for our clients, which means that if they’re not satisfied with our results, then the sprint is free.
Code guarantee: Does the company offer guarantee on their code ship? If yes, how long is that period of live support?
Even if you selected a really promising software outsourcing company, the hardest part comes when you start working on the project. It requires a common framework that keeps the project together and ensures an agile iteration between the remote team and your team.
This can be separated into 3 fields:
- Project tracking (tracking progress, scheduling, doing the right thing)
Handle work-related risks
The biggest risk is that the outsourcing team doesn’t deliver the product they promised or they deliver it but in a horrible quality.
Since none of us like to look at our product as a black box, and no one wants to be surprised when the team delivers your software, the solution is to make the whole process fully transparent.
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.
Actually, 91% of startups use Git for version control.
This kind of openness makes it possible to get early feedback and to correct small mistakes that could have grown into much bigger ones without early feedback.
Before you start working together, you should mutually agree on what technologies you use to ensure code quality.
Communicate, communicate, communicate.
Well, we know that. But how exactly?
Honestly, small things make a big difference.
First, there needs to be a communication platform available for every stakeholder of the project. This ensures that every communication takes place in one channel and not fragmented into other ones.
We love using Slack; it is central to our team's communication. The best thing is that Slack can be integrated with other apps such as GitHub and Google Drive. In this post, you can find the coolest Slack integrations recommended for software teams.
Second, you need to set up regular meetings between you and the offshore team.
These meetings shouldn’t last long. They have to be short and to the point.
They are called daily stand-up (scrum) meetings.
During these meetings, every project member has to answer the following 3 quick questions:
- What did you do yesterday?
- What are you doing today?
- Are there any obstacles that prevent you from achieving your daily goal?
These daily meetings are pretty good for 3 reasons:
- They provide an opportunity for daily feedback
- They keep the project on track and focused
- They make sure every stakeholder of the project is on the same side
Apart from frequent communication and iterations on the work, it’s necessary to somehow track the project’s progress from a higher point of view.
A project’s progress should be tracked with project management tools. It’s good to have a tool to track how tasks are completed and which ones need to be finished.
JIRA is the most widely used tool for project management, but you can also use Trello and many other tools to track your project.
There is no magic wand to eliminate every potential risk when you outsource software development, but there are tools and methods that can significantly decrease your risks.
In this post, we wanted to give some tips on how to mitigate these risks and to radically increase your chances of selecting the right outsourcing partner who you can work with and who will deliver your project in the expected quality.