Not every project or idea you want to develop can be built in-house. Your team gets excited about extending your product to emerging platforms and building entirely new products, but it's hard for them to innovate when they're focused on operating and growing your existing business. An outsourcing partner helps you accelerate the design and development of your new software product by focusing on the needs of your customers and the desires of your stakeholders.
The open source, SaaS and cloud movements drastically reduce the capital required to start your new software company. Building your first version product for a single platform like Android is straight forward, but once your product gains traction, you're expected to extend your product to work across smartphones, tablets, laptops, desktop computers and sometimes smart TVs. Outsourcing helps you save money when your customers want your product on every platform.
If you're part of an enterprise software company, you likely get so busy fulfilling custom feature requests that you don't have time to build core parts of your product vision. If you're a startup founder, you may not have enough money to pay full-time employees to build web, iOS and Android apps. In both these cases, outsourcing can help move your product towards its next major release.
Well-managed outsourcing companies help you fill in the gaps, building what you need when you need it. The best outsourcing companies help you define your product roadmap and identify where you can improve your product's user experience. While there are many advantages to outsourcing, it's important to know when it's a good idea to outsource and when it's better to complete your project in-house.
Risk Vs. Reward
Before you decide to outsource your project, ask this question: is this worth it? Not every idea is worth pursuing, and not every project can be outsourced.
Are you extending a core product or service? Are you building a new product for a new industry? Are you building your startup's first version product? If your answer is "I don't know," you need to spend some more time thinking about your product's purpose. Understand your target market and the problem you're trying to solve before you design a single screen or write a single line of code. Too often, companies big and small don't have a clear understanding of the problem they're solving, so the budget they spend on outsourcing is wasted.
Depending on what problem you're trying to solve, there are cases where it makes more sense to build your product in-house. Are you looking to outsource the maintenance and development of your legacy web product written in ColdFusion? This isn't a good task for an outsourcing partner because it could take outsourced developers weeks or months to become familiar with your legacy system and code base. On the other hand, if you want to rewrite your ColdFusion product with a modern language like Ruby on Rails or Python, your project is a great candidate for outsourcing.
Great outsourcing partners tell you when your project isn't a good fit for outsourcing. They also design engagement models that de-risk your project.
How to de-risk your outsourcing project
While there are many myths as to the reasons why outsourcing projects fail, you'll be sure to have a successful engagement if you follow these six guidelines.
1. Define your product Until you put pen to paper and suss out the details of your product, an idea is just that, an idea. Write down your requirements. Revise them. Ask customers what they think and repeat. If you're a visual person, make sketches on napkins or computer paper. Create bulleted lists and organize your thoughts. These details help your outsourcing partner understand what you want to build and who you plan to sell it to. If you don't have a well-written set of requirements, your project will go over budget, and you won't be happy.
Be sure to call out the features that are core to your product's value proposition. For example, don't hide "needs video chat capabilities" as a single bullet point in a 20-page requirements document and expect to get an accurate estimate. If something is a core feature, your outsourcing partner expects you to have a lot of written requirements related to that core feature.
You'll run into problems if you send incomplete requirements to an outsourcing firm and have specific expectations about how your product should look, work and feel. A bad software outsourcing firm gives you revision after revision, but never gives you a product you want or need. A good software outsourcing company helps you eliminate scope creep (i.e. nice to have features) and delivers the features you need to acquire your first customers. Use this questionnaire to understand the information your outsourcing partner needs.
2. Avoid the lowest bid You may be tempted to select the lowest bid you receive, but don't be fooled because you'll save yourself many headaches by paying a little more for a quality development firm. There is always going to be someone who will tell you they can build your product for less money. Don't fall for it.
Bids for your same set of written requirements could range from $10,000 to $300,000 or more. Each company bidding on your project uses different methodologies, hourly rates, and assumptions to come up with the bid they present. Understand the assumptions each development partner uses and ask questions if they don't detail assumptions in the proposal you receive. Your lowest bidder will only deliver the features you've detailed in writing, and they'll use developers who are fresh out of college to deliver those features.
You don't have to select the highest bid either. Often, the best outsourcing partner is somewhere in the middle. Review products in the portfolios of the companies you receive bids from. Do you like the products they've built? How do they make you feel? Would you be proud if you were the owner of a product in their portfolio? Reviewing product portfolios is the best way to find a capable outsourcing partner.
3. Lead with design
Whether you hire a local designer or you work with an outsourcing partner with excellent design capabilities, you should always lead with design. A complete set of high-fidelity user interface (UI) designs act as a visual spec, which tells your development team how to build your product. Nothing is left for them to interpret.
Backend engineers understand what APIs need to be developed and front-end engineers understand the exact fonts, buttons, colors and design elements that need to be implemented. By selecting a designer who goes the extra mile to create end-to-end mockups for your entire product, you eliminate a lot of risks because there is no confusion about what your outsourcing team needs to build.
4. Follow an agile development process - Agile development brings more transparency to the outsourcing process because you receive development builds of your product every one to two weeks. Once you start testing completed features, you may want to make minor tweaks to the requirements defined during the design process.
There's nothing worse than giving your written requirements to an outsourced software development company and getting back the wrong product a few months later. Agile development allows you to work directly with your development team and see your product vision come to life. Your feedback during the development process makes your end product better.
5. Assign ownership - Give your outsourcing partner ownership of your entire product or an entire piece of your codebase. The reason we recommend this is because it avoids delays related to merging different versions (branches) of your mobile, web and backend applications produced by different developers in different time zones. If there are a lot of conflicts when a developer tries to merge different branches of your product on GitHub, it can take hours or days to resolve all the conflicts properly. These delays extend your projects overall timeline and force you to change your release date.
When your outsourcing team owns your entire product, this is a non-issue. The same is true when your outsourcing team owns a piece of your codebase like the Android, iOS, front-end web, administrative or backend application. You only need to worry when you have a local US developer and an outsourced developer who both work on a single app's codebase.
6. Maintain open communication - One of the issues with outsourcing is communication. Not just what is said, but when it was said. If you use an outsourcing company, have an open dialog with them during the entirety of your project. Project management tools like Basecamp, Trello and Jira help you move communications out of email and into SaaS-based tools. Skype, GoToMeeting and other video conferencing tools help you meet your team to discuss the progress of your project.
Open communication should start from the outset of your project. When you contact a potential outsourcing company, be clear about your goals and needs, and confirm they're clear about how they'll turn those goals and needs into a final product. You and this company will be partners for the duration of your project, so it is imperative that the lines of communication stay open, honest, and most importantly active.
Top reasons to outsource
Outsourcing is purely about two things: saving time and saving money. All other considerations and questions still boil down to these two things on a fundamental level. Below you'll find four more specific reasons why you may want to outsource.
1. You need specialized programming - The biggest reason to outsource your project is that it falls outside the knowledge and technical expertise of your in-house team. For example, if you need to develop an Android app, but your in-house team only knows how to build web applications, you'll save time and money by outsourcing the project to an Android development firm.
When you look for an outsourcing partner, you need to find companies with extensive experience developing products with the programming languages, frameworks and libraries your project requires. This means looking up reviews online and calling up several companies to understand their areas of expertise. While outsourcing to an offshore development company is cheaper overall, you still need to do your due diligence when selecting a company. You hand over part of your business's product roadmap to another company when you outsource, so it's important to understand their track record of success.
2. You have a limited budget - It's 3 to 5 times more expensive to develop software in the United States when compared to offshore outsourcing alternatives. You can build more features, iterate more and build for more platforms when you work with an offshore development firm because their hourly rates are much lower.
When you have a limited budget there are only two ways to keep your project within budget: you can either reduce scope or reduce the hourly rate. If you reduce your scope to the point where you no longer provide value to your customers, then you need to think about finding a good offshore outsourcing partner. In general, good offshore firms start at around $25/hour for engineering.
3. You have a tight timeline - Do you have an upcoming conference deadline or event where you need to demo your product? If so, outsourcing your product's development may be your only option. Recruiting top web and mobile developers today is expensive and time-consuming, and it can take even longer to form a team that works well together. Good outsourcing partners have team members who work together on numerous projects, enabling your project to move faster.
Your outsourced team has processes, and most importantly they've built products like yours before. They're subject matter experts who can guide you through the dos and don't of everything from responsive web development to mobile app development to Apple TV development. Your outsourced designers and developers accomplish more in their first few weeks then you'd be able to achieve with new team members in their first few months.
4. You have too much work - If you are thinking about outsourcing a piece of a larger in-house project, remember that coding requires collaboration and cooperation between your team and the team of the outsourcing vendor you select. As mentioned earlier, it's best to hand over complete ownership to one or more pieces of your app. Give your outsourcing partner your mobile apps or your web app or your backend application. Give them something significant and let them focus on delivering the features and product you need.
Should you or shouldn't you?
Even if you have a project completely scoped out through written requirements and a clear understanding of the capabilities of potential outsourcing companies, you might still be debating if you should hire or outsource.
The way programmer's think about technical challenges is shaped by their past. If you decide to outsource, make sure your outsourcing vendor has a clear understanding of your own team's abilities and background and vice versa. You don't want to outsource your project to a team who doesn't understand the problems you're trying to solve.
The biggest question you need to answer for yourself, with all of the knowledge you have gathered, is "is outsourcing right for you"? If outsourcing your project helps you meet your budgetary or time constraints, then it may be the right option.