Entrepreneurs always look for hacks to do things in a cheaper, faster and more efficient manner. Sometimes, though, the perceived savings aren't worth the ultimate cost.
I'm a serial entrepreneur. Over the past several years, I've successfully built and scaled both on-site and remote teams for my startups. I've also burned my fingers trying to outsource software development.
I'd intended to contract with a few developers to code certain sections of the codebase so the larger team could hit our release deadlines. We were in the bootstrapping phase and thought it seemed like a good idea. It turned out to be a disaster. Here are the key reasons why.
1. Different mindsets lead to misaligned goals.
The venture was my baby, and I was fully committed. But to the software developer, we were just another client -- and a very small one, at that. When a large client increased its requirement, a resource crunch meant our project suffered delays.
Moreover, our hired experts always were trying to convince us to build more features. The company benefited from scope creep while we became distracted from our minimum viable product (MVP) approach. Our two companies had different incentives, and this often led to working at cross-purposes.
2. Contract negotiations can be complex and time-consuming.
I spent a great deal of time finalizing the contract with the software company, and my startup simply hadn't expected this loss of productive hours. We wanted to get off and running quickly. Instead, it took us between three and four weeks to define, negotiate and execute the contract.
To be fair, there are some valid reasons for budgeting several weeks to fine-tune a contract. There's no easy way around defining the scope of work, identifying each party's responsibilities and putting in place a service-level agreement (SLA). If the contract isn't well-thought-out, you'll have even bigger problems down the road. Entrepreneurs are wise to plan for this necessary time lag, not rush through and trust everything will work itself out later.
3. The quality might be hit-and-miss.
The quality of developers at outsourcing companies tends to be mixed. In my experience, the quality typically has been below average. Several developers assigned to my startup project didn't deliver what we needed. We had to haggle with the company to replace them, enduring a painful process that cost us more time and energy. To make matters worse, the code itself wasn't up to our quality standards and our codebase became fragmented.
4. In-house talent isn't proficient at managing outsourced project work.
Many startups ignore the fact that managing outsourced teams requires expertise and a special skill set. Outsourcing is a fundamentally different process from in-house development.
Few startups have a team member who has done it before, and this also increases the chances of failure. Outsourcing firms can gauge your inexperience. Unscrupulous companies might even exploit this weakness to hike their upfront time and cost estimates. To be effective, you'll need to master a host of challenging and complex tasks:
- Clearly define your requirements.
- Assign which modules will be developed in-house and which will be created by the outsourcing vendor.
- Plan smooth integration of codes in your master codebase.
- Plan and execute agreed-upon quality-assurance measures and procedures.
- Monitor timelines.
- Provide regular feedback.
Our startup felt confident going into our outsourcing adventure because our team included someone with prior experience managing external work. He still found it tough to oversee the project. Trust me: It’s not a simple proposition. I strongly advise against outsourcing software development unless a company has its own, in-house expert.
5. External issues have a domino effect on your organization.
When you run with a small team, issues don't remain siloed. If your outsourced project isn't going well, the stress tends to impact other areas of your business. At the very least, it will be a huge distraction to your overall operations.
Delays and quality issues are normal and expected with outsourced projects. Yet startups aren't often aware of this fact and don't plan for how they'll mitigate the fallout. When issues started surfacing with our outsourced project, it had a ripple effect. Our CTO was directly involved with the outsourced project and spent a disproportionate amount of his time on project management. As a result, internal employees didn't get adequate time from him, and they started missing their deadlines.
Morale suffered, and workers started slacking off. The tech team's delays, in turn, caused setbacks in our product and sales divisions. This was particularly frustrating because we'd promised additional functionality to our early clients and risked losing them if we did not deliver. The outsourced project went over budget -- something we later realized is a very frequent occurrence. Funding concerns put extra pressure on us as an early-stage startup.
Here's the takeaway: We spent much more time, money and effort than we'd expected, and we ended up either not using or rewriting most of the code created by the outsourcing company. In hindsight, it was a mistake. Every business' situation is unique, and it might work for some organizations. But the chances of thing going wrong are higher when you control fewer elements of the whole, and that's especially true for startups and smaller organizations.
The next time you consider outsourcing your company's software development, think again. Or at least think about these lessons learned. They'll help you go in with open eyes and a more realistic picture of what you can achieve.