I’ve been asked a lot lately about my experience outsourcing web development, so I thought I’d share my experience. At this point, we’ve worked with just under 10 contractors, both designers and coders, to assist our two-person development team.
To be clear, I have only limited experience in programming (I was an engineer with some coding experience, not a web guy). The core functionality of our site was built by our CTO and Algorithm Developer, while we outsourced 1) the front-end design and build, 2) several other bolt-on programs that could be incorporated later to our site.
If you’re building a web business, one of your founders must be technical to understand and manage your contractors – you shouldn’t be outsourcing your entire website.
However, contractors can be an efficient way to get your site up and running more quickly or “rent” expertise (graphic design, iPad development, etc.), though you may have limited resources.
POPULAR Outsourcing Websites
Typical websites people use to quickly find contractors include:
- Find hourly/project workers: oDesk , eLance , Freelancer, Rent-A-Coder/vWorker
- Post a design project and have contractors submit work to win your payment: 99Designs , Crowdspring
- Turn designs into code (HTML/CSS): Psd2html, HTMLBurger
I’ve used oDesk and Freelancer to find hourly workers, 99Designs for design and HTMLBurger for coding.
TIPS ON SCREENING HOURLY/PROJECT WORKERS
Beware especially of high-ratings / low # of jobs – Ratings are often pretty worthless. Many of the highly-rated people you’ll find on oDesk are salespeople with coders behind them. They’ll promise anything, give the job to a coder who may not have any expertise in that area, and manage feedback so that they always have a near five-star rating. Once they screw up, they’ll create a new username.
Individuals vs. Organizations – However, there are many successful organizations (i.e. salespeople plus coders) on oDesk, with tens of thousands of hours and great user comments. I haven’t yet been successful with an organization – in large part because of the problem above, and also significant communications lag going through a middleman (the salesperson) who’s often also working as a translator. If you find someone whose username is XYZ but answers emails with name ABC, red flag!
If it’s too good to be true, it usually is – If someone says they can do *anything* for $3/hr, your hunch that it’s not possible is probably correct. The best freelancers I’ve used tell you that they’re amazing at certain things and not as amazing at other things.
Country – I won’t elaborate too much on this here, since I’ve had limited experience and can’t really make a good assessment. However, I’ve heard pretty common threads about particular areas of the world that produce really high-quality work, and others that are quite poor. I’ve had good price-to-quality experience and have heard very good things about Eastern Europe and the Philippines.
To Find the Right Provider – 1) Interview and 2) do a test job! – Giving all the work and large payments up front is often a waste of your time. Make sure you interview well, and then test the applicant’s relevant skills with a test job. Once they succeed, continue to give small pieces at a time. If they push you to give bigger chunks of work, you shouldn’t work with them.
My team hasn’t used hourly payment with contractors, because it gives them an incentive to work slowly, rather than get the job done by a deadline or risk not getting paid. As a result, we’ve only used Fixed Price jobs (this is an option when posting your job on sites like oDesk and Freelancer).
Find out what market price is – On my first job, I said, “if it can’t be done for $500, I don’t want it done, and no one will apply so that’s ok”. Looking back, this was pretty stupid. In fact, the worst developers ended up applying, and they all either quit or tried to raise the price mid-job. The correct way to do this is to search through current listings on the site you’re using (or similar) to understand the market value of a given job and the time it will take.
Also, be careful about milestones – If you set up a milestone payment, one tactic I’ve seen is that contractors try to 2x-3x the remaining price to finish the job. Then they threaten to give you low employer ratings via external email, hurting your chances of hiring top contractors in the future. Customer service won’t help, so make sure you have some reason to trust the coder you’re working with.
Getting Designs from 99Designs
On sites like 99Designs, you post a job description, price and duration, and people will bid with actual work – As before, you should check out the market price for the type of job to make sure you get what you want (e.g. bidding just $300 for a webpage will get you very few entries, though we bid just above that and were lucky enough to find two designs we loved).
You have to put up your money and fees ahead of time, but if you don’t like any of your options, you get your money back…of course, you have to ask a few times as customer service tries to give you various discounts and extensions, but in our experience, you get your refund.
Getting your Designs into Code
99Designs will give you PSDs, You will need to get it into code – One of the quickest / easiest ways to do this in an outsourced way is to give your PSDs (or sometimes even PDFs) to a company that can “slice” PSDs into HTML/CSS. There are a lot of companies that do this, including my personal favorite, HTMLBurger. Keep in mind, this will only be a clickable, pretty shell of a website. You’ll need someone else to make it actually do something.
Make sure you’re very clear on what needs to be separate and dynamic – Your PSD needs to be created such that every picture and every piece of text you want to be separate is created separately, and you specify to the Slicer you want them to act separately. For example, giving a poorly created PSD of Kayak.com to a slicer would yield a website where all the results are lumped together into one big picture, and you can’t change the text.
Hopefully, this was somewhat helpful. It would have been to me!