Best practices to Offshore Software Development

Best practices to Offshore Software Development

When you’re wondering what is offshore software development, remember outsourcing. Offshore software engineering is synonymous, and indeed means, outsourcing. The word ‘offshore’ simply marks the fact that you’re sending your business operation to be done remotely, by other people. The most stereotypical perception of outsourcing is that it costs less but is risky in ROI. Though, that’s only scratching a surface. As with any other business, if approached diligently, outsourcing can actually help a lot.

Building a new digital product (a website, an app, a chat bot, an inventory management system, etc.) is a hell of job. In terms of time, resources, budget, people, coordination, effort… everything. So, obviously, you can hire an expert team and delegate the task. The question is: how to do it properly, what are the pros and cons, best practices of offshore development. Let’s see.   

What is offshore software development?

Offshore software development is outsourcing tasks to a third-party software agency or developer(s). Such services may include web development, web app development, mobile app development, etc. Typically, a partner company providing development is from a foreign country.

Outsourcing can be done in different ways:

  • To individual developer or an agency;
  • Delegating the whole project or only certain parts/features;
  • Hire a dedicated team of developers.

Freelance developers, as a rule, are experts in one or several fields. For example, creating mobile games requires a concept artist, Unity3D developer, 3D model artist, motion graphic designer, UX/UI designer, or all of them at times. No one developer could be an expert in all those areas, thus a few of developers or a company is an outsourcing option then.

NB: Under offshoring one contracts parts of business overseas, maintaining 100% ownership.

Nearshore, onshore & more terms

Not to add to confusion with terminology, but there’s more you need to know. Nearshore software development is basically the same thing as offshore outsourcing, with the only difference being proximity. A nearshore development company would be in the same time zone or even in the neighboring country. One of the advantages of this method is cultural and work ethic similarity. For European countries, as example, the common nearshoring option is Eastern Europe, where rates are in the $25-75 range. For USA, it is Mexico or Canada, and so on.  

Nearshore software development

Onshore software development means your partner company is located within your country. This way, it is approachable, mobile and adaptable to any changes, as well as offers better control. For example, in the USA onshore development would be a company from one state hiring a team from any other state.

Also, there are few more terms related to outsourcing you should be aware of. Dedicated team model is not geographically specific but centered around control and ownership. The vendor or the company hires a team of all kinds engineers required, and has the full control over it during the project.

Smart sourcing is the approach implying a division of tasks, usually delegating non-core operations to a 3rd-party entity. This is practiced by companies with enough experience with outsourcing projects. Build-Operate-Transfer, or BOT, in use mostly in the engineering and construction industries, is hiring a provider to install the facility, and then handle it back after certain time.

Pros & cons of offshore outsourcing

Less costly. Due to lower cost of living, countries other than those of Northern America and Western Europe charge less in hourly rates. Also, competition dictates that many companies include extra services, e.g. support. Communication issues. Due to time zone differences, bandwidth, working hours etc., core communications may slow down. Monitoring and resolving everything timely could be problematic sometimes.
Competent/Specific skills. In most cases, the workforce is as quality as elsewhere, and often with good education in software engineering. Most of them have skills in one-two specific areas, thus the ability to do tasks better and quicker. Cultural gaps. “Working hard” could have different meanings for people in UK and Spain. Cultural issues, gender issues, traditions, work ethics, what’s offensive and what’s not, etc. could lead to unpleasant situations if not through through beforehand.
No training, no administration. Outsourcing companies take care of employees, as they have to stay competitive. Also, less operational and administrative costs, no need to worry about office space, recruiting, equipment, etc. Less guarantee of quality. When looking only at cost reduction, there’s rather a chance of hiring a team with no skills or commitment to do the job.
Shared responsibility and development boost. Offshore companies share and manage the risks during projects, as they depend on the end-result too. This and deadlines facilitate faster process. Data security. In our age of fraud and hacking, one should always protect any sensitive data, especially when handing it to offshoring teams. A signed contract is not a 100% guarantee of trust.

You may have also heard, that offshoring companies are all just trying to scam you. And there’s precedent for caution, of course, as betting on cheaper rates only gets you poor software product and code in the end. It doesn’t mean every company is equally bad – nowadays they value and care about their reputation, simply to survive on the market.

Best practices of offshoring

To reduce the risks with offshore software development, you need to address the following: preparation (homework), selection process and working practices. First, preparing yourself even before you start looking for companies. Having an idea and few sketches is not enough for software outsourcing.

Start by determining the following:

  • Study the marketplace and your potential niche, decide what features your target customers would want, talk to potential customers. Learn about competition, find out what they are getting right and what they are missing, what technologies they use, etc.
  • Put together a roadmap with milestones to reach step-by-step. A priority list if you will. Also, make sure that what you’re going to build meets legal regulations, especially in cases where apps use personal data or/and money payments.
  • Prepare wireframes, sketches, mockups… whatever of your future product. Think of a user story ahead: who’d be using a product, what for and what they’d be able to do with it.
  • Analyze what capacities, skills, technologies and tools will you need to make it happen. Research available outsourcing models and select the one that suits you best.
  • And finally, prepare a detailed specification (or documentation) of project requirements and quality standards.

How to choose an outsourcing agency

There are thousands of outsourcing companies all over the world. But how to find the reliable one? The good old “ask for a reference” is always proper starting point. Find out company’s clients (current ad past) and ask their impression. If you could open up such client to talk about the offshore team and ask core questions, you may find out both concerns and area where they shine.

But what else? The groundwork is as important. Deciding on which offshore software vendor to choose takes time and evaluation. A good tip is to contact several companies to compare what they have to offer. Decide which outsourcing model fit best to your project, define your values (if you haven’t already) and see how it would match the values and services on the other side. If you can set aside 10 candidates after this, that is great.

Don’t get too much attracted and distracted by polished portfolios and don’t rush. Check their blog, their LinkedIn profiles, check their writing, code if possible, endorsements. If you can make a test run of potential partner company in regards to technical requirements, it will help to make a good decision for sure.

Treat your prospects like business team members and try to see whether they’d act like onsite team with interest or just like “patch” workers. Include them in conversation and decision-making, speak often and ask about the progress, ask about their ideas. Pay attention to how project management is conducted, as it is often the key reason of poor software in result.  

Tips on how to conduct offshoring

  • Set the quality standards. By doing so for architecture and code standards, you’ll be able to keep the quality in check. Keep those standards documented and share it with the  offshore development team. Also, conduct regular code reviews/audits.
  • Negotiate rates and set deadlines. Talk about developer rates, mostly not to cut down a price already low, but to get a company or an individual to prove their capabilities. When all is agreed upon, set strict deadlines for each stage and make sure they are understood on the other side.
  • Communicate and track progress. Weekly reports are good and clearly necessary, but real two-way conversations and meetings leave you with much more knowledge.
  • Protect yourself. Team members should sign NDAs and/or non-compete agreements, that’s a rule. Intellectual property rights and confidentiality terms should be known and clear to everybody. In addition, set up a private repository for the code (GitHub, BitBucket, GitLab, etc.).
  • Handle office administration tasks like printing, document sharing with tools such as Docusign or Hellosign.

Apparently, there’s a constant debate about the relevance of outsourcing, what is offshore software development and when it is actually beneficial. In view of many experts, risks related with another country, another time zone and different language, are too big to entrust a significant part of business. Another issue are hidden costs: even with a fixed price model where the trap could hide in time. The bottom line is that the true cost of offshoring is more than hourly rates.