Why Software Development Outsourcing?

To stay competitive, more businesses than ever are turning to software development outsourcing. These businesses know that leveraging one or more types of outsourcing helps them:

 

Get your outsourcing benefits cheatsheet

 

 

Types of Software Development Outsourcing

Outsourcing models can be usefully defined by how they align across these three attributes: 

  1. Location: Onsite/Onshore/Nearshore/Offshore
  2. Relationship: Staff Augmentation/Managed Team/Project-Based
  3. Contracts: Time & Materials/Fixed Price

We explore the pros and cons of each of these choices in the guide below.

Software Development Outsourcing: Two Primary Perspectives

When it comes to software development outsourcing models, people tend to define them based on two primary factors: distance and client-outsourcer relationship.

These factors are not mutually exclusive. Instead, they’re two perspectives framing the many different types of outsourcing engagements you can have.

In this post, we’ll focus primarily on the client-outsourcer relationship framework (more on why later). That said, any cataloging of outsourcing models would be incomplete without a quick discussion of location-based outsourcing models.

Location-Based Software Development Outsourcing Models

Location-based software development outsourcing models are defined by distance. Where are your outsourced resources located relative to you?

Typical location-based outsourcing models include:

Onsite Outsourcing

Onsite, or onsite outsourcing, is defined as the outsourcing of services to a provider who will send skilled professionals to work in your office for a fixed period of time.

Although “onsite outsourcing” may seem like an oxymoron, it’s essentially outsourcing implemented onsite. (Distillery uses a variation of this model in our staff augmentation engagements, initially sending engineers onsite for three to four weeks to learn our clients’ processes and systems.)

Onshore Outsourcing

Onshoring, or onshore outsourcing, is defined as the outsourcing of services to a provider within your same country — but outside of your company.

Nearshore Outsourcing

Nearshoring, or nearshore outsourcing, is defined as the outsourcing of services to a provider in a neighboring or nearby country (e.g., in the same time zone).

Offshore Outsourcing

Offshoring, or offshore outsourcing, is defined as the outsourcing of services to a provider in a more distant country.

Multisource Outsourcing

Multisourcing, or multisource outsourcing, is defined as the use of various simultaneous location-based outsourcing engagements from multiple providers.

This “best of breed” model is often used by large corporations and enterprises to ensure each need is sourced to the best possible provider.

Software-Development-Outsourcing-by-Location_Types-of-Outsourcing

Relationship-Based Software Development Outsourcing Models

Relationship-based outsourcing models describe the balance of ownership and responsibility held by the client and the outsourcer. The three primary relationship-based outsourcing models include:

Staff Augmentation Model

Staff augmentation models, which place the majority of the responsibility on the client. In this model, you’re leasing workers from the outsourcing provider to assist with your internal development projects. You still own your projects from start to finish.

Managed Team Model

Managed team models, in which the client and outsourcing provider share responsibility for and ownership of development projects, agreeing on which responsibilities belong to whom.

Project-Based Model

Project-based models, which place the majority of the responsibility on the outsourcing provider. Your outsourcing provider completes your development projects based on your requirements, owning the projects from start to finish.

Software-Development-Outsourcing-by-Relationship_Types-of-Outsourcing

In our article, we’re homing in on these three relationship-based types of software outsourcing, because:

  1. Relationships drive business success. Ultimately, your relationship with your provider is the key to whether your engagements are successful. In turn, the success of those engagements helps drive your business’ big-picture success.
  2. It all comes back to the relationship. Relationship-based engagements can be defined independent of location. Location-based engagements cannot be defined without describing the relationship.
  3. Distance isn’t everything. Not all relationships are created equal, be they onsite, onshore, nearshore, offshore, or multi-sourced. The quality of your relationship with your provider likely outweighs the distance between you.
  4. Different clients and projects fit with different outsourcing models. Not all projects and providers are created equal. For example,  your product development engagement may not be a fit for a provider specializing in staff augmentation. But for someone else, that staff augmentation specialist may be exactly right.

