Ask HN: Outsource or build it yourself
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 ] threadOutsourcing 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.
There's always Moveable Type or Wordpress for simple sites.
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.
I guess it really does depend how hands on you want to be vs how much you know.
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.
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.
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.
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.