This story was originally published in my LinkedIn blog.
A lot has been told and written about software development outsourcing experiences. The worst I have heard are plain and simple horror stories, at least from the client perspective. Prolonged projects, exceeding budget, misplaced functionality and more. It's not all bad, it can even be quite good.
When you hear some more details about each case, things start to fall into place and I recognize a recurring theme in most of them. Obviously it greatly depends on both sides and the nature of the project / engagement.
Why to outsource and what to begin with?
The following slides outline the different pros and cons.
While this is only a partial list, it touches the most crucial points usually raised when talking about this issue. I would like to address 2 specific points mentioned in the slides.
- Quality - people associate 'outsource' with problematic quality and this is obviously wrong. It depends on the choices you made regarding where to set up your offshore operation, how to manage the recruitment process, or how to manage the team on a daily basis.
- IP - I get it, you'd like to protect your IP (if you have one). Apple does their mass production in China, so everything is doable. Especially relevant for startups, the initial idea and product revolves around an implementation of a registered IP. Usually this is only a small piece of the puzzle. Keep it in house !! Take the rest outside.
If you made it this far, you're at least considering the option to outsource, which is good.
There are two distinct patterns for outsourcing a project:
- Fixed Price - where client is typically asking for a price quote for a project. Obviously, this type of engagement is only good for cases where you have a very clear functionality scope and description of the project. Things will start to go wrong in cases where it turns out that you thought you know what you want, and even wrote it down, but as time goes by you find out this is not the case and there's a lot more you haven't thought of initially. Usually I'd recommend this type of engagement for short lived and small projects that are easily manageable, and even if deadline is delayed, it's still reasonable due to the scale of the project.
- Time & Material - where client pays for every resource spent on the project. In this case, the client is responsible for meeting the deadlines, for quality assurance and for day to day management of the personnel working on the project. You have no one to blame other than yourself. I'd recommend this type of engagement for longer projects, but that means there needs to be someone fully dedicated to this task, someone with the proper expertise.
Which type is suited to your specific case?
We are all unique and there's no one size fits all type of solution. Nevertheless, there are still a lot we can learn from other experiences and decide what fits us. Some of the things that might influence the decision aside from your own preferences (in no specific order or priority) :
- Are you an early stage startup or an established one?
- Will you have a dedicated and knowledgeable person to manage the team?
- Do you already have an in house team or looking to set up a team from scratch?
In general I would say that having a dedicated person to manage the offshore team is a must. Otherwise, be ready for more than bumpers along the way which leads to who knows where. At the end of it is the product you initially envisioned, or something completely different.
Another rule of thumb I usually tend to talk about is having a proper balance of in-house vs offshore team (remember that IP issue discussed above?). It might not fit everyone and might be time dependent, but surely I'd recommend this as a long term vision for team building.
Choosing the location and the right IT outsourcing partner is one the most critical decisions you need to make. So many options and everyone has their own good and bad experiences. Be willing to devote as much as needed to this process, it will be worth it!
Also read how FIDO uses offshore team in Ukraine to replace legacy software and build a Big Data solution.