First I must explain my experiences. This article comes on the eve of the release of one a web site my company and I have been diligently working on for the past year. During the year we went from developing the project in house to outsourcing it to two different teams in India, until finally deciding to bring the project back in house. Rather than focus on the entire development process I thought it would be a good opportunity to explain my experiences outsourcing, particularly outsourcing to companies in India and how to best do so.
Who this article is for:
• Companies or individuals wanting to develop a web project or application at minimal cost
• Companies or individuals investigating the various ways of developing a web project or application
• Companies or individuals currently developing with an outsourced foreign team in India or other non-native country
Outsourcing Is Hard and Takes Time
What you must first realize that outsourcing is hard and takes time. There are certain sacrifices that are inherently made when you outsource a project overseas these include communication issues, timing issues, and language issues.
As anyone who has experienced overseas outsourcing it can be difficult. Outsourcing to an outside party, another company or individual is incredibly hard. Typically the concerns include security and accountability. Unlike an employee, who is expecting a paycheck each week company’s responsible for outsourced projects may have a number of other “employers” or benefactors. You are almost never their only source of income. Will they complete your project on time? Will they deliver for the quoted price? Will communication be a problem?
The Problems With Outsourcing
The four major reasons outsourcing is difficult:
* Communcation
* Security
* Technical Skill
* Price
Recently we had an in house project we wanted to develop. We used the project as a practice tool for some contacts in India. It was the perfect test project. Its complexity and depth as well as the fact that it was completely internal (we had no client deadlines to meet) would made it a perfect tool to test these Indian developers. Unfortunately, it was a complete failure. After two separate seemingly established companies failed to develop the site we had to take it back inside and finish it ourselves.
Why Does Outsourcing (Usually) Not Work?
A while back I attended a fantastic seminar on business growth and development. I was there mostly for networking opportunities, but was able to learn a great deal from the presenters. One of the contacts I made was an upstart IP telephony company. The upstart wanted my company to manage his team of developers in India, they would hand off projects to my company, we would feed it to the team and they would output the work. Ultimately we were responsible for the output. What would we get in return? What would be our compensation for managing this team in India? Access to their resources for $10/hour. We could use the team as we wished to do most or all of our work.
After viewing some of the code of the Indian company in question we decided to decline the offer. Until recently it was a decision I was still unsure of. But, in hindsight, after the events of this most recent project, I believe we made the right decision.
Communication
Why is outsourcing so difficult? The biggest reason is typically communication. First, in my case the company and individuals I dealt with were not from America, they were from India, and their first language was not English. This presented a number of problems throughout the progress of the project.
As we do with most projects, we created a number of guidelines and objections for the project including look, usability, and maps. A great deal of time was spent via chat client explaining and expanding on certain ideas and routes in order to allow the developers to begin developing, a task that is not as time consuming or more straight forward when dealing with a more native team.
Certain words and phrases had to be removed or revised to avoid confusion, but even after doing so, the product we received was not what we had requested. Instead the product we received was a mutated mess of what we had originally requested.
I was interviewing a potential client the other day that had had a similar problem. She came to our conference table and plunked down pages and pages of beautiful diagrams and text on the content of the system she wanted built. It was a dream come true. Everything was sectioned off, user interaction was mapped and diagramed, the flow of the sections and modules of the sites was illustrated, this was the perfect client. The poor woman then went on to describe how she had paid a developer $500 to produce a system. After communication issues she spent hours developing these documents in order to facilitate the system’s production.
After months of coding and back-and-forth the system was never finished. The developer collected his $500, but my client had a half finished system that was poorly coded, poorly designed, and she had done most of the work! Now I don’t think she was totally screwed (she did receive A LOT for her money), but, she was quoted $500 for a full system, a full system that was never provided.
In terms of communication you have to ask yourself:
* Am I ready to spend the extra time it takes to use a foreign developer?
* Am I technically savvy enough to make the types of requests I need to make when dealing with a foreign developer in terms of communication?
* Is my extra time better spent on my own work?
Other communication issues such as time and means also arise. What is the time difference between you and your developers? We often have difficulty working with clients on the West Coast because of a 3 hour time difference. What happens when your developers are 12 hours ahead of you? It’s 3pm here, but are your developers up and working, ready for a conversation about your system at 3 am, or vice versa? Are you willing to stay up extra late just to communicate with your team in India?
Finally means of communication can also be an issue. IMs and chatting is a great tool for quick communication, but often meaning or connotation can get lost or misconstrued when sent through this means. Phone calls can be incredibly expensive quickly adding to the bottom-line of your project.
Security
Security is probably the second most important issue to consider when developing with an overseas developer. Not only security in terms of money, how you will provide payment, and they will provide work, but also intellectual property issues, have you worked out who owns the code you are developing?
You must also make sure that you are in full control and can change and of the resources your developer must access in order to do work. Are you ready and capable of changing FTP information, database names, usernames and passwords? This will all help once the project is complete and you are ready to take your finished product.
Finally another major concern is developers stealing ideas. Have you worked out some kind of agreement that your ideas or the system you’ve described to your developer is your intellectual property and that they are not allowed to try to duplicate or replicate in any way before, during, or after development?
One of the major reasons I have been hesitant to use Indian, or any other foreign developers, so far is because of the level or quality of their work. I have seen some great programmers, but in terms of my personal preferences for standards based, XHTML & CSS web sites, none have yet met my level of satisfaction.
Can you say the same of your developers? Do you, or someone at your organization have the skills or know-how to evaluate the quality (not just the appearance) of the coding your developers provide?
Price
The third and final factor is price. Price is the reason your outsourcing or considering outsourcing in the beginning right? Well scope creep is a large problem when dealing with foreign outsourced developers. To avoid scope creep you must plan and detail everything. Do you have the time or want to plan/detail everything? Is your time better spent more profitable somewhere else? If you bill your own time at $90/hour and spend 100+ hours developing incredibly detailed, intricate plans, and spend additional time communicating and re-communicating to your developers are you using your time efficiently?
Now you may have found a very talented, capable team or individual across the spans of ocean and land to do your work for you. I don’t argue that some great company’s do exist. I also am not arguing that the level of work or the talent of the individuals is not great. I must say though that the biggest problem with outsourcing, the reason it does not work on a small scale is COMMUNICATION!
Communication, that stupid word that kept creeping up in all of my freshman required courses. Communication, the #1 failure of most businesses, both internally and in client relationships, is the reason outsourcing does not work.
Now, outsourcing can work. In fact, right now we are working with a fantastic company in India that has been efficient, easy to communicate with, and thorough. We have established checksums and procedures based on the same things I just talked about in order to facilitate this symbiotic relationship. Another key thing to point out, they are much more expensive than the original few companies we hired for our other projects. So the old axiom really is true, you do get what you pay for.
没有评论:
发表评论