This is required reading for anyone who’s even thinking of offshoring some programming work. However, it’s not the entire story.
I’ve managed several offshore teams from here in the states for clients. There’s two ways the project can go: You can hire someone like me who speaks english and ‘programmer’, has enough of a business mindset to understand your business processes (because why would you write a program that implement’s someone else’s idea of how your business runs?) and has enough of a technical mindset to lay down the technical specifications. This is what the article above recommends. There’s more ways to do it … read on if you’d like to see a discussion of them.
One part of the article linked above that I disagree with is the NDA process. You should find a way to protect your intellectual property, because many companies offshore will have no scruples about taking the code they wrote for you and using it for either your competitor or starting their own business based on it. But NDAs don’t have any legal effect in 99% of the world, and the same people with a lack of scruples in that department will see an NDA as nothing more than toilet paper.
Essentially, there’s three phases to an offshore project. Research and Planning, Development, and Testing. Typically, the cycle will begin all over again as you develop a better understanding of your needs as you see the project form during the development phase.
Developing complete specifications is a long process, it’s expensive, and it’s drawn out. No, you can’t write the technical specifications yourself — you need someone with programming experience to do that. However, you are guaranteed that your final product will meet the specifications. It may not solve your problems in the way you originally intended, but it will meet your specifications.
(Aside: I read a RFP last week that spent three pages talking about how they wanted to cache everything on disk to reduce I/O and processor load … without knowing that disk caching doesn’t work well the way they specified, and you need to cache in a common RAM pool if you want to do what they asked. They then spent three lines talking about a complex monthly-billing payment gateway that had to integrate with their legacy vendor, and another two lines to state that the entire thing had to run off of an ACL already present in a proprietary forum software. That’s backwards. As a contractor, I need to know a lot about the ACL interface and the payment gateways. I’m the one who will tell you how the caching gets implemented.)
Or, you can feel your way through the process. You can hire someone like me to come up with a basic spec and farm it to find out who has the capabilities. You work module by module, month by month. This method WILL take longer in the coding phase (since there’s very little planning phase) and WILL be more expensive, but you are guaranteed to, when development reaches a certain point, have an application that conforms precisely to your business practices.
My experience is as an in-house developer for corporations, which means I tend to prefer the latter approach. I like how it gives me a better control over my end result and fixes any mistakes or misunderstandings that were made during the research and planning stages. The two approaches could be compared to either designing a sculpture in a 3d program, having a manufacturer make a mold, and then using the mold to make the sculpture, or to forming the sculpture yourself out of your desired material and making adjustments as you get feedback.
I definitely would keep the project management onshore. This isn’t an advertisement — it’s sound advice. If you’re already struggling to explain your business processes to someone, you definitely do not want to add language and cultural barriers without having experience working through them.
One last point — these projects will always take about two and a half times your original estimate. An ideal contract structure is one that does not bill you by the hour unless you’ve guaranteed that the person is skilled and is near the top of their profession. I wouldn’t hesitate to pay many programmers in America by the hour or a monthly stipend for a certain number of hours per week, but I’ve seen offshored projects stall time and time again without the contract being dependent on deliverables.
Those are Amazon Affiliate links. I’ve selected some books that I think relate to the topic. The few pennies I get every time you click on one of those links and then order a book (or even do your christmas shopping!) do help me keep the lights on here and don’t cost you anything. Traffic’s been growing rapidly around here and I’m loathe to put ads up — this is my way of helping us both. Thanks!
You’re on point… outsourcing is about high-value, not low cost. You need to find a company with good business sense. Finding good developers is easy, but finding people that are reliable, trustworthy, and committed is an entirely different story.
We’re an offshore development firm and we keep talking to companies that are disgruntled with their offshore team. We may not be the biggest or cheapest, but we’re committed as can be and communicate CONSTANTLY. Yeah, we experience problems here and there, but at the moment of truth, the key is to be honest with the client and roll with the punches.
We bypass the NDA problem because we’re HQ’d in Chicago. So if something happens, clients can still hold our feet to the fire.
FYI - I learned that an NDA signed with a foreign company is useless unless it actually enters the US postal system. Both me and my partner in Pakistan and to sign and mail an NDA to one of our clients (vs just faxing it) Pretty interesting.
Raza Imam
http://BoycottSoftwareSweatshops.com
Written by
Raza Imam
on
January 14, 2008 at
11:31am
If you enjoy the content, consider subscribing to the feed(s).
Jump to comments