Effective Software Outsourcing Is A Competitive Advantage

Choosing both the right partner and the right type of engagement are central to long-term business success. Making the right choice can drive competitive advantage.

So without further ado, let’s take a deep dive into the three primary types of relationship-based software outsourcing: Staff augmentation, managed team, and project-based.

Software-Development-Outsourcing-Responsibility-Shifts-Graph

Staff Augmentation Model for Software Development Outsourcing

Synonyms: Extended Development Team, Team Augmentation

What Is Staff Augmentation?

Staff augmentation, also known as an extended development team or team augmentation, is a software outsourcing model that allows you to maximize the efficiency of your in-house team while retaining total control over your project.

How it works: In a staff augmentation engagement, you are effectively “borrowing” your outsourcing partner’s engineering talent for however long you need it. You can seamlessly integrate top-tier engineers into your in-house team.

Management and responsibility: Since your project is shared between your in-house team and your extended team, you (or someone else from your in-house team) are in charge of managing the process and workflows on a day-to-day basis. You retain overall responsibility for achieving results.

Control: This is the outsourcing engagement model in which you maintain the highest level of control.

When Is Staff Augmentation Best?

When you have in-house development talent. The staff augmentation outsourcing model works best for businesses of any size that have existing in-house development teams. After all, you can’t “augment” an in-house team if it doesn’t exist.

When you have in-house technical leadership. In addition, staff augmentation arrangements require that you have an in-house technical lead with enough experience and knowledge to manage the project, like a Director of Engineering or CTO.

When you need expertise you don’t have in-house. Staff augmentation outsourcing is a great option for companies that need top-tier talent with specific expertise — but can’t necessarily afford to recruit, train, and retain that talent themselves.

When you want speed to execution on in-house projects. Staff augmentation outsourcing is also a great option when you need an extra boost of talent for a specific project but want to remain fully in control of the development process. That could mean bringing in new expertise or just speeding up your development timelines.

When you need to add talent to your team quickly — without waiting for in-house recruiting. Given the tech talent shortage, recruiting the right in-house talent can take months or even years. With staff augmentation outsourcing, you can quickly source the talent you need to get your work done.At your option, in-house recruiting efforts can continue in the background. After all, when you find the right in-house resource, you can easily scale down your outsourcing engagement.

What Are the Advantages Of Staff Augmentation?

Increased development capacity and output. With a staff augmentation model, you can add extra engineers to your team when you need them, for exactly as long as you need them. No recruiting or HR help is required. Your outsourced workers give you the added bandwidth you need to develop products more efficiently. You get to market faster and iterate faster.

Significant cost efficiencies. Staff augmentation is particularly attractive for businesses in which cost-efficiency and quality are high priority. Savings may include:

  • Lower staffing and HR costs. You gain access to great talent without having to pay full-time salaries or wasting your budget on “the bench.” You’re also saving on recruiting, HR, onboarding, and turnover costs.
  • Lower operational costs. You’re not paying for outsourced workers’ office space, hardware (e.g., computers), software, taxes, benefits, ongoing training, or downtime.
  • Lower development costs. Given all of these savings, you also reduce overall product development costs.

Flexibility and scalability. Staff augmentation outsourcing affords you the highest level of flexibility.Scaling your team up or down is as simple as putting in a request to your outsourcing partner. If you’re seeking more staff, they’ll deliver new resumes in little to no time.

Access to top talent. You have ongoing access to some of the best engineers and IT experts in the world. But you don’t have to put up the hefty full-time salaries and benefits packages needed to keep them. Access to top talent has become especially important in recent years, as businesses struggle to attract and retain the right talent.

Fewer recruiting headaches. Your staff augmentation outsourcing provider does all the footwork to match you with high-quality candidates who have the right expertise. Your only recruiting responsibility is final interviews, in which you decide whether you’d like to move forward with the resource(s) they’re offering.

