I get asked by a number of founders how I feel about outsourcing or offshoring development. Call it what you like I have never liked development that isn’t done in house, and I don’t advocate it for startups because I think it sets a bad precedence. You want to start building a team that is invested in your startup’s success, and the best way is to breed talent in house that gains the knowledge base and war scars from working with you closely everyday.
I’m especially against outsourcing for non-technical founders. It’s already hard for most technical founders to forsee and estimate how long it takes to build a product now amplify this challenge for those who are non-technical…
The two other reasons I dislike it are that it adds a logistical challenge in the early stages of product development (i.e. time zones, slow bandwidth and cultural nuances) and it makes it hard to brainstorm and iterate on a daily and weekly basis. Here are more reasons that bolster mine.
Now having listed all my dislikes I actually took a risk this year, and outsourced some of the development work for my startup. However, I setup some key criteria to ensure a successful outcome.
First I did not go with an IT shop.
I picked individuals so that myself and my team could directly communicate with those executing. The first person was through oDesk, my technical co-founder had cherry picked a developer from the Ukraine. The second person was a designer I had been chatting with on Twitter who was based in Sri Lanka.
Second I had them each work on projects that were not in the immediate product pipeline.
I did not want them working on projects that were mission critical, this is really important. Not tying them to specific deadlines freed me from having to worry about shipping and I could still gauge the quality of their work. I still gave these individuals deadlines but I kept my in house team charging ahead with the important product development deadlines. I also made them adhere to our best practices. The developer had to follow weekly sprints, follow TDD (test drive development), and only checkin code after a pull request (code review).
Third I negotiated rates and created deliverable deadlines.
I know it seems silly to negotiate given that outsourcing is already less expensive than development at home but I negotiated because I wanted these individuals to prove they could build under constraints. Why? Well if they did end up being fantastic I’d want to hire them full-time for my startup, and I’d want them to get the full experience of what its like to be at a scrappy startup. Never deprive people of a true startup experience
Fourth I actually did reference checks.
Once again this isnt any different from what you would do with an in house full time employee. For the designer in Sri Lanka I gained a wealth if knowledge about his skills and abilities from 2 of his references who wrote me very long emails vouching for the quality of his work.
Fifth I didn’t put them on payroll.
I know people worry about payments, foreign exchange rates, blah blah blah… I couldn’t be bothered so I made them manage their own invoices and paid them with a credit card.
Sixth I didn’t manage either of them.
Instead I had my in house team manage these individuals. Once again I couldn’t be bothered have additional reports and 1-1s with them… But really I had two reasons:
First if I was going to hire them fulltime eventually then they were going to be interacting with my in house team and I wanted them to be accepted early on.
Second the project would have been done by my in house team anyway so why not just have them communicate the project. This also enabled me to test the management skills of my in house team. A two-fer!
I’m happy to say that the developer after 6 months has become an amazing addition to our team, and the designer just successfully completed the redesign of our landing site!
I would not have outsourced prior to this year, and having an in house team that I could rely on. If you’re interested in outsourcing put some thought into it. Yes it can save you a lot of money, but only if you’re smart about it. You have to think about how you are going to manage the outsourced team or individuals. Otherwise you’ll end up spending more time redoing things, and we all know that time is money!