At GlowTouch, we’ve helped both technology firms and technology-driven companies develop software products for more than 10 years. This is the first post in our series on outsourcing software development. You can read the second post on finding just the right outsourcing vendor here. We show how outsourcing can be an effective approach to put the right software development team and processes in place for your company.
So, you want to build software. Google, Apple, IBM, and every software startup and app development agency do too. And they’re all engaged in furious international battles to find and recruit skilled software developers. With today’s high demand for talent, building the right team is harder than ever.
The Challenge of Hiring a Winning Software Development Team
A CompTIA report found 43 percent of companies hiring information technology (IT) professionals say they’re understaffed, and 68 percent say they expect filling IT positions will be “challenging or very challenging.”
A report by job site Indeed found 40 percent of all IT positions remain open even after three months, while recruiting software company Workable says the average time to fill general IT positions in the U.S. is 50 days. That’s nearly two months to bring in just one new hire.
Even software startups find it hard to recruit software engineers. Venture capitalist Marc Andreessen said it best when he told the New Yorker, “Our companies are dying for talent. They’re like lying on the beach gasping because they can’t get enough talented people in for these jobs.”
High demand also means high salaries for developers. Base U.S. salary for a Java or .Net programmer can top $98,000, according to job site Indeed.co. In more competitive places, such as California, salaries can stretch as high as $130,000.
Based on these factors alone, hiring software engineers is overwhelming for many companies. And the inability to quickly hire the right resources can cripple a business.
So, how do you put the right team and processes in place in a talent-starved, software-saturated market? Enter outsourcing.
Why Outsource Software Development?
At the most fundamental level, outsourcing can help solve three specific issues: providing access to talent, saving time and lowering costs. In addition, outsourcing can also provide scale and reduce time to market. Many large companies have already turned to outsourcing. Startups and mid-sized technology companies are getting there, but they seem to have a harder time making the decision to try it.
Outsourcing can speed up software development by providing quick access to developers and testers. #SaaS
Click To Tweet
Most software companies build early versions of their software in-house and iterate until they find a product-market fit. Then, they rapidly grow their user bases. But as growth accelerates, so does the pressure to meet aggressive product roadmaps, add new features, provide customer care, and fix bugs and usability issues. And in our hyper-competitive marketplace, missing a market opportunity can be the difference between company success and failure. The weight of this work strains the internal software development team, and they need to expand.
At this stage, companies immediately run into the realities of finding and hiring IT talent — the 50-plus days it takes to find, interview and hire (which doesn’t include on-boarding) and the high incremental costs of adding new employees. All while managing sales, marketing and growth processes.
If you’re facing similar challenges, outsourcing might be the best answer.
The Benefits of Outsourcing
In addition to providing access to talent, outsourcing many benefits, from time and cost savings to process improvements.
Start software development projects right away.
Outsourcing can help you manage growth without getting overwhelmed. It can speed up software development by providing quick access to developers and testers. Instead of spending 50 days to hire each developer, you can hire a whole team in one week and get started. And you don’t need to spend 80 hours screening every hire; it’s done by your outsourcing partner.
Save money with a smarter cost structure.
When you hire an employee, you create a fixed cost structure. In addition to base salary, you face payroll taxes, benefits, office space, equipment and management oversight costs. In most cases, there’s also a one-time recruitment cost. As an example, a typical Java developer with a $100,000 salary quickly becomes $150,000 when you add overhead, $180,000 if you had to pay a recruitment fee. Imagine if you need five people to meet demand — that’s just shy of $1 million in new fixed costs.
Outsourcing is an attractive option, allowing you to convert the high fixed cost to a lower variable cost. In addition, you have the flexibility to easily scale the team up and down to meet demand. You can maintain and strategically grow your internal team, while your outsourcing partner can provide additional bandwidth to meet your organizational and customer demands.
Free up your resources for growth.
With an outsourcing partner, you can meet demand at a reduced cost, allowing you to invest more in key growth drivers, such as marketing, sales and product development. You actually can have your cake and eat it too!
Implement efficient processes.
Software development requires both skilled developers as well as strong processes. A good outsourcing partner can improve development by leveraging its experience in executing similar projects. It can, for example, apply its framework and practices for using Agile, managing code quality, and protecting intellectual property.
Can Outsourcing Work for Growing Technology Companies?
The short answer is yes. But your selected outsourcing partner has to be the right fit, and it takes work. You can’t leave things to chance; you have to actively manage the engagement.
Many technology companies worry about the impact of outsourcing because software product development is their core business. Some common concerns include:
- Will the outsourced team have the skills, passion and insight to work on the product?
- How will we protect IP if critical information is shared with the outsourced team?
- How much time will it take to coordinate work between in-house and outsourced teams?
- Will we lose control over product development?
These are important questions to address, but we know from experience that selecting the right outsourcing partner will address each of those concerns.
Direct Your Outsourcing Partner with Strong Internal Management
Outsourcing isn’t a short-term tactic. It’s a long-term strategy, requiring a time investment to get the most from the relationship. For one, you need to be realistic about how quickly the outsourced team can deliver results. There will always be some amount of ramp-up time, so initially they may not be as productive as your internal team. But they are professionals, so as they become familiar with your product, processes and culture, their productivity will improve until they’re functioning hand-in-hand with your internal teams.
Outsourcing also isn’t going to work if you just toss loose requirements to an outsourced team and forget about them. It works best when you can provide the outsourced team clear directions, which requires having the right resources in-house to manage the outsourced work.
An in-house product manager should prioritize the features to develop and the bugs to fix. And a designated software development manager should provide guidance and oversight to both internal and external developers. In smaller companies, the CTO can also double as a software development manager. If you simply have no one overseeing the process, outsourcing may seem like pushing a boulder up a mountain with a wheelbarrow.
But, in our experience, software development outsourcing does work efficiently and cost-effectively if you:
- Find the right outsourcing partner
- Actively participate and manage that partner
- Treat the outsourced team as your own team
- Outsource the right work
- Outsource at the right time for your business using the right contract structure
What Should You Outsource?
You should only outsource tasks you have the ability and time to manage. Software product development broadly involves:
- Product architecture
- Product management
- Software design and development
- Software testing
For software companies, outsourcing is most effective when you focus on software development and testing.
Architecting and managing a product requires intimacy with your market, which outsourced teams usually don’t possess to the same level as internal teams. So, it typically makes sense to keep product management functions in-house. You should also keep responsibility internally for product architecture, development platform selection and the establishment of development standards.
Software development and testing are more execution-focused roles and are easier to outsource and manage. They also provide the biggest benefits, as development and testing typically provide the bulk of the development lifecycle time.
When Should You Outsource?
Outsource after you’ve already established product-market fit and need to grow your software’s capabilities.
Outsourcing can be used on early-stage MVP development, but it’s risky. At the MVP stage, entrepreneurs are typically focused on sales, marketing and finance, so they lack the time to directly engage and manage an outsourced team. Using a small internal team is usually best for building out your MVP.
Once you’ve established a product-market fit, and you know exactly what to build, outsourcing gets easier. You now have product clarity and your need is to get the product developed and on the market as quickly as possible. Outsourcing is a perfect solution. You can use the internal team that built the MVP to architect, design and manage the development, while the outsourced team can implement new features, fix bugs and staff up your testing team. Combined, you now have internal expertise coupled with outsourced bandwidth, and you can meet the needs of the business to stay ahead of the competition.