Ask HN: Outsource or build it yourself

4 points by yosho ↗ HN
I know most of you are probably technically advanced enough to build a full scale website yourself. However, what if someone's technical expertise isn't quite up to par. Would you recommend them trying to learn everything and build the site themselves? Or take the easier route and outsource the programming?

I'm curious to hear the pros and cons of in-house vs out-sourced. I've always been a fan of doing the programming yourself because you know the product inside and out and you're able to customize it exactly the way you want. But I've heard that the cheap labor costs offshore, and freed up time to focus on other aspects of the product could make outsourcing a very viable option.

Thoughts?

8 comments

[ 2.3 ms ] story [ 12.8 ms ] thread
I come from family of software developers: my mom's job -> they outsourced some of the development. It was the biggest mistake they've ever made. They paid hundreds of thousands of dollars and they got something that did not work.

Outsourcing is tricky. You are not dealing with developers eye to eye. Plus the time difference will slow down the whole development. You write them e-mail during your day time, they respond during theirs.

Why don't you hire a developer from your town ? Or you even might get a recent graduate who will be willing to work for some stock options and pocket money. Since they live in their parents basement, and due to recession they have trouble finding a job.

Hmmm - I've tried offshore development deals and, after my 3rd or 4th one, I finally got a decent one. The problem is that I blew through about $1500 first (which was a significant amount of budget at the time). I'd say that there are cheaper labor costs offshore but not "cheap labor costs offshore". However, you must be savvy enough to ensure they are not designing a system that only they can modify/understand. You'd have to spend $5k to get it built and then to find out that they want a $15k/yr maintenance contract.

There's always Moveable Type or Wordpress for simple sites.

I own an outsourcing company with a staff of 20 in Cebu, Philippines. They handle web design, programming, data entry, etc., for small businesses, including my own projects.

I would say that depending on what your project is, you'll find that there are some things that work well with outsourcing/offshoring, and others that don't. I doubt you could suddenly learn how to program well in a short time, but you would probably have as difficult a time instructing a team of programmers if you don't know it yourself.

You can learn enough to build a rough prototype, and hire programmers to fill in the gaps, because you'll have the most success the simpler the outsourced tasks are. Here is how completely outsourcing a simple project might work (to keep costs low when hiring programmers, stick with LAMP):

Let's say you have an idea for a cool web app that lets people looking to lose weight input foods that they usually eat, and the system will suggest lower-calorie alternatives.

Since you know basic design you create a rough design and a list of specs for the different pages and post it on www.designbay.com to get a design. (~$200)

You find a design that you like and you send it to www.psd2html.com for coding into html/css. (~$300)

You know enough about PHP to start writing some code to make it interactive, so now people can fill in a form and submit it, but you need help with the back end. This task is much easier if you take the time to learn object-oriented PHP, so that changes just have to be made to the classes. (~$0)

Here's where you turn to www.elance.com to find a PHP/MySQL expert who can take the USDA calorie database (a list of every food and the nutritional content from the label) and put it in MySQL. He also writes some code that takes the user's food list and finds lower calorie foods to swap (very easy to do with a few SQL statements). (~$450)

Obviously this is a very simple example, and I left out much of the detail, but you get the point. Of course, depending on how hands on you want to be, you can get this done much cheaper. Just don't expect to be able to describe the project and have someone build it from scratch for anything less than a small fortune.

Thanks for the reply, that actually makes sense. Using a combination of the two to get something done more efficiently.

I guess it really does depend how hands on you want to be vs how much you know.

It is a good strategy and I have used it also with some success. However in most cases it is a deeply frustrating experience, mainly due to communication.

Any software application (unless you wake up one morning and you can write a perfect spec for it), is a deeply iterative process. As you develop you tweak and tweak and refactor and refactor. Actually any Development goes through such a process.

You will be better off by :

(01) Building up your skills so you can manage the process better

(02) Finding a developer in your own area, where you can communicate on a one to one basis.

Personally I always try to outsource the design. However, it took me a long time to find the right people and I pay top dollar for it. At the end of the day, it is worth it.

I definitely agree...I definitely had a lot of trial and error with offshore teams.

Before I found the right ones in the Philippines, I worked with programmers and designers in Mexico, Argentina, Brazil, Ukraine, Belarus, India, Canada, Ireland, and Russia.

The most talented OO PHP programmer I have ever worked with was from Belarus, but it was nearly impossible to pay him because the government makes the recipient sign an affidavit that the money is coming from a blood relative. In the end I had to wire the money to Latvia and he could withdraw it using an ATM card in Belarus.

I've found that some of the best programmers (particularly for .NET) are in Eastern Europe, but the English is not so great. Latin America is great if you speak Spanish (like I do) because the time zone is perfect for the US. Same with the Caribbean for timezone, but their infrastructure isn't the greatest, especially with hurricanes. The hurricanes are a problem in the Philippines, it's a risk worth taking if you have a backup team in another country.

Outsource. But outsource smartly.

Hire 2 companies / freelancers. One to do the work. And one to audit the work.

Outsourcing will save time. And if you select the right people, money too. (I am based in India. Can help you find the right people over here if you so desire.)

Re: learning coding on your own

Do so only if you are good with it and like it. Don't do it because you have this website idea.

Case in point: if you own 2 restaurants. One does average business. One does dismal business. Should you try to improve the dismal restaurant or the average restaurant?

Almost always - you'll get better returns if you improve the average restaurant to become an excellent restaurant.

Replace restaurants with skill-sets above. It pays better to work on your stronger skills and outsource your weaknesses.

The problem with outsourcing is all the unknowns, language barriers, weird stuff, and the fact it can be awkward and uncomfortable and its harder to tell if anyone is gonna take advantage of you or not. Having said that, if you've done it, and earned your chops its a kick ass way to make stuff. BUT if you're starting out i'd do 2 things, one go local, go intern, and figure out that cost. Two look for a person who's done outsorucing to help you manage the project, you almost need them and their expertise more than just the coder on the outsourcing end. That guy/gal with lots of experiencing outsourcing is more valuable then anything- they know to get stuff done and under budget.

In the past 8 months I've made 11 things i would of never even begin to know how to make and would of cost me 10-20k if i did them with local/national talent. Theres just no way i could afford that.

My learnings from outsourcing.

An outsourcing manager is critical. This frees you up to focus on what you should be doing, using that time/money wisely into making something, hopefully profitable. Set expectations accordingly. Do not expect it to be perfect. Iterate often. Be explicit on what you want the experience to be of whatever you are making. Mockup everything, story board the experience of it, give them as many visuals as possible, point them to sites and say like that, never ever just give them specs in a text file, otherwise you are set for an adventure in waste.

Challenge yourself, your manager and whoever you hire to do it less. Document your code, back it up, and keep going.