Startups & Offshore Outsourcing
Should you outsource your development offshore? This is a question I get asked often both by entrepreneurs and consulting clients. Serial entrepreneur Darren Herman has an excellent post today on when to use internal and offshore development teams, and I’d like to add my own perspective. I’ve had great success outsourcing for projects large and small, but the success really depends on the specifics of the project, your ability to oversee it, and the quality of the offshore outsourcing firm. Ask yourself these questions before outsourcing a project:
Can this project be completely specified in a detailed design document? You need to prepare detailed use cases, wireframes, designs, and software specifications that the offshore firm can follow. Don’t outsource projects unless you know precisely what you want, upfront, down to the last detail. If your project is not the type that can be completely specified in writing, it’s not a good candidate for offshore outsourcing.
Do you have the knowledge to oversee software development? I’ve seen too many non-technical people try to outsource a project on their own, only to get useless, buggy garbage back because they don’t know how to evaluate the work provided. Make sure you have the expertise to review and test the work, or have a local CTO or technically-savvy project manager who can oversee the project on your behalf. If you’re a business guy and you can’t tell which offshore programmers are good, find a technical person to help you.
Is technology the key value driver of this project? Or just an enabler? If the technology or user experience is part of the core value that your project delivers, develop it locally. If the technology is just an enabler for some other business opportunity, it’s a good candidate for outsourcing.
If you’re in the software business itself, including all types of web-based software, technology is absolutely key to your product. You won’t see a 37signals or Fog Creek throwing a spec over to an offshore firm. Great software requires more than just implementation, it requires passion and craftsmanship. These can only come from a star programmer who’s fired up about your project.
You won’t get that when you outsource, because you’re basically hiring a body shop. You never really know who’ll be put on your project. Joel Spolsky makes many good points in his article Hitting the High Notes. Basically, he explains that the added quality a great programmer adds to your product greatly outweighs the added costs, because software (including web based software) can be distributed at next to zero marginal cost. It’s the same as hiring a star for a movie. Brad Pitt may cost millions of dollars, but he increases the movie’s appeal, and his cost is distributed over the millions of people who see the movie.
How often will the project change? If you’ll need to provide constant updates, whether to keep up with the competition in a startup environment, or to handle customer requests, develop locally. If your project doesn’t require constant iteration, and you can deal with longer development cycles, outsource it.
Are you innovating or merely implementing? To innovate quickly you need to iterate, experiment, and learn from your mistakes. Ideally you want the most talented software engineers, sitting in the same room with you, using an agile, iterative development process. You’ll also want them in touch with users, to get direct feedback that can influence product development. In these situations, local developers are a must.
What is the size and capabilities of the offshore firm? You can outsource to individual freelancers, small firms, or large consultancies. Will they provide comprehensive project management, or will you have to micromanage them? Do they have proven capabilities in the technologies and platforms you’re using, or are they just saying ‘yes’ to win your business? Does their pricing seem realistic, or is it unrealistically low?
Are there conflicting interests? Compared with passionate developers, a third party offshore consulting company will never be as committed or motivated to see your project succeed. They may have many other clients to satisfy, and billable hour quotas to fill. Any consulting firm makes money one of three ways: 1) by billing hourly, 2) by setting a fixed project price and executing the project for less than that price or 3) on change orders. If you’re on fixed price, there’s an incentive for them to do as little as possible to make the greatest profit, or to underbid and issue change order after change order once they have your business.
Make sure your interests are aligned by choosing the proper payment model. If your project is more open-ended, choose to pay hourly. If your project is extremely well defined, with a clear functional spec, user flows, wireframes and designs, choose fixed price. Don’t choose the lowest price. You won’t be doing yourself any favors by getting an unrealistically low bid. Go over your project with them to make sure they understand its true scope.
Once you answer these questions for yourself, the best way to find an offshore firm is to look on eLance, RentACoder.com, GetAFreelancer.com, or similar sites. Offer a small test project, such as coding a basic script, to a number of companies, and compare the quality of the results you get back, as well as the experience working with them. And if you decide not to go the offshore route, there are a number of niche job boards, such as 37signals, TechCrunch, or NextNY to help find the star that will help make your project rock.
