The question of developing a software in-house or outsourcing it, has been asked for almost every company in the world that looks for high performance and no delays.
You will find out there many good experiences and many bad ones, the key is not the decision you make, but what you do after making it.
1. Keep your team focused on the important things
By outsourcing non-core functions, companies can take focus off IT by delegating ordinary and time consuming tasks to external agencies, and continue focusing on their core business processes.
2. Lower costs
Cost is not always the main reason to outsource, but it can certainly be a great factor.
Companies usually assign an internal team and a budget to finish a software development project within specs and on time, but in most of the cases they have to deal with a shortage of time and/or money.
When those same companies outsource their projects, they have but one flat fee to pay each month, avoiding hiring, salary and overhead costs and making the expenses control such as staffing, training, overtime, etc, a far simpler task while having a great opportunity to save money.
Setting up an in-house development team in USA can cost a lot of money. Outsourcing those projects will avoid a huge expenditure: if you have the same or a better productivity by getting the job done somewhere else, it doesn’t make any sense to pay more to develop it locally.
Just one more thought related to costs: the cheapest is usually the most expensive!
Hiring a company that has very low prices may imply that their staff doesn’t have enough experience and knowledge, ending up having a poor quality product, which means that you will need to spend more money to rebuild it.
3. Introduce new technology
Since new technology is released to the market on a regular basis, sometimes it is hard to keep your team up to speed.
You have a great software development team, but sometimes your needs can’t be satisfied with their experience and knowledge.
If you want to develop a software solution, let’s say an iPhone App, and your team doesn’t have the knowledge and skills to do it, outsourcing to a team that is already proficient in that technology could be the best solution.
At the same time, there are many tools and technologies that are available for free, but there are many others that require expensive license fees. By outsourcing, companies don’t need to worry about acquiring the right tools and technologies and pay their respective licensing costs for development.
4. Meet your deadline and budget
Software development companies have well defined processes and methodologies that enable them to plan the resource needs and adjust it throughout the project to keep it on time.
Also, software companies are better in estimating the effort required to complete each task, and therefore calculate the project cost.
5. Hire a team on “as needed basis”
Your need for software professionals (developers, designers, QA agents, UX experts, etc.) is not consistent throughout the life of the projects. Instead of hiring additional employees to meet the project requirements, it makes a lot more sense to scale the team through outsourcing by hiring a team of professionals as it is needed, in a short or long-term commitment.
Once you made the decision of outsourcing, you need to find the right company – that is a complete different post – and before start working with the one that best fits yours needs, consider the suggestions I wrote, being the CEO of Virtualmind, a nearshore development company:
1. Don’t define vague requirements
Defining the requirements in a clear and detailed manner is essential for a healthy relationship. Thinking “the outsourced team will understand what I want, it’s obvious” is the best way to start a relationship on the wrong foot.
2. Don’t treat the software provider as a provider.
They may become a key player for your business. Having a relationship that looks more like a partnership than a client-provider one, will improve communication, increase performance and make every step of the process easier.
3. Don’t throw your requirements and forget about the project
Client commitment and involvement is one of the keys to succeed. That’s why software companies use agile development methodologies, like scrum. The idea is to show to the client a new version of the product every 2 to 4 weeks, so they can review it and give a constructive feedback.
4. Resist the need of blaming the provider
The providers always want to solve your problems and work in a collaborative environment, but there is a tendency to instantly blame a provider when things don’t go as expected. Try not to fall under that and you will notice how developers are more attracted by the project and therefore increase the performance.
5. Don’t underestimate the communication
An effective communication guarantees 50% of project success.
The assigned team has to speak fluent English, share your time zone and understand your culture. But you will need to avoid certain situations:
- Don’t assume that you will solve everything only by sending emails and instant messages.
- Don’t assume that the provider understands the particular wording of your industry, at the very beginning they will ask you the questions they need. Try to answer them with patience.
- Don’t assign more than one contact (usually a project manager) per project. Using more than one communication line may lead to confusion and misinformation.
- Don’t hide useful information that can solve future issues. Be honest all time, even if you have to give bad news.
By having daily and fluid communication, you will be able to increase staff happiness, engage the team, improve product quality, minimize rework and reduce development time.
I hope this post helps you to improve the relationship with your outsourced teams.
Virtualmind, as a software company has experienced very different situations with many different clients, but always the respect for each other, having daily communications and defining clear goals were the pillars for long-term and successful “partnerships”.