There are a number of factors in deciding to outsource projects. Most people decide to outsource because the cost of hiring someone locally is too much, or they are having difficulty finding the right person for the job. These two factors are particularly true for startups I have run into with little or no technical skill, but an interesting idea.
Before You Begin Thinking About Outsourcing
First consider all of your options. Have you properly searched for someone locally that could help your efforts? I have had owners tell me they haven’t been able to find a technical partner or someone with that skill, but when I ask how they searched, they often haven’t put in more effort than posting on Craigslist or KSL hoping for a bite. You need to reach out people. Go to the local university, attend events, or Meetups to find people. Network like you would network for any other aspect of your business.
If you want to entice a software developer to work for equity and not money, just know that they have a marketable skillset that pays off, regardless of their skill level. They are also regularly approached, especially if they have experience. What will entice them most if money is not an option, is the opportunity to work with technologies that they would not normally get to work on. Most of their jobs are boring, they are working in 10 year old technology. If you are doing something cool and modern, this is a card you have on the table that you can use.
You are Going to Outsource, Now What?
The first thing you should do is have a solid idea of what you are going to create. If you are starting from scratch, this can be tricky. The verbal idea is not going to cut it when creating a fantastic product. If you want to drive development, then you need to provide a clear direction and set obtainable goals. One mechanism to do this is with mockups. I have seen successful projects done with Google Drawing on Google Drive, or use of tools like Balsamiq. Here are the steps I take in my initial design:
- Create a flow chart of what you want to do.
- Check the flow of your design to see if it is missing anything.
- Create a mockup of the layout (could be done on a napkin)
- Search the web for inspiration.
- Identify key areas of your application and break them up.
These items might sound scary, but most people have the capability and understanding of their product and what areas are needed most. If you’re building a website for example, you know you need a home page, about and/or contact page, product pages, maybe a blog or ecommerce. These are all distinct areas that you can break up and work on individually. All applications can be broken down in the same manner.
Searching for that Perfect Someone
Now you are ready to find that perfect contractor. You may look locally for an agency or group that specializes in contracting developers. You can also look on platforms like Elance and oDesk. Also, ask around. A lot of companies, small and large, outsource projects. They can usually refer great talent.
Stephane Kasriel, lead product and engineering at oDesk has some fantastic advice here.
“The right way is *not* to think of your remote team members as outsourcing, but as a key part of your team. Don’t do some fancy RFP to get agencies to bid for fixed price work – you’ll get exactly what you’d expect from such a relationship: it’s very strategic to you, and it’s just about money for your “partner”. Instead, carefully select each team member individually, and make them part of your core team. Then adapt your communication processes (lots of google hangouts, hipchat, skype, shared google docs etc) and your development processes (borrow heavily from the open source community). If you do all of these things, you’ll build a long lasting, high performing team that will create true competitive advantage.” – Kasriel
My personal experience has been that establishing an ongoing relationship with your outsource partner is crucial to it’s success. Once I had a few solid and reliable contacts, I always went back to them for more work. We have worked regularly with a wonderful company in India called Naico. They have fantastic communication, are very flexible and skilled. I’ve had such a great experience that I have actually traveled to meet “our” team in person.
The experience should feel like they are part of the team and not just a disposable resource.
Finally, Break Up Your Project Into Manageable chunks
If you want to succeed at outsourcing development, then you need to learn to break up your project into manageable tasks. Customers that keep the scope of a project high level, and constantly change the project to meet their current whims will never have a successful project.
By breaking up the project, you can see progress in your application. You can also work iteratively on the project to keep the flow and progress of the project, but also maintain a flexible approach that does allow for changes based on feedback. This also allows for delegation of tasks from your team and the individuals you are outsourcing too.
Marshall, with some of our Naico Team
-by Joshua Maag, CEO and Evil Genius Architect