Zero recruitment risk. There’s no recruitment risk. Your outsourcing provider supplies the right talent, and you have recourse to ask for staffing changes at any time.

Speed to innovation. More bandwidth + the right expertise + fresh ideas and perspectives from your outsourced workers = increased speed to innovation.

Software-Development-Staff-Augmentation-Use-Cases

Case Study: Software Development Outsourcing – Staff Augmentation

Distillery client: Tala is a FinTech that’s transforming how credit scoring and financial services work in emerging markets, opening up a new avenue for building credit and obtaining loans.

Business problem: Tala had struggled to find the engineers they needed to deliver on the company’s big-picture goals. Though the fast-growing business had launched one app successfully, they sought to expand and refine the app’s functionality while also expanding into new markets.

Solution: Tala engaged Distillery for staff augmentation outsourcing. To extend their in-house team, we provided Android developers, back-end developers, and QA automation engineers. These outsourced engineers have since formed strong, long-lasting partnerships with Tala. One of our engineers even moved — at their request — to work onsite with Tala’s in-house team.

Benefits: Tala has successfully expanded into four new markets and completed several successful rounds of funding. They benefit from a trusted, long-term relationship with outsourced engineers who are invested in their success and integrated into their team. They’re able to add new engineers when needed, flexing development capacity to support their continued expansion. In the words of Tala CTO Johnny Lee, “[The extended team’s] work contributed to successes like meeting funding goals and doubling the number of app users.”

Dedicated Development Team Model for Software Development Outsourcing

Synonyms: Managed Team, Software Delivery Team

What Is a Dedicated Software Development Team?

A dedicated software development team, also known as the managed team model or a software delivery team, is an outsourcing model that grants you access to a team of highly skilled talent and software development experts. In this model, you and your outsourcing partner share ownership of, and responsibility for, project direction and deliverables.

A managed team is the intermediate outsourcing solution. It falls somewhere between staff augmentation and a fully outsourced approach.

How it works: Much like the staff augmentation model, your managed team is 100% allocated to you and your project. Your managed team works independently of your in-house team, and an outsourced Project Manager manages the team’s day-to-day process and workflows. Although the managed team works independently, your outsourced Project Manager regularly reports to and meets with your in-house Project Manager / Product Owner. These teams are usually cross-functional. Roles can range from Scrum Master to Back-End Developer to QA Engineer and beyond. No matter your project’s requirements, a good outsourcing provider will be able to customize your team’s composition to achieve optimum results.

Management and responsibility: The managed team model is unique in that your outsourcing partner shares the risks and responsibility for the final deliverables.

Control: You and the managed team agree upon scope, responsibilities, outcomes (e.g., deliverables), timelines, and service-level agreements from day one. Your in-house Project Manager / Product Owner stays involved throughout the process, helping to guide the product’s direction and make decisions. This includes staying in close, regular contact with your outsourced Project Manager.

Software-Outsourcing-Managed-Team-Staff-Augmentation-Comparision

When Is a Dedicated Software Development Team Best For Your Business?

When you have an in-house Project Manager with relevant experience. Since responsibility is shared with the outsourcing partner, it’s best that you have an experienced in-house Project Manager or Product Owner with a solid background in the area covered by the engagement. For most businesses, that person will be a Product Manager. It could also be a CTO, CEO (common for startups), or other lead.

When you need technical expertise in a specific area. A managed team can come in handy for businesses that lack technical expertise in a desired area. Your outsourcing partner can provide the technical expertise and insights you seek, adding value to your existing knowledge and working with you to arrive at the best possible solution.

When you want to remain central to the decision making and development of your product/vision. Often, clients have product visions that aren’t fully fleshed out. They want to remain centrally involved in making decisions about the product (e.g., features, functionality, prioritization), but they can’t or don’t want to manage a team on a day-to-day basis. In these situations, managed team outsourcing is perfect. You stay involved and retain decision-making control, but much of the day-to-day execution happens without your involvement.

