

Ask HN: Outsource or build it yourself - yosho

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?<p>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.<p>Thoughts?
======
byoung2
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.

~~~
yosho
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.

~~~
yannis
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.

~~~
byoung2
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.

------
floozyspeak
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.

------
ankeshk
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.

------
ScottWhigham
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.

------
Stasyan
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.

