For a long time, software outsourcing has been around as the most crucial business practice to undertake software projects efficiently and affordably overseas. It gains popularity by a wide range of benefits, including encouraging a business to focus on core competencies, improving business efficiency, reducing time to market, increasing the ability to scale, and significantly saving cost. Many tech giant companies like Whatsapp, Slack, Github, Upwork, Transfer Wise, to name a few, set the inspiring examples for their phenomenal successes based on outsourcing development in their initial days.
However, we can not ignore that the outsourcing process is hugely complex and involves many moving parts. It means that it heavily depends on the right people with the right technologies and the right fit between different business cultures, at a reasonable cost. Obviously, we come to outsourcing for cost reduction, but this should not merely be a matter of the lowest price. With the wrong choice of outsourcing suppliers, you could be in trouble with implementation issues, supplier transitions, and eventually, the failure in business objectives.
The risk of software outsourcing is real and potential. Fortunately, it often comes from inadequate knowledge and research into the outsourcing process. So in this blog, we will move into line with the whole software outsourcing lifecycle to improve your probability of success and put you on the right path from the first steps, especially in offshore software outsourcing. Later on, with your ongoing practice, you could confidently move from tactical to strategic offshore outsourcing to leverage the prospective global talent access with the most cost-effective and time-efficient manners.
Before moving to the whole lifecycle of an outsourcing process, it's worth quickly briefing the foundation of offshore software outsourcing if it is your first time.
Why offshore software outsourcing?
More and more emerging countries become promising destinations. We must name a few like Vietnam, Malaysia, Indonesia, Philippines… besides the famous options like India, China. Engineers in these countries could bring their high level of programming expertise to the table with the cost reduction could be up to 80%. You will get no hassle of recruiting and training, no cost of infrastructure, and overhead expenses. Everything is controlled from the contract phase, including project specifications, conditions, deliverables, and the cost.
There is always more to learn and new developments in the offshore software outsourcing industry. And it needs you to equip yourself with knowledge and skills to manage this implementation and relationship.
What to outsource?
It's the case when you have a demand for custom software or applications for the sake of internal usage or commercial purpose that your company does not have the capacity and resources to get done.
When to outsource to offshore countries?
- Limited budget: One of the main reasons for a business to come to outsource is that they can not afford to set up their development team in house or even outsourcing to other providers in their countries. It happens more often in developed countries where developers' salaries are not a fraction of the cost. At this time, you could tap into the global talent pool to kick your project off cost-effectively.
- Limited internal technical resources: When your development team in-house already works at their full capacity, and you still have an entire backlog of less-important tasks that need to get done. It's where you can keep your high-profile jobs for your core team and outsource the other ones for the offshore team to take advantage of the round-the-clock strategy.
- Programming is not your expertise: It's often the issue of non-tech startups, newly established, and micro-small businesses. Hiring and running an in-house development team is a risky decision with high operating costs. Now, you need a software development consulting firm to utilize their expertise for product development, and put you in the focus of your core business tasks like penetrate markets, monetize your products or services.
When software outsourcing puts you in a risky position?
Despite the enormous benefits of outsourcing like I mentioned above, you need to consider several cases below that may put you at critical risks if you hire untrustworthy foreign software providers:
- When your intellectual property is the most critical asset of your business, you may be in a risky position if you collaborate with an unethical software team.
- Most great development vendors focus on providing good code to clients and fall short when you need them to do research. So do not outsource tasks that need comprehensive analysis and intuitive business sense to make the decision.
These cases still work if you meet ideal software providers that share the same values and ownerships. So it's vital to select the right vendor from the early days.
Outsourcing relationships should be a strategic and long-term partnership rather than a temporary solution that simply delegates duties to a third party. The expectation of an ideal partnership could be:
- High performance in quality, timeline, and budget.
- A healthy relationship with high compatibility in communication and business culture.
- Long-term collaboration for maintenance and scale-up.
So how do you turn all these objectives into actions? Let's go over the whole process of outsourcing below.
Set up the outsourcing strategy and holistic plan
According to SourceSeek's 2017 Global Software Services Report, 12% of outsourcing failures come from a lack of unclear goals and objectives.
First, to navigate the right direction and the right mindset for any related parties, start with your organization's demand. You should precisely identify where you are, what you want to create, what skillset you are looking for, the internal gap you want to fill in, and how much your organization is ready for outsourcing. From that point, set clear objectives and expectations for your short term and long-term plan of outsourcing.
Second, depending on the project requirements, supervision level, process workflow, privacy degree, quality standards, prior outsourcing experience, and product vision, you need to choose a proper outsourcing engagement model that leverages different engagement and innovation levels for different phases.
Six different types of collaboration frameworks facilitate tactical or strategic engagements:
Tactical Engagement Models
- Staff augmentation: This model is the optimal solution for extending your existing in-house team with outsourcing developers in record time. It gives you full control of your production plan and moves in line with deliverable plans. One more thing, it produces fewer potential risks such as privacy. In contrast, it needs your high involvement in project management and creates a low level of innovation and vendor sense of ownership.
- Dedicated team: This model is a group of hand-picked developers on-demand for your project. It also allows you to thoroughly control the production plan, but you don't have to worry about people management and process quality. It maintains a high degree of control and fosters a higher level of software outsourcing vendors' responsibility.
- Project-based model: In this model, the outsourcing vendor will help you manage the whole software development life cycle and suggest proper technical solutions. All you have to concern about is keeping track of the end delivery and focusing on your core competencies. It provides the outsourcing vendor more space and flexibility to plan and execute, which allows you to leverage their technical and domain expertise while making the most of their innovation and contribution. This model works well when your project requirements are not likely to change during the development process.
Strategic Engagement Models
- Offshore Development Center: ODC is an extension of a dedicated team when the business involves different projects and activities like product development, legacy modernization, and maintenance, testing services... After a happy collaboration through several small projects, the tactical outsourcing relationship could turn into a strategic partnership. Clients manage project planning, and outsourcing vendors manage the development center staff.
- Product Development Service 2.0: This model is the most innovative engagement model where the vendor holds the responsibility for designing and co-creating and releasing products. From then, they continue product optimization and sustainability. This way, you could leverage the maximum capacity from outsourcing vendors. And of course, this model requires a high maturity level of vendor expertise and the maturity of the mutual relationship.
- Strategic Consultancy: This value-based engagement model sets the outsourcing vendor as the strategic partner to support your digital transformation journey. It often includes all aspects of people, process, and technology with a strong influence on client decision making.
The six kinds of engagement models above provide you a picture of setting up the relationship with offshore software providers. Based on your project characteristics at each phase and the relationship maturity level, you could choose the suitable one and gradually move from tactical to strategic models.
Select outsourcing destinations
The next step is determining where to outsource. Distances will not be an issue because we currently have different communication means like video conference and messaging tools, email, project management tools, document sharing tools, to name a few, to connect seamlessly. But various destinations will result in different experiences in terms of the rate, time zone overlap, English fluency, and cultural differences.
According to Accelerance, working with offshore vendors can save you up to 75% of your overall development cost.
Finding the right balance between the rate, time zone overlap, and your readiness to tap global talents with your budget to choose the country you want to outsource. There are always good companies within even moderate outsourcing countries regarding the English fluency and culture gap, and we could identify and resolve these concerns when screening outsourcing partners.
Next, narrow down your selection from countries to trustworthy partners in that country.
Identify proficient and compatible outsourcing partners
This step could be one of the most critical parts of the outsourcing cycle to ensure you choose the right partner and afford less for a long learning curve.
Typically, you may have a long list of potential partners via personal reference, internet search, third-party consultation. Next, conducting a comprehensive screening process on your own to identify which vendor you want to work with and overcome the temptation of master sales.
Below is our checklist that helps you cover several critical aspects of an outsourcing partner judgment.
- Company size and the established year: Companies with large team size and are operating for at least five years on the market could prove their stability, credibility, and resilience in front of economic fluctuations or crises.
- Project scope: Each company specializes in several project scopes. Choosing the one with their scope specialization will facilitate their best works and their best quotations.
- Technical expertise and qualifications: The tech stack and qualifications matching with your software demand bring you the next steps. Discover how deep, how well, how long have they been in those technologies to make sure your partner is the specialist of their areas. Some clients would love working with outsourcing partners with several technologies in their profile to approach the solutions from different angles effectively.
- Industry and domain experience: Notably, the outsourcing partners with your domain and industry experience have a short learning curve and promise to provide add-on values to your software products.
- Process and methodology: The well-defined software development processes, methodologies, and coding standards expose their partner's professional level. Clarify the illusion of the industry glossaries. For example, if your partner talks about Agile, DevOps, clean code. Ask for what it means in their company?
- Communication skills: Low English proficiency could be one of the critical boundaries that outsourcing to offshore countries fail, so make sure your partner could clearly understand the project requirements and have a proper conversational level. Besides, looking for their transparency, openness, and directivity in their communication style. The tools for communication and project management would help a lot.
- Western client portfolios: Check out their client profiles to see whether they have experience working with Western clients or, ideally, previous clients from your country. When examining your partner's portfolio, you should look for indicators of consistent, high-quality performance over time.
- Client references: Check their references from third parties like Clutch or get their client contact information to double-check just in case.
- Time zone flexibility: Make sure your partner could handle the timezone overlap or set up the meeting within your working hours.
- Experienced resources: Ideal teams are a mix of senior, mid-level, and junior engineers. A team with all juniors will not be productive and negatively impact the bottom line quality. In contrast, a team with all seniors and rockstars will be very costly and hide potential teamwork issues.
- Recruitment process and retention strategy: Let dive a little bit deeper into how they recruit, interview, and retain their talents. A consistent, dedicated team will maintain your consistent deliverables without wasting double efforts on training and transitioning.
- Company culture and national culture: The culture fit should happen at both company and nation levels. It could be the catalyst to help communication and collaboration smoothly. The way your partner operates their daily basic defines their development culture and how well they fit yours. And a healthy environment with excellent values could expose their level of credibility and human retention. At the country level, you must learn the cultural signals that describe how they think and behave.
- Rates for different levels and positions: Each region/country has each own range of rates, so you could easily find any abnormally higher or lower pricing to make the decision. Again, don't just look for the lowest rates, but consider the rate together with other factors in company background and human resources categories. When you receive attractive low rates, you should be doubtful about what you have to trade-offs such as less seniority in development, less QA, or less English competency… which of them are acceptable to you and which not.
- Quotation: The quotation should go along with Work Breakdown Structure (WBS) for dividing projects into milestones and elements and Critical Path Analysis (CPA) for sequencing tasks and activities. It gives you the big pictures and the whole scope with tasks, team composition, and budget. It enables accurate judgment on your partner quotation and avoids "scope creep."
Protecting your intellectual property is common, but over-protecting will limit your partner's capability. For example, with strict access to your environment, the developers could take 2-3 hours to investigate a bug that generally takes 30 mins. Examine which practices and policies your partner has done so far with other projects and encourage them to share their thoughts. Then determine the right exposure of your IP for your project characteristics.
With the checklist above, you could put your partner list in range and score them to find the best fit partner.
After interviewing and screening your partner, you could carefully consider one pilot iteration to dig deeper into your partner's capabilities before making an informed decision.
Contracts, SLA, NDA
Next, move to the contract phase. An ideal contract should show an accurate picture of the development progress, mitigate the sloppy code behind a workable software, and cover all emerging issues with proposed solutions that might happen in the future.
You could refer to several factors needed to be covered when dealing with the contract phase:
- Project Scope: Outline the deliverables based on the list of features/user stories and timeline/iteration, broken down in WBS and CPA. It is essential to motivate the team to deliver the best product rather than merely meeting a deadline.
- Payment milestone: You could consider making payments monthly, quarterly, or based on the project's major milestones.
- Code quality: The contract should include the agreement of coding standards.
- Maintenance and support: Clearly state the duration and what items your partner supports you after their delivery.
- Intellectual property rights: Make sure you have complete ownership of your intellectual property. It should prevent your business from a sudden termination without access to source codes and modification controls. It also helps prevent the outsourcing firm from reusing your codes for any possible competitors in the future.
- Indemnity: This clause addresses the risk responsibility-sharing and state who pays the legal fee and any lawsuit that emerges in the future.
- Termination clause: Clearly state the actions that need to be taken, not only when the project goes successful but also when the project fails to reach completion.
- Jurisdiction for resolution of issues: As software outsourcing is a global business practice, it's critical to mention the jurisdiction and the law covering any dispute.
Service Level Agreement (SLA)
A contract is defined as an agreement upon service provided, duration, cost, resources, approaches, assumptions, and several other aspects listed above; SLA would focus on performance management and service quality. An SLA also includes penalties when the project fails to meet the deadline and reinforcement when the development process goes faster than the predefined schedule.
Service Level Agreements
Cover the scope of the project
Problem correction and iteration
Enhancement of applications
Monitoring and analysis
Source: Classic Informatics
From our perspective, a high-value contract should be associated with a separate SLA document so that you could revise SLA more often without editing the contract. Typically, a contract would last for years, but SLA could be reviewed quarterly. It helps relieve the burden of reviewing contracts too often.
Non Disclosure Agreement and Non-Compete Agreement
We should make sure the reasonable efforts of NDA negotiations are addressed. Also, make sure that the company and every developer involved in the project also sign the agreement.
Several critical elements of an NDA are included as below:
Non Disclosure Agreement
Restrictions on Use/Disclosure
Remedies for Breach
Boilerplate and Language
A well-defined onboarding process is the starting point to give project clarity, agree on a common course of action, set mutual expectations, and set the tone for a trust-based relationship.
Depending on the project complexity, the onboarding process could be tailored differently, but it all starts with a kick-off meeting. There are several critical parts should be discussed in the meeting agenda below agenda:
- Introduce the team structure, roles, office time.
- Introduce the overall project context, business logic, project scope, project roadmap, and release plan.
- Discuss the tech stack, design, architecture.
- Discuss source code repository, cloud platforms, hosting, and environments for development, testing, and production.
- Discuss communication channels and frequencies.
- Address the expected performance and quality standards.
- Address time zone differences and agree on specific working hours.
- Build a product backlog with user stories for several first sprints.
- Hand-over necessary documents and manuals.
- Take security precautions.
Typically, as soon as the contract is signed, the developers are expected to start coding right away. However, projects with high complexity levels will need "Sprint 0" that may last from several days to a couple of weeks before starting.
Through discussion, you could encourage the outsourcing development team to give their feedback from their business domain experience and figure out all potential scenarios that need to be covered. This collaboration could foster ownership and accountability from 2 parties and make everyone on the same page.
Typically, ideal governance includes consistent management, clear guidance, standard process, healthy decision making, which cover three layers:
- Operational: Day-to-day activities typically related to daily technical issues, member capacity, and other low-level issues.
- Managerial: Delivery tracking & reporting, deployment, client success.
- Relational: Invoicing, and contract and agreement amendments, business alignment, solutions for high-level issues that go beyond operational scopes.
Regarding the two first layers of management, Agile management is proposed as the best one among methodologies to adapt to changes in software development projects and enable the highest level of collaboration even during the most challenging implementation issues.
The typical approach of Agile software development is: clarify goals, think creatively, communicate continuously, move cautiously, celebrate, and learn collectively.
But the fact is, while regular communication is placed at the heart of Agile development, offshore outsourcing makes communication harder due to the distance and time zone differences. To improve these drawbacks, you could leverage several practices below:
- Adopt continuous integration to eliminate the emerging integration issues shortly.
- Use test scripts to clarify the requirements further.
- Use short iteration and regular builds to facilitate direct and instant feedback from the client.
- Leverage different communication tools to eliminate offshore communication drawbacks, for example, wikis, project management tools, issue tracking tools, IM, video conferencing…
People talk much about the "watermelon" effect in software outsourcing, where everything is green on the outside and red inside. That's why it's critical to set up a broad measurement framework that includes a mix of current metrics and leading metrics that allow early warning of issues before they become major incidents.
Based on the initial strategy and plan, you develop a set of monitoring metrics related to delivery, code quality, and business metrics to quickly identify when you are off the track and make the adjustments as soon as possible. In this article's scope, we focus on two technical aspects: Code quality and Delivery performance.
Code quality is ambiguous, but to put it simply, it contains two fundamental characteristics for a high-quality code: readability and maintainability.
Before starting a project, a document of all coding standards should be prepared by either you or your offshore company that sets out your expectations. Include early and small code review in your iterations and establish a comprehensive quality assurance process. Regularly mention your expectations about the quality of your applications.
Obviously, it's tough to sacrifice your timeline and budget for some vague measurement, especially when you are a startup with limited resources. But when it comes to time and cost, we should be realistic. It means that the upper charge could appear later on for maintenance, modification, or even building your product from scratch when you need to scale up. So it's worth understanding the dilemma of software development and allowing the development team time to maintain their code quality.
Next, it's worth spending your time thinking about your software product vision in the long term thoroughly. It helps your offshore developers to identify the fitting system architecture and structure in the first place. From that point, they could understand what the code is using, how different modules work with each other, their structure, how it will be tested, debugged, and deployed...
These days, DevOps practices continue to gain popularity. It is the critical driver for fast and reliable software delivery. In the Codefresh survey, budgets for DevOps efforts increase in 2020. 74% of organizations expect DevOps spending to increase this year.
According to Nicole Dorgren Ph.D., Jez Humble, and Gene Kim, the co-authors of the book: Accelerate - The Science of Lean Software and DevOps - Building and Scaling High Performing Technology Organizations, there are four metrics to measure software delivery performance and make the most of the benefits of DevOps team:
- Change Lead Time
- Deployment Frequency
- Change Failure Rate
- Mean Time to Restore (MTTR)
On-going relationship management
Maintaining the effectiveness of outsourcing relationships and turning a client-vendor relationship into a strategic outsourcing partnership requires enormous effort and responsibility from both sides: the client and the outsourcing vendor. In this relationship, trust plays a critical role in facilitating the success of strategic partnerships.
The fact that many outsourcing relationships fall short after the engagement kicks off in the real world. “In our experience, there is good intent at the beginning of the program, but as people get back to their day jobs, the focus goes back to metrics, KPIs, and quarterly business reviews.” Said Jimit Arora, a partner of Everest Group - an outsourcing consultancy and research firm.
The question is, how to build and strengthen trust in offshore software outsourcing relationships?
Based on in-depth research of Systems and Software 80 (2007), targeted to Vietnamese software development practitioners who have been developing software for Eastern clients, it shows six initial factors that the offshore companies should consider to earn the initial trust from the client-side:
- Cultural understanding: The knowledge of norms, beliefs, business ethos, and skill in the native languages.
- Credibility: Company references, certifications, previous experiences.
- Capabilities: Technology, people, and management capabilities.
- Investment: The investment level in people, technologies, and infrastructures.
- Pilot project performance: The effectiveness and performance of pilot projects.
- Personal visit: The frequency of the client’s visit.
Trust is hard to earn, but how about maintaining them to thrive in this trust-based outsourcing relationship?
- Maintain effective, regular, and open communication: Effective communication starts with clear and realistic expectations, regular iteration involvement, tailored project management, a wide range of formal and informal communication means, active discussion of emerging issues, and constructive resolutions proposals. Besides, we should commit to transparency from both sides for good and bad issues with constructive feedback and motivation for improvement.
- Commit to the consistency of delivery performance and quality: At the end of the day, the most crucial trust factor is based on how outsourcing companies could deliver working software in high-quality and on-time manners. The software development process is complicated and very likely to be different from the initial expectations. It’s where intuitively managing expectation skills come to help. Outsourcing companies need to clarify client requirements and expectations proactively and never promise what they can not deliver.
- Build trustworthy personal relationships: After all, the relationship between clients and outsourcing partners should evolve or involve trustworthy personal relationships. Forming that kind of intimate relationship strengthens their business trust. We are all human and people are more comfortable being transparent, open, and constructive to people they trust. In that case, issues are easier to be raised early before any significant incidents happen, which leads to a failed outsourcing partnership.
In sum, when the distance is far, and the culture is different, establishing trust is a gradual process that needs serious effort from both sides to make offshore strategic partnerships happen.
Communication and cultural differences
It pays off to reserve one separate part talking about communication, one of the significant pitfalls of offshore software outsourcing. Communication is a skill that goes beyond English fluency. It requires skills, tactics to deliver your messages directly and are easy to understand. It also needs a formal project communication plan and supporting tools to close the two countries gap.
Furthermore, offshore outsourcing communication requires a basic understanding of the culture of the outsourced country. According to Martin Fowler, an experienced Agile offshore development practitioner at Thoughtwork, the fundamental culture discrepancy is the straight and open communication level. Suppose your company is based in the Western and your offshore countries found in Asia. In that case, one typical behavior that you should not ignore is that a passive agreement from Asia developers could show their politeness but also a sign of important issues not getting discussed. The Westen should sense this specific signal and hold on for a further discussion.
|If you plan to work with a Vietnam outsourcing team, you could discover several cultural insights into Vietnam's offshore software development here.|
Offshore software outsourcing includes both proven benefits and hidden risks. It’s essential to identify where the pitfalls lie and plan to mitigate those as early as possible. You could refer to several common factors as following to develop your risk management plan:
- Unclear development goals and expectations.
- Insufficient work breakdown and milestones.
- Lack of solid project management and software methodologies.
- Misunderstanding the requirements and expectations.
- Lack of alignment between external and internal teams.
- Insufficient offshore team motivation.
- Thin plan for product vision and product architecture.
- Lack of a serious plan for technical debt.
- Lack of noticeable QA efforts.
- Lack of serious protection rules for intellectual property and data security.
- Unclear metrics to measure the success of both project and product standpoints.
- Inconsistent priority during the roadmap of development.
- Short senior management engagement.
- Lack of ownership from offshore partners.
Pay attention to several common risk factors above. You could prepare for comprehensive backup for any incident issues that lead to outsourcing failure.
Software development and offshore software outsourcing are fast-changing fields with different emerging technology movements. However, the critical factor for outsourcing success and hidden risks leading to project failure remain the same over the decades. Hence, proper investment in understanding the whole outsourcing lifecycle and designing your outsourcing plan at a granular level will equip you with a strong foundation for successful project completion.
Moreover, the ultimate objective should be turning your client-vendor relationship into a strategic partnership, where innovative development and trust thrive and prosper at the most effective cost. Otherwise, the fear of offshore outsourcing failure keeps chasing you. And offshore outsourcing can still be your temporary solution to resolving your limited talent and budget resource constraint, forever.
- John Pirtle, Elements of Outsourcing Success, integrisapplied.com, 2017
- Serhiy Haziyev and Halyna Semenova, What outsourcing engagement model is right for you? www.networkworld.com, 2015
- Rahul Varshneya, Five Pitfalls To Avoid When Outsourcing Software Development, StackOverflow.blog, 2019
- Swati Sharma, Outsourcing Contracts: What You Need To Know, www.classicinformatics.com, 2019
- Chris Neumeyer, Best Practices for Non-Disclosure Agreements, www.linkedin.com/pulse, 2015
- Bronwyn Shimmin-Clarke, Reflections on agile program management during the pandemic in Brazil, https://www.thoughtworks.com, 2020
- Andy Hilliard, 15 Potential Risk Areas in Software Development Outsourcing, www.accelerance.com, 2018
- Nicole Dorgren Ph.D., Jez Humble, and Gene Kim, Accelerate - The Science of Lean Software and DevOps - Building and Scaling High Performing Technology Organizations, 2018
- Martin Fowler, Using an Agile Software Process with Offshore Development, martinfowler.com, 2006