IndogenFX, a tiny software consulting firm whose main focus is developing projects involving applications with business rule processes, has parceled programming work to India, Israel and is now talking to companies in Ukraine. Its experience teaches eight lessons in how you can go about doing it and what potholes to avoid along the way.
–> TIP 1: Plan to spend at least a few weeks finding possible service providers.
An outsourcing relationship that yields the desired result begins at the selection. And the selection process, said Michael Rumack, founder and owner of IndogenFx, requires footwork, beginning with Google searches, appealing for word-of-mouth recommendations and reading articles about other companies that have done outsourcing.
"I think the best way is to find the other companies that have experience in outsourcing. Find out to whom they outsourced," said Mr. Rumack.
Once you have a list of potential companies, the next step is to check their references, their core technology focus and whether they can really deliver on what they say they can do, said Mr. Rumack.
The entire process — finding, testing and establishing a relationship with an outsourcing company — can take up to two months.
Mr. Rumack attributed some of the difficulties he experienced initially with outsourcing to not realizing this at first. For example, he spent a lot of time explaining what he wanted, to no avail, and then the product the service provider sent back was nothing he wanted.
"Now I am better at selecting a company to outsource with. The first time, it was a new concept and I didn't put in nearly enough time."
–> TIP 2: Don't just take the service provider's word for it. Design one or two tasks to gauge their actual ability and their working style.
Mr. Rumack is careful about testing the companies with a small job or two before handling them an entire project. "I usually give them a small project — something that is not time critical or client critical — and then wait to see how they get back."
"Each company will be different and each should formulate one or two tasks that will prove the ability of the resource. For myself – who does primarily Web-based applications — I will give them something like SOAP Linux-Windows communication or a login script that connects to a database for authentication to write."
The point of it is to evaluate if the structure of the code and debugging and error trapping features implemented are satisfactory. Then, he checks to see if the code notes and documentation that comes with the code are coherent. "I make sure that I'd be able to use the documentation because, in the future, if I want or need to modify the code, I'd have to be able to understand it. If it is sloppily written, if all the code notes are in Hebrew, than it won't be much use to me and hence Ôuseless for future use and a bad investment.'"
–> TIP 3: Don't go without a non-disclosure agreement.
When it comes to Non-Disclosure Agreements, one thing should be clear right away: You want one, especially if you are in the software development.
"Without them, your outsource company can steal your ideas or applications and sell it to another client," said Mr. Rumack, who learned the hard way. "I worked without them — this was before I knew about an NDA or proper contracts — and lost about $7,000.00 on a job because of it in the first three months of working on my own."
You can secure yourself one by hiring a lawyer right away, or you can do as Mr. Rumack did: Search Google or other search engines for "NDA," "contract agreement," "sub-contractor, invoice, proposal," or any combination to familiarize yourself with the issues.
Thereafter he used what he found, as well as copies from friends willing to share, and had them modified (by lawyers) for his purpose. In fact, he made a version of his non-disclosure agreement available to Sourcingmag.com readers. You'll find the link below. (Remember: We’re not attorneys; and we’re not practicing law here — just making a handy resource available to you to jumpstart your efforts.)
"Even in their raw format they will help a great deal to get a company to think twice about not paying a bill or sharing your technology with a competitor," said Mr. Rumack.
"But I highly recommend getting them reviewed by a lawyer at the earliest possible time. It saves a huge amount of headaches and financial loss." (In our experience, you can expect to pay between $500 and $1,500 for a standard agreement.)
–> TIP 4: Work with a service provider that has a "local" manager — or at least somebody in the same country as you're in.
This issue with the NDA is in fact something to consider when shopping for a service provider.
According to Mr. Rumack, "the NDAs are pretty much useless if you go directly to the [offshore service providers]. They are not respected universally across the borders." Once out of the U.S., notwithstanding commerce agreements that offer some amount of protection, because jurisdiction, legal terms and conditions differ, legal action becomes "almost impossible." This is especially true for those who have not established companies or patents in the particular foreign country, said Mr. Rumack. Even then, it is a costly and difficult enterprise for small companies. "So, if you deal directly, it can be a bit of crap-shoot (This is where positive referrals become crucial)."
A way out, said Mr. Rumack, is to use a local project manager who is a direct local representative of a foreign resource. This person has exclusive US or regional contract with the foreign resource to sell their services. "This local project manager would be legally and financially responsible here in the US. You have NDAs with them and they have insurance to cover problems that arise in that area."
"I have taken the risk [of not hiring a local project manager] to keep costs down. But if the project phase was for more than $10,000 or the technology or processes were sensitive enough, I would opt for a local project manager with documented liability insurance of a value great enough to cover any potential damage."
–> TIP 5: Map the project out in great detail.
When asked what he's found to be the biggest challenge to outsourcing, Mr. Rumack answers without pausing, "Communications. I'd have to say that the communications is very difficult."
Mr. Rumack's solution: Mapping the project out in great detail.
"The main thing about managing the [service provider] people is to be very specific, very detailed so that they understand what you want."
Thus, even before assigning a project to any one company or a group of individual service providers, he begins by breaking down the application into "its base structure class/method structure, business rules, processes, needed technologies and database structure." Thereafter, he sets a timeline and only then does he go to the vendors he has vetted. "I ask them if they can meet it. If they can't, I'd go somewhere else."
Mr. Rumack allowed that it takes years of experience as a project manager to determine the time a project will take. So, "I try to save adjusted timelines from specific modules (smaller application segments) to gauge how long a future project will take. But there are very often delays. That’s why most timelines are, in the end, optimistic guidelines and they almost always extend past deadlines. So, working with a competent project manager on either side of the transaction will give a more accurate time-line."
But in the end, the lesson is clear: the more specific you are, the better it is. The onus is on the owner.
–> TIP 6: When you are your own project manager, know your people and proactively manage them and their progress.
Where Mr. Rumack is dealing with individuals, as opposed to a service provider with a project manager, he manages them by keeping a list of the person's strongest "current" skills, in order to distribute work. "The work is then divided based on the programmer's core skills." For a recent project, one was an experienced C/C# programmer, another a PHP programmer and another a Linux expert.
Thereafter, he holds weekly teleconferences to assign tasks and evaluate progress. "I use [instant messenger] to send messages back and forth on a day-to-day basis for quick questions and check-ins," said Mr. Rumack, who stressed the importance of constantly monitoring progress and fixing issues before they arise.
Hence, when dealing with India, he can be found sending emails to India late in the evening and teleconferencing early in the morning.
–> TIP 7: Don't be discouraged when you meet the difficulties. Expect a learning curve.
"The first two projects were really difficult," said Mr. Rumack of his outsourcing experience. "I spent the first month just trying to communicate basic parameters for the applications and such. And it was just a demo, a proof of concept demo."
He was emphatic that his communication issues were not a result of a lack of clear instructions about what he wanted, which is what any outsourcing management guru will tell you is the golden bullet to communication problems. "I laid it out. I did process diagrams, mapped out the process in words and in visual flow. And still they didn't know what I was trying to do."
"And they even have an office in Toronto, so they had English-speaking project managers that you can go through. But that added a layer of efficiency and also difficulty — efficiency in that you are speaking to an English-speaking person and you can communicate your thoughts and needs to them and they can in turn communicate that to India. It added a layer of difficulty because there are now two layers of communications and time zones to work with. So you are waiting for them to contact their people and them to contact you back. It was just a long chain."
It was both discouraging and frustrating and Mr. Rumack gave up on the Indian company after three weeks and turned instead to a local resource. But it was also unsatisfactory. The work didn't turn out to be anything he wanted. "I had them redo it twice," said Mr. Rumack.
He looks back at that phase with bemusement and calls it a period where outsourcing "was a new concept."
"I run into problems once in a while [now]. Maybe they miss one or two parameters. Usually I get packaged APIs that I get from other vendors that I need to integrate into the project I'm working on and then send those out. Maybe that is not clear enough for them and so I have to explain [the details of those]."
–> TIP 8: Outsourcing can gain you — the small company — girth and capability without the concomitant burden of fixed cost.
So, are the risks and potential headaches worth it? Here are some numbers for you to consider.
According to Mr. Rumack's experience, the cost of hiring a U.S.-based programmer with a newly minted bachelor's degree in computer science is around $25 to $30 per hour. In Ukraine, the experienced programmer costs $8 to $25 dollars per hour. A US based programmer with experience will charge $80 to as much as $200.
"For the hardware engineers, they run about $14 an hour in Ukraine and $40 in Israel. The fee in Israel is higher because it includes [the expense of] a project manager.
By Mr. Rumack's own tabulation for a project that takes 1,100 person-hours and includes a project manager outside the US, this translates into, a difference between $11,400 (the cost of outsourcing) and $135,000 (the cost of having it done in-house). The cost of the same project with a locally responsible project manager who works for service provider would be $68,000.
That savings has made all the difference to a company of IndogenFX's size. The company, which started two years ago and has annual revenue of just about $250,000, had ran into the fundamental problem all growing companies face: How to meet the increasing opportunities — or "complete the projects" — at the lowest possible cost.
The cost of hiring in-house at this point, said Mr. Rumack, is just too high for him — "what with insurance cost, administrative cost and the cost of getting an accountant and everything else that you need just to hire another employee."
Outsourcing has allowed Mr. Rumack to grow without being tied down with fixed costs that are burdensome to a company of his size.
Still, Mr. Rumack, points out that "one very important element to keep in mind is that although there is a significant savings in outsourcing, there are always also risks," including "badly written code that is difficult to update and decipher."
The trick is managing the risks, which means continually monitoring progress, testing and proactively fixing issues before they arise. As IndogenFX's experience with outsourcing shows, the benefits are not impossible fruits to grow.
Non-disclosure agreement sample