What Are the Advantages of a Dedicated Software Development Team?

Dedicated software development teams provide many of the same benefits as staff augmentation outsourcing, including access to top talent, significant cost efficiencies (including reduced operational costs, given you’re not paying for downtime), increased flexibility and scalability, speed to innovation, and no recruitment risk.

Increased control over development. Given your shared ownership of the deliverables, a managed team model allows you to retain more control over the development process than a more traditional project-based outsourcing model.

Guaranteed results and deliverable quality. If you’re working with a seasoned development outsourcing company like Distillery, you’ll get the added benefit of comprehensive service-level agreements and statements of work which specify in detail the scope, deliverables, and quality you are entitled to.

Reduced time commitment for you and your in-house team. Managed team outsourcing frees you of the responsibility of managing your project on a day-to-day basis. And your assigned in-house Project Manager / Product Owner maintains control over his or her time commitment, given agreed-upon communication protocols and responsibilities.

Reduced ramp-up efforts and costs. There’s no ramp-up time for your managed team. They’re likely already familiar with each other’s working styles, having worked together successfully on similar engagements.

Improved communication. Communication and coordination are core skills for any outsourced managed team. They may genuinely be better at it than your internal team members.

Reduced risk due to proven experience. In part, you’ll select the outsourcing provider to provide your managed team based on their proven experience with similar projects. Their past successes help to increase the likelihood that your project will succeed.

Managed-Team-Software-Outsourcing-Use-Cases

Case Study: Software Development Outsourcing – Dedicated Software Development Team

Distillery client: Media and entertainment startup nēdl sought to create a voice-powered search engine that could help users instantly search for and listen to broadcast content worldwide.

Business problem: nēdl’s founders needed assistance in building their minimum viable product (MVP). In particular, they sought a managed team with significant expertise in third-party APIs, Amazon Web Services, and Alexa.

Solution: nēdl engaged Distillery to provide a managed team for their MVP development project. nēdl’s CTO spearheaded the project and led the outsourced team, which consisted of a QA engineer, Fullstack Developer, Project Manager, and Technical Advisor.

Benefits: With the help of their managed team, nēdl successfully built and launched their MVP. At their option, they continued working with the outsourced managed team to make refinements post-launch. The nēdl app has gone on to win multiple awards.

Project-based Model for Software Development Outsourcing

Synonyms: Software Outsourcing, Outsourced Product Development

What Is a Project-Based Model?

Project-based outsourcing, also known as software outsourcing or outsourced product development, is an outsourcing model in which your development partner oversees and manages the entire process according to specifications you provide prior to the start of the engagement.

How it works: A project-based outsourcing model is the most traditional and most hands-off of the three types of outsourcing engagements. In this type of engagement, you hand off the requirements to your outsourcing partner.

Responsibility and management: Your outsourcing partner will fully manage the development process, responsible for delivering the final product according to the specifications you provided and the agreed-upon timeline.

Control: Although you retain the least amount of control with a project-based outsourcing model, your in-house Project Manager / Product Owner will still be in contact with your outsourcing partner from time to time. The frequency of these communications is up to you and your outsourcing partner to decide, as it’s highly dependent on your specific project and its requirements.

When Is a Project-based Model Best For Your Business?

When you have a project that is not your core product. While project-based outsourcing can be a fit for businesses of all sizes, it tends to work best for larger businesses (e.g., mid-market and enterprise) and for projects which are not the business’ core product.

When you have limited in-house development capabilities. A project-based model can be a good fit for businesses with limited in-house engineering/IT capabilities, as the responsibility and process are owned by the outsourcing provider. By outsourcing development to an experienced software outsourcing company, even the least tech-savvy businesses can develop a custom software product — either by building from scratch or by customizing existing platforms and products.

When you have a simple, straightforward project with pre-determined requirements that are unlikely to change. A project-based outsourcing team can execute these requirements without your guidance or input.

