This post is revised and republished from Carl’s blog at Crain’s Detroit Business.
How should you build your next innovative product or service? One major consideration is whether to do the work with a house team or outsource it. I’ve identified some key dimensions of this problem to help you think through your choice. I’m assuming you have a project large enough to need at least a small team of people, that the stakes are high for you and your company, that time-to-market matters, but is not the overriding factor, and that your company is large enough to have a house team they consider using.
Considerations for House Teams & External Teams
1. Do they have the right skills – technical & product development?
Does your house team have the requisite skills? If not, can they effectively learn them quickly enough? Don’t forget that there are two aspects to this dimension:
- expertise in the technology of implementation (software, hardware, metal, plastic, etc.)
- expertise in product development itself
House teams may have the relevant technical skills, but not as much expertise or experience with product development. Similarly, a software vendor may focus only on domain or technical expertise. You need both.
2. Do they have domain expertise, and is that an advantage or a disadvantage?
You presumably have domain expertise. You know your market, your customers, relevant regulations, the competition, and all the ins and outs of operating in your domain. It would be an advantage if your team also knows these things.
On the other hand, ignorance can help find innovative new approaches to problems if it’s coupled with a good product development process. I’d bet on a good team that’s new to the domain, over a mediocre team with domain expertise. If you can’t find the right team with domain expertise, look for a team with a proven ability to learn quickly.
3. Will they prepare you for future modifications?
Most products are modified and extended over time. In the world I live in we have a phrase: “Software is never done.” This sounds depressing and expensive, and it is if the product and project management aren’t in place. But this reality actually stems from something very exciting: Software is the most malleable of all raw materials. Will your team be available in the future for modifications and extensions to the product? Are they using practices that make future work easy or difficult? Are they preserving the necessary knowledge for those who come after them?
4. Will they be available for maintenance?
Maintenance has similar considerations as future work, with an additional constraint around responsiveness. You can plan the work and control the timing for future product versions; you can’t always control the timing of maintenance. Maintenance may require responsiveness difficult for an outsourced team to provide, or pose a scheduling challenge when an internal team has been disbanded or are controlled by another manager.
5. Will they be focused and dedicated to your project?
You should have 100% of your team’s focus and dedication on your software development project. You want their “shower time” to be spent thinking about your problems. Context switching is expensive, inefficient, and even stressful for some people. It’s easy to make a column of numbers add up to 1 in a spreadsheet, but fractional allocation of people to software development projects is rarely a good thing, despite its prevalence in corporate America. Can you protect your team from the other demands placed upon them?
Of course, an outsourced team doesn’t guarantee full dedication to your project. Be sure you know who’s on your team and what else they’ll be doing. You should insist on transparency.
6. Will they be a good match with your existing project team?
It’s important to have a good match with your team. You should share similar values, be aligned on priorities and enjoy working together. A well-knit, high-functioning team makes for successful software development projects, whether that team is internal or external to your company.
Meet your prospective team. Learn what matters to them, what success looks like, how they see their job. Ask abut their backgrounds, experience, and approach to communication, coordination and conflict resolution.
7. What product development stage are you in?
Product development has many stages. Whether you stay in or go out, you need to know where you are in the process (ideation? modeling? research? design? feasibility? implementation? validation? manufacturing?) and be sure to match the team to the need. The best answer might depend on the stage, and might therefore shift during the software development project. Mismatches between the needs of the stage and the skills of the team lowers your odds of success.
8. Do you have the resources to create a strong internal team?
You may need to create an internal, dedicated team from scratch, in which case your first difficulty would involve recruiting and hiring. In some fields, like software design and development, that can be a very difficult job due to a shortage of skills.
Ask yourself if the best people are likely to want to work at your company in the long run. Do you have a flow of interesting projects and challenges to keep them satisfied? If not, you’re unlikely to be able to recruit the best people.
In addition to potential delays in staffing, you also face the challenging task of creating a high-functioning, dedicated software development team from a group of individuals. That doesn’t always go smoothly, so you may need to make course corrections, resulting in more delays.
Of course, going to an outside vendor doesn’t guarantee smooth sailing. Look for how vendors relate to their employees. Do they invest time and money in their growth? Do they have long-term employees or subcontractors? Is there low or high turnover? Does the company, and hence its teams, have well-reasoned opinions on process and practices? Is there a strong, shared culture? The answers to these questions are good indicators of whether or not outsourcing will save you the time and risk of team formation.
9. Are you prepared to handle Intellectual Property concerns?
Be sure your IP remains in your ownership through proper legal contractual language. This issue is relevant to both in-house and outsourced software development teams. Be sure you can effectively enforce your rights should things go wrong. While it’s important to get the legal stuff straight, you should — first and foremost — work only with people you can trust.
The True Cost of Insourcing vs. Outsourcing
On a simple hourly basis, outsourced contractors have an hourly rate typically 2-3 times more expensive than an employee's, but a more careful comparison shows the costs to be a lot closer. Ultimately, the team that builds the best product and mitigates risks effectively is almost certainly the most economical choice.
If you employ people with the skills needed to implement your innovation, then you’re competing with the vendors to which you might consider outsourcing for those skills. Assuming pay and benefits are approximately the same, the difference in cost comes down to overhead and profit. Well-run small firms are often leaner, with fewer overhead costs than larger corporations.
Paying only for what you need (this project, those hours), versus making a long-term commitment to an employee, also can be advantageous when outsourcing. My back-of-the-envelope estimate in the software development business is that an experienced maker is approximately 66% more expensive when hired from a vendor than the direct employee cost of the same person. If you add a share of typical corporate overhead to the employee cost, the gap narrows significantly. Using per-person, per-hour overhead costs similar to Atomic Object’s, and adding that to the internal cost of an employee at a large corporation, the cost gap narrows to only 17%. With hourly cost differentials in the range I’ve estimated, the question of cost becomes secondary to other factors. If the best team and the right team is more expensive, it probably still makes big picture economic sense to hire it.
Atomic sometimes offers our clients an incubation model that lies between pure in- or outsourcing. The client hires us to create a product, and we work with them from the earliest stages of their project through implementation and deployment. However, during the software project we help our client make technical hires — reviewing, vetting and even interviewing — and we bring those technical hires into the team, teaching them the practices and process we use, providing them a feeling of confident ownership of the product’s code base, testing, and deployment. Once the heavy lifting of a major release is done, the client’s employees can maintain and extend the product without our help. We often get called back in for significant new product development work.
The strategy for building your next innovative product or service has many dimensions to consider. The best approach might be a blend of an internal software development team and outsourcing.