Instead of hiring full-time programmers, it is often very tempting to turn to outsourcing. Sites like getafreelancer.com or rentacoder.com hawk a plethora of services- everything from graphic design to PHP coding. What’s more, once you post you project, you are sure to get dozens of bids at absurdly low prices, often as low as $30, within days. Outsourcing online may appear to be the perfect way to build almost anything. There are many benefits to outsourcing some tasks online, but there are also many pitfalls. Ultimately, outsourced labor can supplement in-house developers, but it cannot completely supplant them.
My first experience with outsourcing was a couple of years ago. It started with my idea for a web application that could scrape, aggregate, and analyze certain financial data. The idea was not big enough to launch a startup around it, or to hire a bunch of professional developers to build it. But it was also too big a project for someone like me to undertake–I have little coding ability. I knew that this tool could become popular in certain investing communities, but I did not want to invest significant resources in building it. Outsourcing was the perfect solution.
I began by posting a simple ad detailing the project on GetAFreelancer.com. Within hours, it received dozens of bids, most of them on the low side. However, upon reviewing the bids I found that most of them were spam bids- they did not reference the project whatsoever, instead leaving a generic “Our company can take care of every web development project” type ad. These junk bids plague outsourcing sites, and should be avoided. Outsourcing companies often act as middlemen — they decrease efficiency because all communication with developers has to go through them, and drive up costs. Instead, I opted for an individual who provided a reasonable bid, a quick timeframe, and listed previous expertise designing similar applications. I selected his bid, which estimated completion in three days and e-mailed him project requirements.
I received my PHP code three days later, as promised. However, the code was incomplete– it did not gather all of the data I wanted. A day later, the developer refined the project, but there were still problems. I had run into the biggest problem with outsourcing:it is difficult to communicate. The developer and I were in disparate time zones, and I had a busy schedule, so any kind of real-time communication was impossible. Thus, each minor change to the code took at least a day. I was in no hurry to bring my idea to life, so I waited patiently as the code was further refined.
Finally, the project appeared completed to my specifications. Eager to be done with development, I paid the developer and posted positive feedback. A couple of days after, however, I discovered a major bug — the script did not function properly in Internet Explorer. I emailed the developer, but he was unresponsive. As far as he was concerned he was done with the project — he had been paid, the transaction was completed, and he wanted nothing more to do with the project. In the end, I had to hire another developer to go through the code and fix bugs. The project ended up being both over time and over budget.
The main lesson I learned about software development from this project is that code is rarely, if ever on time and on budget. I had unrealistic expectations for outsourcing, and was punished for them by a prolonged project. I learned that outsourcing is best for small, simple tasks like design of a logo, a single static template, or even fixing bugs in existing code. Throwing a full application development project at outsourcers and saying “here, do this!” is much less effective, because any problems that come up cannot be addressed quickly.
Outsourcing is not a panacea for all of your development problems. Ultimately, if you want to build a successful web application, you will need a staff of full-time developers to maintain it. However, for quick tasks that are not mission-critical, or to fill some gaps in your application, outsourcing can be a very quick and inexpensive solution. Just remember to check on progress frequently, and address any bugs or problems before the project is completed.
Good Analysis.
From my own experience, I would like to add that outsourcing can be done with a decent budget even if it is your entire project.
I posted my project on Elance a few months ago and got over 20 bids. I took the time to interview all of the potential providers and narrow them down to 2 or 4 serious contenders before negotiating project scope and price.
Even that is no guarantee that it will ultimately be the right decision, but if that is the only way you can afford to launch your prototype due to a shoestring budget, then it is worth it. Another issue to look out for is that if you can afford it, make sure you hire a team that has done the type of work that you are looking for, and can show you their past work that are similar to what you need (speaking from experience here).
My outsourced project is still less than half way complete so I am learning as I go. One thing that I make sure I anticipate from the beginning is this: being a programming project, it won’t be on time and on budget, and I mentally added extra time and cost to my original estimate and agreement.}
As a project manager, i have many years of experience with outsourcing, i’ve been playing from both side, many time as a freelancers and many times contracting the freelancers.
BE aware that outsourcing isnt the same as offshoring.
Outsourcing is delegating an internal project to an outside entity. This entity (the freelancer) can be local and you can meet him and in case of bad experience you can sue him if needed.
On the other side, offshoring is outsourcing to another entity in another nation which mean are able to lower down the cost than outsourcing, but take in mind that wont sue the outside entity (freelancer) if its a low bid or even wont be able to meet him and personally explain him the nature of the project.
After years of experience, i always go with outourcing. you not only can meet with your freelancer and set the standards, sign an agreemen and basically have a better impression of the man you working with but you also control the overall price of the project which mean you CAN be on price and on time if you know how outsource and manage your projects or part of your project.
I would also advise you to have some kind of basic understanding of coding in order to go over the code and make sure it has been written in a good manner and spot potential bugs/anomaly.
In case you have no such skills, i would advise to look out for a friend that will help you check the code before paying for it, or if the project is in big scale, hire at least a project manager to make sure that everything will be delivered in time and within the price scope.
Regarding the offshoring, i did it many times and always got disappointed. You cannot meet the freelancer nor sue him which mean that if you have a problem after completion of the code, you are in big problem. Timeframe are never met (but to be honest you need to take this in mind and calculate the timeframe with all the possibilities available). Price are never met since you always have to hire someone else afterward or go over the code and sometime fix it yourself or fire/hire/fire/hire several coders until your code is done and time = money as we know.
Personally after dozend offshored project, i stopped with that and now local outsource my small projects, i generally end up paying 20%-25% more for them but i know that i will be on time and on price.
Also, if you are small startup, i would strongly advise you to never outsource/offshore your business core, there is noone that will do a better job than yourself/yours coders.}
First of all, i would like to apologize if my post isnt redable, it has been submitted by mistake before i could even correct some of my mistakes and i cannot seem to find any “edit” button (Some feature publicsquare should add).
I would also be more specific about offshoring, when i meant “offshoring”, i was talking about offshoring to an external entity and NOT MEANT the traditional offshoring which mean you take your internal work to your internal division overseas.}
I think there seem to be important points/issues here:
Projects taking longer even happen with inhouse teams, except that communication barriers are lower and therefore the errors in approximation are lower. The problem seems to be in dealing with shady offshoring providers and anyone have tips here?
The other issue is regarding outsourcing/offshoring your business core. If this is a core task, then you will likely want to hire developers per month instead of per project to keep with the day-to-day maintenance and updates of the code. Anyone have experience/suggestions here?}
Typically in a startup you need to be creative with resourcing and different forms of outsourcing/offshoring has to be part of the equation. We have a small development team in-house that focus’s on core user facing functionality. We would like to hire more but they are hard to find. We have an offshore team we also work with. Not one of the big behemoth’s but a smaller shop whom we know the owner from previous direct work with him. Like most engagements we have had some hicups, but overall it has been a good experience. The owner was is a software architect and we have found that to be very valuable – make translation much easier. Plus – he also suggests things instead of just taking requirements. We do agile development so this required much more interaction than just handing off specs. We use skype extensively to stay in touch with this team. Yes – it usually means late evening calls but we rotate back and forth to make it better for both teams. Recently we have thought about using services such as rentacoder etc to increase of development even more, but we were trying to find a small test project that would be less risk. We were looking at a desktop widget as this project but as of now – we haven’t pursued that path.}
We experimented with an outsourcing model for some of the XHTML / CSS for Gaboogie, with extremely poor results (we had to throw away every line of code that was provided to us).
It’s specific to this niche, I think, but my advice is to stay away from front-end development outsourcing unless your requirements are very simple. If you have a web application to build rather than a simple, content-based website, then I don’t know if there’s any choice but to find the right people and hire them directly.}
Interesting…I have to agree with the general opinion here. We had to purely rely on offshore folks since our company grew purely in an organic fashion and hence $ was of paramount importance. The do’s and dont’s are very very important, It took me a while to try various entities (through elance) out until I settled on a couple of folks who have been a boon for us. Prior to that the experiences had been really miserable. Our’s is a not a simple content based site, it’s pretty deep since there are various backend engines that interact with the web application. Putting it all together using resources spread across 3-4 time zones was a challenge, but we pulled it through. Once we crossed the initial hump it has been a smooth ride so far.
– finding a few good offshore development companies (that will sync with you will take time). So try out a set of short listed candidates by giving them snippets of work.
– Split the work between 2 or 3 companies. During early on one of the main developers caught – chikungunya fever (??) – and never returned to work. Had we not had work split between 2 companies we would been in a mess.
– Give them a detailed set of requirements (at a very granular level). Often times we tend to blame the offshore folks when it was our failure to come up with something detailed. (The Timezone aspect compounds this issue). The software framework should be developed locally. Also those folks are in this purely for the development fee. So if you do not provide them the specifics don’t expect them to think through the details and suggest innovative ways to do it etc etc
All these are obvious points, but very relevant.}
I have published some of our findings about doing projects with Rentacoder.
For me the most crucial thing is ‘specification’. Unless you can clearly describe what you need and how you will test and accept it, don’t post it on one of these sites.
The site not working in IE is, in my opinion, your own ‘mistake’. First of all it should have been stated in the project description, secondly it should have been tested by you, prior to accepting it.
Resources:
– Read more on our blog on ‘The 6 deadly traps of freelance outsourcing networks’ on http://radiocorridor.wordpress.com/2007/07/25/}