When you want a specific product developed — without the burden of management. Again, project-based outsourcing works best for clients who have a clear vision of the product they want developed. Since you know what you want, you can effectively hand off your project, freeing yourself of the burden of management.

What Are the Advantages of a Project-Based Outsourcing Model?

Project-based outsourcing provides many of the same benefits as staff augmentation outsourcing and managed team outsourcing, including access to top talent, significant cost efficiencies, increased flexibility and scalability, speed to innovation, and no recruitment risk.

Increased clarity on timeline and outcomes. In a project-based outsourcing engagement, you’ll clearly define timelines and deliverables before the engagement begins, leaving you with a clear understanding of the end result and timelines.

Minimal time commitment for you and your in-house team. Though this type of outsourcing affords the least amount of control over the development process, it can be a huge advantage for some businesses. You may have a simple, straightforward development project in mind, but you don’t want to take your in-house engineering team’s time away from more mission-critical projects. You could let the project sit in your backlog with “low priority” status, or you could outsource it with a project-based approach. By choosing the latter, your team’s time and attention stay focused on your high-priority projects. You get the results you seek with minimum effort beyond documenting your requirements.

Responsibility for project success lies outside your company. Although you are responsible for documenting the initial requirements and specifications, your outsourcing provider is responsible for ensuring the execution and delivery are successful. Your contract and/or SOWs hold them accountable for delivering on their commitments.

Project-Based-Software-Outsourcing-Use-Cases

Case Study: Software Development Outsourcing – Project-Based

Distillery client: Tool of North America is a creative production company that helps brands like Infiniti, Amazon, IBM, and Gatorade to bring ideas to life through storytelling.

Business problem: Tool was working to create an augmented reality mobile game. They needed to ramp up their development efforts without sacrificing quality. In particular, they needed an additional microservice for the game that would function as an admin panel.

Solution: Tool put together the specifications and requirements for this project, then outsourced its development to Distillery. The outsourced team, which worked independently, consisted of a Project Manager, a Frontend Developer, two Backend Developers, a QA Engineer, and a DevOps Engineer.

Benefits: Tool received the finished admin panel project on time. Outsourcing the development of the admin panel and it’s features allowed them and their partners to work more effectively and ramp up development on the game’s other features.

Comparison of Software Development Outsourcing Models

Software-Development-Outsourcing-Models-Comparison-Chart

Contracts for Software Development Outsourcing

Now let’s cover those all-important contracts that help to ensure you get the outcomes you seek. Businesses use two primary types of contracts when outsourcing software development projects — The contract types are:

  • Time-and-materials contracts, which bill the project at an agreed-upon rate based on actual resources used and time spent by developers.
  • Fixed-price contracts, which bill the project at a flat rate, regardless of the time spent or resources used.

Time-and-materials and fixed-price contracts both have advantages and disadvantages. The best contract type for you depends on the requirements of your specific project.

Pros and Cons of Time-and-Materials Contracts

Time-and-materials models are the most flexible, as they can quickly be scaled up or down to accommodate changes in scope. For this reason, they’re most often used in projects in which scope and requirements are not set and/or likely to change (e.g., large-scale development projects).

Flexibility is the main reason clients choose time-and-materials models for software development outsourcing projects.

From staff augmentation to outsourced product development, clients prefer time-and-materials contracts. They can easily and quickly request change orders to scale resource allocation up or down to fit their changing business needs.

To illustrate, imagine you need more DevOps resources on your team. You’ve decided to look into staff augmentation outsourcing as a possible solution. To test this solution, you may want to start with one DevOps Engineer and a three-month engagement. But what happens if:

  • After the first five weeks you need more than one resource?
  • You want to keep your first resource beyond the initial three-month engagement?
  • You want to add one or two Backend Developers to your team?

With a time-and-materials contract, all of these adjustments can be made quickly — exactly when they’re needed — without complicating the original contract.

