How to succeed with outsourcing
As a self-funded startup founder or a product owner in a small company with limited budget, developing an idea into a minimum viable product requires careful planning. You cannot prove whether the idea has legs without putting MVP in front of customers and investors. But building MVP requires building a team with diverse skills especially on a limited budget. You think you do not want an in-house team-at least not until the point you know you have a successful business model. In such cases, finding a trusted outsourcing partner to develop MVP seems like a good alternative. No solution is too complex or high value to be handled by an experienced outsourced team these days. Outsourcing can help you save time to focus on big stuff-your go-to-market strategy. That being said, it is easy to make expensive outsourcing mistakes if you are not careful. There are numerous stories about outsourcing going bad and how a co-located, close-knit team can build product with much more agility than remote outsourcing partner. Also in these days of agile development mantra of “Move fast, Learn, Iterate, Iterate, Iterate”, working with far-flung outsource team may seem counterintuitive, inefficient and slow. But there are ways to achieve cost-savings by outsourcing while maintaining quality and agility of in-house team, albeit with some acceptable compromises. Having worked on both sides of the aisle, I would like to share my unbiased, “no holds barred” view on how the company and outsourcing partner perceives each other at every stage of the relationship. I would also have suggestions on how to make such a partnership work for both sides. These views and suggestions are mainly for startups and small size companies planning to outsource software development. Understanding both sides will help you make an informed decision and also setup a long-term relationship for the benefit of all. For the most part, it is similar to starting a long-distance relationship and if everything works out well, eventually settling in a marriage, nurturing and growing your baby-your product, together.
Deciding to outsource
For a startup or a small size company, there are numerous advantages of outsourcing.
The most obvious advantage is saving cost mainly related to offshoring. Also the outsourcing partner can bring in specialized resources like UX Expert, UI Designers, architect, devOps engineers as and when needed and charge only for the hours spent. Based on previous experience of work done for other companies, the partner can help jumpstart work by reusing some of the components. The partner can also bring experience of working with different cloud hosting providers, their comparable costs and tips and tricks to save them. Other obvious cost that is saved is the setup and administrative cost. The company does not need to commit itself to setting up an office with a large and costly team before proving market viability and getting their first investor.
Finding right talent
For a small company or a startup, it is hard to attract skilled developers when you have unproven business model with no guarantee of long-term viability, no brand name, no history of successful exits, and not enough money to pay them at the market rate. A right outsourcing team which is independent and responsible for product development allows entrepreneurs to focus on their major goal-selling to customers, partners, investors and potential employees.
View from outsourcing partner
For the view of outsourcing partners, working with startups or small companies is also challenging in many ways. For them, “Better, Faster, Cheaper” mantra is much more louder than established, large companies. Most of the time, the product being developed is a unique idea or a business model that needs to prove itself by standing apart from established ways and need to use latest technologies like machine learning. There is always a race to be the first to bring the product to market. Use cases may not be properly defined and need to be figured out together by both sides. Founder-funded startups do not typically have lot of money at the beginning. Working with startups also means no guarantee of long-term contract for outsourced partner. If the startup is successful in getting funding, the founders want to build their own team quickly to show to investors and if they are unsuccessful, they can severe ties in a snap and go away. Self-funded startups or small companies are cash conscious with the-cheaper-the-better attitude and so mostly bottom fish for the lowest cost. For outsourcing companies who provide quality service, this means a lot of competition, squeezed margins and high effort of convincing the worth.
Choosing right partner
Every company wants to a partner whose work is exceptional, whose integrity is high, and prices are fair.
Where to search
You can find the outsourcing partners in various ways-ask for referrals from colleagues, check sites like clutch.co, Behance, Dribble, and post on job sites like Upwork and Freelancer. Once you make a list of potential partners, you should check their website, reviews, portfolio, case studies and background of the team. Then setup a call to discuss your product.
How to decide
You can set up a call to discuss your product. The right partner will understand your business model, product vision and discuss ways to build the platform from the point of your customer. A partner who asks questions about your business domain, shows design thinking, talk about user experience as well as technology would execute well. Remember anyone can build something nobody uses, but it takes a company that knows what they’re doing to make a product for a winning startup or a small company. Generally for a small company or startup, keeping all the development team together if efficient and faster. So outsourcing entire development to one partner is efficient if you find one with an experienced end-to-end product development team. You may also outsource a specific area like user interface design or front-end development. But choosing a partner with demonstrable expertise in all areas including user experience, designing and deploying production-level scalable stack, deep knowledge of latest front-end, backend technologies, cloud deployment, DevOps, automation, analytics, and machine learning can bring skills on demand. Outsourcing domestically in high cost-of-living countries would be more expensive than having an in-house team. Choosing more expensive developers from low living cost countries still results in bargain prices without compromising quality. If you are a small or mid-size company, choose a partner of similar size. A majority of outsourcing companies that work well with startups or mid-sized businesses are small in size. Large companies do not typically outsource to smaller companies, not just because of their ability to expand quickly, but also for the fear of their long-term survivability and lack of guarantees etc. In turn, large outsourcing companies chase after big revenue deals and do not want to work with smaller companies. Having a few niche clients, small outsourcing companies move faster and tend to give focussed attention to each of their clients. Pay attention to how partner discusses requirements. They should be talking to you until they clarify some hidden points and industry aspects. Communication skills and well-defined, agile process play a huge role shows the quality of outsourcing partner. Marketing material can be tricky, but a few conversations and also examining a company’s digital footprint tends to expose the pretenders. Finally integrity and ethics on both sides, though hard to judge at the start, are cornerstones of in any long-term, successful relationship.
View from outsourcing partner
For small outsourcing partners, typical sales and closing cycles are long due to excessive competition. Companies keep on shopping for the right partner and typically bottom fish for the price. Any outsourcing partner would like companies to respect their time and make a quick decision. Typical startups or small companies are in a hurry to execute but should have a reasonable expectations on timeline. Small outsourcing companies in high-demand typically have very few developers on the bench, and so can take up only a few new projects without ramping up their staff. They like to work with companies who pay their worth and also show long-term commitment. t is in the interest of outsourcing partners to have startups working them succeed so they can extend their engagement into a long-term partnership.
Estimation and Cost
When thinking about outsourcing, the first thing in your mind is cost. So much so that sometimes a first-time self-funded founder after describing his idea in a few minutes immediately asks for approximate cost to develop it.
A good way to get proper estimates, timelines and costs from the partner is to define all your use cases for the product with clear “Done” criteria. Give them specific requirements, walk them through your ideas, your business model, your goals and expectations, talk about features, technologies, methodologies, roles, and so on. An experience partner provides breakdown of time estimate by hours for each use case and number of team members needed given expected duration of the project. The estimate would also include time for user experience and design all the way to deployment and publishing of app on the app store. Such an estimate, along with hourly bill rate for each role gives you approximate cost. They can also help you trim them down, focus your MVP and prioritize some of the case post MVP so as to fall within your budget.
Fixed cost vs hourly cost
Fixed cost is great if you are very confident that you’ve identified all the features you need, they’re well thought through from a business, user experience and technical perspective, and you expect minimal changes or unexpected scenarios to arise. The outsourcing partner, in this case, is taking on the risk of unknowns and eventual friction arising out of any disagreements on the scope. A good practice is to add scope of work in the agreement to avoid dispute. The agreement should also document any agreed-upon payment installments based on milestones. The reality is that very few projects have that level of foresight upfront. Software creation typically is a very iterative process that requires ongoing, often unforeseeable, adjustments to stay on the right path. In a fixed cost scenario you’re forced to either stay on the wrong path with same budget, or to execute change orders which increases the cost but allow you build the product you actually need. Alternately, if you’re willing to give up some financial certainty in exchange for a better aligned product-then a time & material type approach can be an even better fit. This path is all about maximizing team efficiency. In this approach it is important to make sure you’re able to expertly manage the outsource partner by providing clear requirements, quickly resolving roadblocks and staying ahead of the team’s needs. The risk is shifted onto you as the client, but the rewards (and cost savings) are potentially the greatest here as well. It also allows for greater flexibility in development and is agile-orientated. A good partner would demonstrate constant progress according to aligned with agreed upon milestones and can justify deviations based on any changes to requirements. One middle ground could be to get an approximate estimate based on initial discussion, pay per hour, but also decide a cap on number hours of work to pay every month or per sprint for each role. This allows flexibility of time-an-material while giving certainty of fixed budget. In all the cases, make sure to document milestones in the agreement or early in the process and ask for demonstrable features at the end of each milestone.
View from outsourcing partner
Fixed estimates based on initial scope particularly for startup with a new product idea are highly risky for outsourcing partners. They have a burden of making payroll with fixed cost pricing and high possibility of scope creep during execution of such projects with eventual disputes around charging for additional scope. Good partners are in demand and don’t have a lot of bench time. They crave monthly recurring income to make developer salaries while fixed cost projects causes variable, unpredictable revenue stream. Fixed costs also require companies to pay in milestone-based installments with some payment upfront. Partners also take default risk particularly with self-funded startups, if any plan changes on the way or the idea does not survive MVP cycle. A lot of times, outsourcing partners are offered revenue share arrangements or equity-based compensation in lieu of cash, particularly from founders of self-funded startups. Most of these offers are very well thought out from entrepreneur’s point of view but are problematic for the partner. Firstly ideas by themselves, are a poor equity and partners do not have expertise on how to build something and not on whether the idea is worthy of building and team is capable of making it a business, a mindset of an angel investor or VCs. Secondly equities converting to hard cash only if the business is successful and typically takes multiple years. Outsourcing companies have hard running costs and need to make payroll every month and so do not have appetite to take such a risk.
As any good manager knows, trusting your team and allowing them independence is a key to long-term success. This principle also applies to outsourced team. A good partner with enough trust, independence and right oversight without micromanagement, would give you their best while allowing you enough time to focus on other parts of your business. Set clear expectations with use cases, scope doc and if you have chosen well, the outsourcing team should be able to deliver with periodic oversight. You can focus on user experience, go-to-market, selling concept, product and plan to investors and outsource technology. If you are a founder with a tech background, you can act as a product manager and tech lead to verify internal implementation and quality. For a non-tech founder, the key is setting up repeatable process for each sprint-kick-off meeting, continuous delivery and deployment process with test automation, and demo and retrospective at the end of each sprint. A audio or video call once or twice a week to communicate sprint progress with the team allows to timely intervene on any blockers. A 15-minute standup with entire team every day can also be useful to track daily progress.
View from outsourcing partner
Some companies use SaaS software that install spyware to track every mouse-click and keystrokes of outsourced developers and in some cases even snap pictures using webcams for the hours charged. Such practices, where outsourced partner is looked at as cheap hourly labor, not to be trusted, if continued for a long period, is not conducive to fostering healthy long-term relationship. An experienced outsourcing team with high integrity feels more responsible and invested in the product when they are trusted with day-to-day execution and not micromanaged.
Transition to in-house team
A typical agreement with outsourcing partner includes a clause to provide support between one to three months after development is over. During the initial development phase, there not much thought given to how the development will be slowly transition over to the in-house team. Typically such an uncomfortable discussion with outsourcing company is postponed till the initial development is complete. Sometimes even the source code is kept completely in the control of outsourcing partner till the time comes for any transition which can cause complications during transition. If the business team is on-boarding customers during MVP development and sees enough traction, the product is ready to scale to the next level. In such a case, changes to current features based on customer feedback or new feature requests based on market discovery start pouring in. The company needs faster turn-around times, reduced communication issues and thinks this can be resolved with more in-house control. If the founding team is pitching to investors, they would like to see a strong internal tech team. This creates a catch-22 situation for a typical, early-stage, self-funded startup where there is no significant revenue and no funding but need to fund an internal team quickly to achieve it. It takes a while to build a strong team and then transition them to the existing product. During MVP phase, entrepreneurs try to stretch every dollar till funding and have wait-and-watch approach for such difficult decisions. So when the time comes for transition, some companies might evaluate desperate options like luring away developers from outsourcing partner even with non solicitation clause in contract. For companies, the process becomes easy if these discussions are started early. A startup founder should begin these discussions with outsource partner as soon as they start seeing enough traction or are near to closing their investment round. There are three distinct ways to achieve a proper transition.
You can acquire an entire outsourcing team to take your product forward. This works well if the team is small and have very few other customers. This can be achieved progressively from partner relationship to retainer plus equity to eventual acqui-hire. This way you have a way to judge the technical capability and cultural fit. In the longer term the outsource employees should also be contractually bound to join you full time in the event of another round of funding or exit.
With BOT model, you get the benefit of a trusted local partner to setup and run your subsidiary efficiently for a time period. This needs to be discussed and setup from the beginning so that the team which is hired is aware of such arrangement. This works well for a mid-size companies with sufficient funding or committed clients. The partner can setup a development center according to your requirements and specifications in a phased and carefully managed process. Financial and the operational ownership of the project stays entirely with the company. After the completion of the decided span, the partner hands over the assets and the operations along with manpower to the company.
Build internal team
The most common approach for companies is to hire internal team and transfer tech to them while continuing the engagement with the outsourcing partner. You need to find an engineering team lead, and use that person to help grow an in-house team while using the offshore team in parallel to move the product forward. You can continue to use outsourcing partner to augment your internal team. This allows you to bring the highly specialized outsourcing process in-house allowing you to control every aspect of your product development while still capitalizing from all of the benefits of tapping into the best-of-the-best in the global workforce.
View from outsourcing partner
Outsourcing partner benefit from a long-term relationship with their clients. If any atypical outsourcing arrangements are discussed and clarified early in the relationship, partner can setup proper internal structures for a long-term success. Being a part of successful product team and seeing early traction is not only professionally satisfying but also can start a long-term relationship with the company for mutual benefit.
This article provides guideline for outsourcing. Do you have outsourcing arrangements that worked well?