The one caveat to keep in mind with the time-and-materials model? The price you will pay is not always clear ahead of time. For this reason, it’s essential to find a trustworthy, established provider who will be transparent about their time-and-materials billing process and communicate with you regularly, thus eliminating the potential for any “surprise” costs.

Pros and Cons of Fixed-Price Contracts

Fixed-price contracts, on the other hand, are most often used in small, straightforward projects with limited scopes and/or fixed budgets. Although fixed-price contracts are more traditional, they’re not as widely used as time-and-materials models. This is mainly due to their inherent lack of flexibility.

Some clients choose fixed-price contracts because requirements, timelines, and deliverables are clearly laid out ahead of time.

You also know in advance exactly how much you’ll be paying. Although this may sound like a better deal than the time-and-materials contract, it can actually end up costing you more. As everyone knows, software development projects often end up being more complex than anticipated, involving more time and resources than initially estimated. After all, every project is unique. No two projects share exactly the same requirements, people, technologies, purposes, and limitations. This presents a challenge for complex projects.

Often, scope must be adjusted, or changes have to be made to the deliverables (i.e., cutting unnecessary functionalities) to stay within the overall budget of the fixed-price contract.

Alternatively, some clients will elect to expand the scope of the original contract with a change order, although this will increase the final cost of the engagement.

Which Type of Outsourcing Contract Is Right for My Project?

Again, every software development project is unique. That’s why multiple types of contracts are available, to fit the differing needs of those projects. That’s also why, when deciding on a type of contract, there’s no straightforward answer.

When it comes to contracts, the best thing you can do is consult with your provider. Tell them your requirements and constraints. See how their services can best be customized to fit your needs. After all, your provider has been through the process many times. They can use their past experience and expertise to create a contract perfectly aligned to your project.

Graphic showing two outsourcing models (staff augmentation and managed team).

Choosing The Software Development Outsourcing Model for Your Business

Though there are many factors to consider when choosing a software outsourcing model, three factors in particular stand out:

  1. The level of flexibility you require
  2. How much in-house expertise you have available
  3. How much time your in-house Project Manager / Product Owner can dedicate to the project

To Choose an Outsourcing Path, Ask Yourself These Questions…

What is your primary business need or objective? Start by identifying the central problem you need to solve. Different problems are fit for different models.

How much flexibility do you require, and in what areas? Outsourcing models provide varying levels of flexibility in various areas (e.g., scalability, budgeting, access to expertise, timing).

Do you have in-house expertise in the area covered by the project? If you do, staff augmentation or a managed team may be the right choice. If you don’t, project-based outsourcing may be a better fit.

How much time do you have to devote to the outsourcing relationship? Staff augmentation models require the most attention, managed teams a medium amount, and project-based the least.

How much control do you want to retain? For full control (and management responsibility), staff augmentation may be the best fit. For a high level of decision-making control without the burden of day-to-day management, consider a managed team. Finally, if you’re comfortable giving up control beyond ensuring that the outsourced team delivers according to your specifications, consider project-based outsourcing.

What is the project’s priority level? A managed team may be a good choice for off-loading your lower-priority project. For a high-priority project, consider a managed team or staff augmentation approach.

An Easy Place to Start: Staff Augmentation Outsourcing

If you’re thinking about using outsourcing in your business but still don’t know where to start, we recommend exploring a staff augmentation engagement.

The relatively low level of commitment (as mentioned above, you can get started with just one resource!) makes it the perfect way to dip your toes in the water without taking on significant risk. There’s no need to have cold feet!

Many of Distillery’s clients began with staff augmentation engagements (almost 10 years ago for some!). Many of them have since expanded their development partnerships with us to include large and small software development projects using managed team and/or project-based engagements.

Ready to take the next steps toward finding the outsourcing model that will help your business thrive? Learn why successful companies like Google outsource, and what it really takes to outsource a project successfully.