Managing a Global Programming Team?
cwimmer asks: "I work for a technology company in the United States who survived the economic slowdown by trimming fat where necessary. Unfortunately, it seems that my small programming team must've looked like mostly fat to management: it has been trimmed from a high of 5 to the current 2. We have been given a very large programming project that we estimated would take 4 coders (the size of the team at the time) 6 months to deliver. I have been given deep pockets with regard to moving some or all of the project to an offshore partner, and I can probably get 4 or 5 programmers in India. Does anyone have any pointers on managing a team of programmers on the other side of the world?"
Learn to speak Hindu.
- A.P.
"Remember when the U.S. had a drug problem, and then we declared a War On Drugs, and now you can't buy drugs anymore?"
Does anyone have any pointers on managing a team of programmers on the other side of the world?
Move there.
You could try getting help through eLance. Programmers from the Indian subcontinent abound on there for usually cheap rates. Managing? Man that's a tough one.
Move to india for the duration of the project. You can live like a king with 20K a year.
This is a good time for OSDN to push their "Sourceforge 3.1" software! Unite everyone globally with one piece of software!
Keep click "refresh" on this story (don't forget to use those slashdot subscription pages) and see the advertisement for sourceforge!!!
*ahem*
Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
Just do the usual stuff, i.e. establish source code control, build procedures, regular meetings, milestones, etc.
I think the biggest hurdle is the language barrier. It is ironic, though, that most computer languages are based upon English and English syntax.
regardless of costs, there are a heck of a lot of talented programmers here in the US who would take work.
hire american.
your jesus is another mans xebu. chew on that hypocrites.
You just need to learn how to shout "do it again but do it right this time" in several languages.
"Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
Rational has some interesting software you can use (like ClearCase)...
Fabio - Sumare/Sao Paulo/Brazil/South America/Earth/Solar System/Milky Way/Universe
http://www.morroida.com.br
So the Indians are keeping the English speakers at home? All the Indian programmers I've interviewed in New York had a very hard time communicating in English.
Go to Slashdot, where there are undoubtedly a whole lot of North American coders looking for work, and ask them about some good ideas for getting cheaper labour overseas.
No offence, but I hope you understand if some of us offer you NO HELP.
If you've been given "deep" pockets to hire foreign programmers, then why doesn't your company hire any of the many fine programmers in the U.S. who are currently out of work and will probably work for less? Granted, you may get more foreign programmers for the same money, but I sometimes think that many of the companies in the U.S. just compound problems by ignoring talent around them. Note: I'm sensitive about this situation because I have been unemployed for several months now, and just getting a chance to interview can be tough.
How long before your firm realizes that they can hire a manager on-site in India for a fraction of what they're paying you and not incur the language barrier and communications problems?
.technomancer
1. have some one from your office in India
2. speak hindu. forget the bs about the largest english speaking population outside of US.
3. write very detailed plans, documents and specs
4. have weekly meetings on the phone with the whole team
5. get daily status electronically
6. setup source control, which they have to check in their code at the end of the work day
7. only send grunt work to India, due to communication reasons. When specs and requirements change, the high level decisions need to made locally.
8. get a dedicated telephone line to the office in india. telephone lines are notoriously bad in india.
9. have a well define development process and make them stick to it.
Doing anything less than this will result is total chaos. Considering how monumental it is to setup a development team in India, and the large number of un-employed programmers in the US. Just use contractors and break the project into smaller sub projects to make it easier for yourself to manage and track.
- Join the near PHB Golf Club.
Just don't expect to be able to go there very often!
Moreover, before ever considering managing, do consider how you will recruit high quality programmers!
For the love of God, DO NOT DO IT! I've worked with or interviewed for positions at 3 different companies/departments that used off-shore india programmers. It was always a horrible experience. In each situation, after 6 months they said that hiring the offshore team actually hurt progress. That is to say, X programmers on site would have made more progress than X on site and Y offsite.
I'm not sure what all the root issues are, but the time difference is huge. Get used to 9pm phone conference meetings. It was horrible explaining the software needs to the offshore groups. And fiunally, it's much harder to do quality control with people who aren't actually there. It's much harder to get them to fix problems when you don't have an in-person presence. Most programmers by nature get things done in the worst possible long term way. In the offshore situation, you will have almost no power to encourage them to create code that's built to last.
But, as has been pointed out here already, there are thousands and thousands of US developers out of work, which makes it a buyer's market. To put it into perspective, a top-gun Russian developer is going to charge 25/hr. I am certain that you can find a comparable US developer right now to do it for approximately the same; plus or minus 10% or so. It's amazing, but even software developers like to pay their mortgage... ;-)
Make sure that you are using CVS. This is particularly important because of the time differences that you will be worrking as compared to them in India. Also, you should invest in some teleconference equipment. If you can talk to them in real time, it is a helluvalot better than e-mail for a lot of things. And last but not least, keep communication optimal. Make sure that you have meetings 2 or 3 times a week. This will serve two purposes. One, it will let them know that you give a damn about what they are doing and Two, it will confirm that everybody is on the same page as to what has to be done. Good luck!
Let me get this straight.
You are asking a bunch of unemployed programmers how to best manage the foreigners you hired to take their places?
Hope you brought your asbestos suit.
Karma: Good (despite my invention of the Karma: sig)
If your software is non-trivial, I highly recommend that you have very detailed specifications for them to work for or you could end up with huge headaches. It can take many hours just trying to get the concepts and business rules across.
Also, the time difference can be a major problem when it comes to conference calls. We are on the west coast and trying to find a time that worked was difficult because we're something like 12 hours different. We ended up on the phone at 7am here and there were there at 7pm their time. If they run into problems, they don't have anyone to respond until we get in to work the next day.
All I'm saying is that you should tread cautiously. Outsourcing is not necessarily a huge gain in effeciency unless all your coding work in extremely trivial.
---
SCO is weenies
Gator is Spyware
Microsoft is thugs
Agree on the statements of work
Make sure that the statements of work are adhered to.
Smile and enjoy the fact that you're helping keep americans unemployed by implementing a plan which will not bring the savings you were hoping for.
Budget for a lot of travel on short notice. You will need "face time." Expect the trave to exceed what you will save in salary for such a small project. If you are hiring 20 or 20 programmers you might see a real savings if it comes out right. Also, plan on switching your US team to the graveyard shift so you can have enless phone calls with them. Been there, done that.
Seriously, the people you are working for are incompetent. If you said it would take four people six months, then they should believe it would take four people six months. Whatever immediate savings are to be had by laying off three developers and hiring Indian contractors are going to be lost in the loss of experience with your product and the overhead of managing developers on the opposite side of the world. Give up, now.
http://www.infoworld.com/articles/op/xml/02/05/06/ 020506opsurvival.xml">This article has some good points - especially relating to moving the coders closer as the project nears completion.
located in Peru, (almost) no time zone difference!
-Kz-
I work at a NEC subsidiary in the Philippines. The higher-ups in management are all Japanese, and we also have many Jap counterparts in Japan. The Japs in the Philippines are very well-adjusted to the local culture and respect local traditions and customs, holidays, etc., thus, they get along quite well with the Filipinos despite the extreme cultural differences. And the Filipinos also appreciate the Japs' effort to adjust. This, i think, should be a top priority when working with foreign programmers. Understanding foreign culture would go a long way toward mutual understanding and goodwill, and would help to create great working relationships.
Why does you management require an off-shore partner? Provided the price is competitive, is there some reason off-shore is better than on-shore? I can see no tax advantages w.r.t a project outsourced to a second entity that's not in the US.
Just get the specification and design nailed upfront with in-house talent, then verify that the offshore talent have a clue about the technology. Make sure that the specs and design are very modular and that risky areas are addressed early.
I had a very bad experience where offshore talent had no ideas about the necessary technology, let alone alternative strategies, though they advertized as experts, etc. We terminated that contract with extreme speed, and brought the work back in-house. -PK
With the inevitable time overruns due to rebuilding caused by grammar and conceptual mistakes, is it really going to be cheaper hiring offshore vs. hiring a team locally?
My last team had a Chinese woman, and Indian woman, a Hungarian male, and 3 Americans, all sitting in the same office. The disconnect between Chinese/Hindu/Hungary caused several large delays. Doing this from 10,000 miles away has got to be worse. Much worse.
Over here everybody is a code-monkey who hates the managers because they have a (completely unnecessary) university degree, get paid better and are, in general, smarter and equipped with a better human-to-human interface.
As a programmer whose company is thinking of hiring help from a local company that uses Russian programmers, I'd say: don't do it. The amount of complications possible by far outweighs the advantages (cheap!) in my opinion.. Like: -You've got your working program. But hey! there are two major bugs in it..but the offshore team is too busy with some other job, or are not reachable for some other reason. -From experience, everything you buy that is cheap at first, might turn out te be quite expensive later. I'd say, that might as well be true for hiring programmerskills. You're gonna need people to communicate to those programmers, even if they speak english or not. That person will cost money as well, unless you're willing to give up 70% of your own time to integrate, test, debug etc. the code you're getting from them. -Losing control! What you don't make, you cannot control easily..i.e.: you can check the code itself, but not how it was manufactured, or what kind of design decisions were made. I'm sure other /. will have better stories on why you should / should not do this..Basically, I'm just saying: don't make this complicated. If you need more manpower, try looking around in your own country first.
My 2 cents..
I work as a biz/tech in NYC with a team of programmers in NZ and 2 biz in San Fran. We use:
;)
email: Message usually to "all". Projct discussion is usually ad-hoc (no lists). This is mostly for updates, documentation of happenings, clients.
IM: we use a mix of AOL, Gaim, etc. This is where most of the decisions get made.
CVS: This, plus a whole bunch of automated testing scripts (JUnit and homebrew; we're all Java) with results of this posted every 10 minutes on the intranet and ensuing complaints if you fail to keep the tree green.
Intranet: News, CVS autochecking, Product versions, Marketing, etc. Looked at WIKI, Zope, etc., but ended up making homebrew.
SSH: Everything is tunneled with SSH to keep things nice and secret
The most important thing in all of this is making sure information is received by those who need it. This is usually more of an exercise in politics than technology.
While I havent done it myself, I worked with others that have, and seen success and catastrophe. Whatever you do, don't hire somebody who is going to hedge the truth about progress. Ive seen projects completely cave in when the found out that their oversees components were months behind schedule, but the managers lied and said everything was going great. Remember they may not have the same American get-it-done attitude you have.
Also, make sure they have the same scheduling paradigm you have; for some reason a lot of people think that estimating a schedule means padding by tenfold, others think it means come up with the shortest conceivable timeline to please the boss.
Six months seems pretty tight to roll out a new programming team, even if they're all in the same room. How critical is this project? If you have "deep pockets" for it, despite budget cuts, it sounds important. If so, it's probably not a good candidate for a new, untested mode of operation.
If you do end up IMing, use Trillian. It adds logging to IM systems that don't already support it, it allows you to interface with anybody unwilling to use Trillian, and the people you want to communicate with don't have to change anything they do. Just make sure you have one of each IM account and you can IM anybody, plus have IRC logging in the same software.
-----------------------
You are what you think.
My company has hired "off-shore" programmers, however we have always brought them in. You tend to get a really good rate even bringing them in (much cheaper than typical $200/hr consultants.. I think we pay around $40-80/hr for the off-shore ones), and I would wager that you would more than make up for it in the problems that would arise doing off-shore. The other thing with bringing them to where you are is, they tend to be more willing to work (what else are they going to do, hang out in the hotel?).
In terms of working with them off-shore.. You have the time-zone differences, which could be a potential headache (not sure exactly what the time difference is). Most Indians would already speak english (with decent clarity) so that usually isn't a problem.
I personally enjoy working with the Indian co-workers (off-shore or H1B's). The Indians that I have worked with have always been very productive, friendly, and don't slack off as much as their American counterparts. They almost always have better education backgrounds (due to the need for visas) but conversely have less real-world experience. Granted, I don't exactly like the idea that they are taking jobs away from Americans, but I can understand why companies will hire will hire them. Especially in this economy, where they are very excited about being able to get a position and will typically take a lower wage to work.
Here are a few questions I would put to any prospective members of a global programming team:
1. Are you well-managed? If so, why? If not, why not?
2. Is your manager an ex-programmer him or her self? If not, from what
discipline did he/she come?
3. Do you work in: a cubicle, a two-person office, a multi-person office,
a private office?
4. How often do you think about changing careers?
5. How long have you been a *professional* programmer? (i.e., you get paid
for doing it.)
6. What is your job title?
7. How many programming jobs have you had (i.e., different employers,
consulting assignements, etc.)
8. What platforms/languages do you specialize in?
9. What *specific* suggestions do you have for those who find themselves in
a position of managing a programming team?
Don't read this!
Money. You can get 3-4 programmers in India for what you would pay one programmer in the US.
Michael Loves Me!
babelfish, babelfish, babelfish. (does that translate hindi?)
-whoa, I'm jones'ing for a sig right about now...
Language barriers are nothing compared with cultural ones... And i'm not saying that the ocidental culture is better or worse then the Indian/Oriental one... They are just diferent... and that makes a hell to understant each others, even if both understand that white is white and black is black.
BTW this happens even inside one culture. Just define very well the project and enforce very strong development methods with case tests, performance tests, code review, coding rules, source control, and the like...
Cheers...
(and good luck)
Be sure to budget into the project your required trips off-shore to manage these people. At least once a month is a minimum, every two weeks is more like it. Plan on staying a week at a time. Hmm, 6 months = 26 weeks = 13 round trips... may be cheaper to just keep it here in the US.
"Computer Scientists can count to 1024 on their fingers" (non-mutant, non-mutilatated, human computer scientists)
The keys to offshore development are communication and management. You need a strong manager offshore and you need to maintain an open channel with them. Without a strong manager you'll need to spoon feed work to the offshore resources - do a very thorough design job and hand small sections of work to them. A strong manager will greatly reduce your workload and increase the efficiency of your offshore team.
There are a great many slashdot readers who would greatly appreciate an interview on this one. This is the reason why so many of us here in the US are unemployed now. If the jobs go overseas then there flat out *is no market* for US tech. This is another toll on the death bell of US programming talent.
I know *I* can never make a living programming, but those who graduated before me may still have a chance if people quit shipping livelihoods to India.
Interpretation! Interpretation! Interpretation!
We had two Indians working for us.
They never did any error checking and where English translation was needed it got quite comical.
For instance:
"Required" became "This is must."
Now, I ask you: Huh!?
Conduct all your business via e-mail. Conference calls just don't work out when there is a significant language barriers. I know too many people that think they're fluent in English and it just isn't the case. I do have to give them credit, however, as I sure as hell haven't taken the time to learn their language. Specifically India has over 100 official languages, I believe.
I couldn't imagine managing offshore workers that you've never met... Hmmm... Maybe this will even out the wealth in the world a little bit, not that I want that to happen (being in the US).
One more thing. I agree with the others that suggest looking for a new job. If your management
is giving you money to complete the software but then telling you how you should spend it (ie. india), that's a sign they don't really respect your management decisions. If they really empowered you and had trust in you, they would say, "Here is $X. It's your responsibility to get the project done."
It seems like they won't accept any situatuion except one involving India programmers, and that is 99% guaranteed to fail. The failure will be blamed on you, you'll be out of work, and have trouble finding a new job (because of the previous failure which wasn't your fault).
The mere fact that they fired your team when you said you had just enough for the project should let you know they don't really value your opinion. Find a company that respects you. They do exist.
Waking up in the middle of the night for status updates. India has a 11 hour time difference, so the programmers there work while we sleep. For management, this can be annoying since you will be getting calls in the middle of the night when things are not working out as planned!
:)
Language should not be a problem since Indian programmers usually speak very good English, but can't say anything about accent
Some sort of videoconferencing would be good to have face-to-face meetings.
Employing Indians in India is faced by obvious problems like getting good net access . There's actually two words which can solve the problem.
Give him an ASDL connection and tell him to hang out on jabber and ask him to work according to US hours :)
Seriously , I live in India -- It's d*mn frustrating to work with a guy in another timezone Unless one of them is a geek :)
Quidquid latine dictum sit, altum videtur
babelfish
babelfish
babelfish
-whoa, I'm jones'ing for a sig right about now...
Deep pockets, but only if it is to hire someone in another country.
Now, I'm all for free and open markets, but this doesn't sound like a choice.
What's the motivation? What's the benefit to not hiring someone here? Could it be that management is still having a tantrum about having to pay a living wage for a few years? Programmers gettin' too uppity?
It's sickening.
This book deconstructs many of the problems with distance learning and telecommuting. It's a must read for you and your boss.
Stephan
Dear Slashdot,
Since i'm the kind of guy willing to cut corners and drive nails with a socket wrench, i'd like to hire some Hindu guys to code for me. The 12 hour time difference means i'll never have to talk with them, and whenever they call, i'll be out of the office. This is great. Who cares of Indian coders know they'll never be held accountable for their mistakes, being half a world away? I dont want it done right, I just want it done. Who cares if they dont have indoor plumbing? I want 500 lines of code per day for 3 Rupee an hour, or i'm outtahere. What should I do?
Bowie J. Poag
we hired a team in india to deliver a game written in java.
they were behind schedule ALL the time and in the end we hired a person to work on-site (this person WASN'T from the team in india) and this single guy got it done. probably quicker than the team in india, if we'd let them finish it.
the language barriers are horrible.
i'd never do it again.
Quality american programmers ain't good enough for you all? Gotta screw the rest of us while the upper mangment takes home bonuses? Your job will be next on the block once they realize that they can outsource your butt, too!
4 ppl six months for a large project ? I am not sure how you define "large" but either you are not planning to sleep eat drink etc. for the next half year or its not a very large project.
MOST large projects need that much time for just the QA cycle (which can be damn annoying).
As for off-shore, you say it would take 6 months, hence its not large enough for you to get into a good relationship with the ppl. overseas! Best bet it is to keep it in house then.
I was in a similar situation two months back. We had a sudden deadline and we were grossly understaffed. We hired a couple of freelancers, with the result being that developers were spread in three countries and five timezones. Experience tells me that email helps, but only to give clear guidelines. As someone whose butt might be on fire, you'd want something more than that:- you want realtime responses.
Good time to install Yahoo/ICQ/MSN/NetMeeting /AIM. Insist on continous communication with all teams, all the time. Helps if all teams have access to a 24/7 evernet connection (We were lucky enough to work under a 10 mbps broadband connection; I do understand that the IM experience might be different under lesser speeds). Or, you might want to setup a schedule of sorts.
The point is, give IM a chance. It's not just a teenage playtoy.
(I'm of course presuming that there'll be an offsite coding effort.)
I can't comment about hiring an offshore firm, since my employer has not (yet) gotten that idea into their heads. However, I can speak from experience about dealing with offsite programming staff. We have a few here (most of us are in the main office, but some folks work remotely around the country), and it is a nightmare to deal with them. Most of them are out of contact with the rest of the company so they have little idea of what is going on, it is very difficult to go over bug fixes with them over the phone, and most of the time we have no idea if they are actually doing their work at all, until there is a sudden burst of productivity.
Basically, we've found that having offsite programmers incurs a signicant overhead. We have to spend a lot more time communicating decisions, be they corporate or technical, to them than with the rest of our staff. Some of this could be addressed by improved communications, but a lot has to do with the lack of daily, face to face, contact. Nevermind the troubles we have getting them trained on new technologies. I can't even imagine what it is like dealing with someone on another continent-at least here they're within 3 hours and (most) speak english.
Don't contriubte to shipping American jobs overseas for starters. Remember, once they ship all the programming jobs to the third world, you're next, so you might as well give it up and try to find a more moral employer now. Is it really worth screwing over your fellow human being for three more months of paycheck?
We're currently outsourcing our framework for unit testing our code to a company in India, and it's working well so far. The key, I think, is that the company we're working with is a CMM Level 5 organization, which has a very robust (if high-ceremony) development process, and all of the proposals, schedules, design documents, et cetera that we've gotten from them are extremely thorough. The knock on CMM is that it makes the process more important than the talent of the engineers; the knock on offshore engineers is lack of experience or talent. So here's a case where CMM can pull an inexpensive team *up* to a high quality standard.
In general I wouldn't recommend offshore development for a small company. The overheads of managing the operation will kill you, and you will typically be doing exactly the sort of work an offshore team is less suitable for. It is much more suited to a large company that can build a long-term relationship with the offshore team and use them to help out several different projects. This allows you to amortize the overhead costs over a number of teams and projects.
Good luck.
Sailing over the event horizon
Managing developers across the globe will double or triple your development time. Bring people in house or suffer the consequences!
+1 Insightful, -1 Troll. What can I say, I'm an Insightful Troll.
It sounds like this is going to be a close source proprietary application, but would it be adventageous to GPL it? Say, for instance, you're writing some widget modeling software. Another company faced with the same issue may needs a SIMILAR widget modeler for a different product. Then for the cost of nothing you've just found 2 companies that can combine their resources to attain a similar goal. Post it on Sourceforge and see if there's any freelance coders or other organizations who also want to help. Instead of hiring paid slackers, you've now found volunteers who are more concerned about putting out a viable product than draining a company for cash by delaying the project.
There is no reasonable defense against an idiot with an agenda
:wq
Connectivity there sucks. Connections can be down for many days at a time and no one there thinks anything strange is going on. Getting any kind of response from the local phone companies can be nightmarish at best. And assuming you partner is large, and they have a dedicated line to the US, then be prepared for a VERY small slice of the bandwidth pie. We're talking 14.4k equivalent.
Be prepared to document more than you've ever documented before. You can't 'wave your hands' and get the point across. You have to do rather formal and complete documentation for any portion of the project that you would ever want them to do. You can't do small-group programming, like when your programming partners are staring over your shoulder, when the rest of your team is 10.5 timezones away. This may seem obvious, but a lot of folks miss this one.
Nail down your code/source/project management tools, and choose ones that can work in a multi-master (when more than one server can maintain data for the same project) or disconnected mode (see note above about connectivity).
I don't know if this is cultural or just a bad experience, but it seemed to me that there was no reguard for schedule or deadlines. Trying to get folks to actually attempt to meet a deadline was difficult most of the time. We had to go to India and sit on some of the people to get anything out of them. What's the ROI on that?
English is one of the official languages of India, but you'll still have language issues. Usually not too bad, but can be humorous at times. I remember once a sever was taken down for 'upgradation'. If you are having them document any of their own code, have it proofread by a US tech writer.
Be prepared to go nocturnal at times. There are times on any project when all folks have to be available at the same time. You will have to match your schedule to theirs.
Good luck.
Sig? What sig? Do I have to have a sig!?!?
Lease a Quickie Mart for 6 months.
Convert it into cubicle spaces.Leave room around the edges for cots.
Leave the Slurpie Machine and Microwave.
Hire the Indians to come and stay for 6 months.
"Just Smile and Nod." --Huck
There are some very good software consultancies based in India, some of whom are SEM 5. They can help you ensure that what the offshore developers build meets your requirements. Hiring programmers in India without working through a consulting company could be tough.
If you really want bang for you buck - have a Canadian development team. The advantages are many:
same timezone as US
equally skilled workforce to US
they speak american english already and watch the same TV shows and read the same magazines
US dollar = 1.6 CAD
health care is covered by Canadian govt, so less cost to employer.
as cheap or cheaper bandwidth costs.
Downsides:
learn to say "eh?" a lot
they use a lot of Curling idioms
As an unemployed American programmer (with CS degree in hand), who is desperately trying to land anything from a small time contract work to entry level full-time work, I'd like to send a big "Fuck You" to your company.
Enjoy!
Can't wait to see how far this get's modded down!!
Check out my podcast: DreamStation.cc Video Game Show
Sorry Dude! Bring in Americans to do the job.
In this economy you will find many.
In the company where I work we have a partner in India that we can outsource to.
A few important rules do apply.
1) Projects should be of a fairly large size. Don't try to outsource a small part of a project.
2) Be precise in you specifications. We typically document and develop the architecture and design of the system together with management consultants and our customer.
3) Send you architect to India. When your architect (or lead programmer) has got a firm grip of the project, send him to the development team in India. You may loose a lot if you try to do everything by email, notes etc. You don't need to move project managers etc, but architecture is critical.
4) Make sure the outsourced parts can be boxed. I.e. develop in components, and specify and test each component individually. This should be done in most projects, but when you outsource, keep focused on splitting down the project in small (and easy to solve) components.
We work with a partner company in India. This provides us with project management of the remote team. It might be difficult if you try to have freelancers spread over a large area. Try to take contact to one or more companies over there and establish control of the project that way.
Many comments are about the language. We have not had many problems with that. The employees we work with in India are all fairly good to speak and read English, and I think that goes for most Indian programmers. That will be solved, as you will be able to determine their language skills when you talk (or write) to them.
In regards to tools there are many. Most of our contact is done by email, word documents etc... The issue about managing the versions of source code require tools, but there are a lot of good tools out there. The most important rule is to define the handling, updating and deployment of code. (Did I mention you should build often?)
When outsourcing don't underestimate the importance of quality control (testing etc...).
Hope it gave you some ideas.
-:) Oh no - not again.
www.rednebula.com
Combine the tools at elance with sourceforge (free or commercial)... and you're probably most of the way there...
At least that's what all the banner ads here tell me.
You could always hire a Canadian team - you'd get someone in your own basic timezone that speaks (more or less) the same language - and works for 63% of the money (last check of the currency value).
Of course - as always - your mileage may vary.
BlackNova Traders
Why should the nationality matter to me? All I want is the optimal price/skill ratio. I couldn't give a fuck if you're from bumfuck Somalia if your code is good, you finish it on time and don't ask for too much pay. Isn't that's what the free market system is all about anyway?
So, we've done this with off-shore contractors. The tips I have are...
1. Hand over independent projects. The more interaction their part has with everybody else, the greater the chance of problems. The communications differences are going to cause issues if there's a lot of interaction with the rest of the project.
2. Be very explicit on requirements. Nail down the exact behavior of what you want their software to do. Be explicit about the development environment and the target environment.
3. Avoid giving them tasks that you'll need to modify heavily for the next release, because they likely won't design with the next release in mind (the next release's requirements are likely not explicit yet. See #2 above.)
4. As much as you can, try to interview the people who you'll be dealing with. With remote development, it's all the more important that you get smart people.
5. frequent milestones -- since you're not there, you have no real way to tell where they are on your schedule, unless you have a set of milestones that they need to meet. Build meeting the milestones into the compensation plan.
So, the point is to segregate their development from the US development as much as possible. Work to minimize communications problems. Take strong measures to measure progress.
It's quite possible to get good work out of off-shore development. But, it'll take a lot of work on your end as well.
Damnit, you said it before me... Oh well. I guess it is back to the corner with my resume in hand passing it out to the mindless zombies that work downtown denver.
I will happily entertain any employment offer. There's a certain number below which I can't go, obviously, because I have to make mortgage payments and put food in my fridge. But I won't send you a shitty resume and then demand $100,000 a year.
Set up a temporary email box and post the address here. Sure, you'll get a lot of crap, but you might just find a few good US-based programmers, too.
Like me! Like me!
Software development--particularly business software development--isn't about computer "science" or "engineering." It is about communication--communication amongst your team, communication with the computer, and communication through the computer with the end user. Communication is the key.
In hiring offshore developers you face substantially more complex challenges than you do working with a telecommuter. People who telecommute have established relationships with their employer--so they already know the implications of the tone of your voice, and what you mean when you preface your sentence with "I don't mean to be rude, but...." An offshore development team doesn't know that--you don't have the kind of relationship, based on trust, common bonds, and plain old time, that are necessary to make a team work.
There is a simple way to deal with that problem. It is called an airplane ticket. You go to them, or they (all of them) come to you--naturally that means you're the one on the plane. You can find a whole range of airfares, and a whole range of hotel prices, and a whole range of expenses involved in traveling literally halfway around the world. And unless your project is huge, you'll blow any conceivable cost savings on the travel.
You have other options
One (warning: self-serving promo coming) is to outsource to a consulting firm. They'll charge you a fee--but at the end of the project they will go away. You don't have any overhead costs, you don't have any headcount, and you don't have costs for machines and toolsets that you no longer need.
Another option is to consider outsourcing to an "offshore" country that is considerably easier to get to. If you're in the United States, you might look very carefully at consulting firms in Canada: the Canadian exchange rate makes tech workers up north very attractive. And Canadian "offshore" development avoids a lot of the problems with outsourcing to the Indian subcontinent: Canadian firms are (mostly) on the same time zones as U.S. firms; Canadians and Americans share a common language--most of the time; and Canadians and Americans share a common cultural heritage (most of the time). In general Canadians are more polite than Americans, more funny than Americans, and perhaps more serious about their work than a lot of Americans.
Believe it or not, sometimes outsourcing deals don't work out....
An old dictum of business law says that you don't need a contract when everybody is making money. You only need the contract when things go bad. That's true--and that's why you'll need a solid contract before you start any project with any outsourcing firm. It is a lot easier to find legal help with contracts between U.S. and Canadian firms than it is to find legal help with contracts between U.S. firms and Indian firms. And--(look for articles on this subject in Fortune or The Wall Street Journal) the legal climate in India is not as stable as you'll find in developed countries. Long before Enron hit the headlines with its accounting problems, Enron was embroiled in a long-term dispute (see this BBC article, for instance) with the government of India. There are all kinds of charges and counter-charges, but many in the West have viewed the debacle as proof that in India contracts are not nearly as ironclad as we view them to be. If it comes to it, it is substantially easier to litigate in Canada than in India.
Bottom line:
..but I can bet money that the "fat" that got trimmed from your department would be quite incensed to learn the company just turned around and outsourced their jobs a few months later, probably paying out more money in the long run than it would have cost to keep full time employees.
If you've been granted "deep pockets", why not just rehire the guys that got laid off? Or hire a new crew of US citizens. Companies farming out their cash to foreign sweat shops isn't going to do diddly SQUAT to help the tech industry recover.
That's all well & good, except for one thing. Your site sucks even more than Malda's!
Send me a check for $1195.00
Include with your check all external telnet, ftp, vnc http ports and usernames/passwords you need to use for the project.
We'll take care of ya.
I'll concede that when US companies pay workers who live and work in another country lower wages than a worker who live in the US, it could be a beneficial situation for both. The worker (hopefully) is getting a higher paycheck than he could get from a local employer and the US company saves on labor.
What I think is disgusting is how many US companies cheat foreign workers who come to the US on H1-B visas. I helped one of my coworkers with his taxes because he had never filed a US tax return before. We have similar skills but our employer was paying him a third of what they pay me. Apparently, this is very common and I think it's wrong. Salaries for visa workers should be determined by the cost of living of where the employee is working and living, not his country of origin.
When violence rules the world outside / And the headlines make me want to cry / It's not the time to just keep quiet
...You need to be pointed at a few "help wanted" sites!
Seriously, don't burn your brains out (or sport-death your team-mates) to meet this fabricated emergency. If you complete the task, but wreck somebody's health, the senior management will most likely see this as a success, and an endorsement for chopping geek staffing beyond rational levels.
Canada has highly talented and educated programmers. Many of them, like myself, back from stints in the Bay area.
The price is right. Typical rates for Canadian consultants are 10 - 20% discount on US rates and then discount a dollar that only worth $0.65 US. No time zone issues or language barriers. Frankly, I don't understand why a US company would consider going anywhere else.
- Tune in next time for.. a clever sig.
In my experience, I have never, ever seen the "farm it out to cheap foreign programmers" dream work. When the code comes back it's worthless. Programmers that far from the project, with no emotional, financial, or professional involvement, have no reason to write quality code. They have every reason to churn out code which barely conforms to the specs. And if the specs are faulty at all, you're screwed.
To make that sort of operation work, you'll have to write such detailed specifications that you'll practically be coding it yourself. You're much better off with a couple of coders who will look at what you're trying to do, and make it work that way.
I used to work for a company that has offices in India. As a project manager and QA manager, I can assure you that it can be tough. If you're going to hire off shore, don't do contractors, hire a company. That's the only way you'll have accountability. They're like used car salesman, though. You'll want 5 basic developers and they'll try to sell you 5 here, 5 there, and a PM. Stick to your guns. They need the business either way.
Did you try the "but my beard adds 10 pounds" defense?
If tits were wings it'd be flying around.
I run a online game development business (www.murpe.com) where most of my development and support team are found all around the world (England, India, Russia, Japan), so we had to look at a common place for having meetings and discussions. There are times my adminitrative staff cannot connect to our online games (due to firewall restricts on telnet), so using web interfaces was an option we considered.
Since we are primary an linux-run development business, we found that using phpBB's (www.phpBB.com) web board system we could keep things private and moderated, then we also utilized a few web based project management suites (you can find these through freshmeat.net easier) for delegating tasks and having a calender available to everyone for upcoming milestone meetings and what not. Overall, the web boards/suites allow us near real-time interaction for discussing issues and for working on other problems when they arise.
-- M
Artificial intelligence is no match for natural stupidity.
Oh shit, I'm British, I'd better go somewhere else.
i am sorry, you just layed off 3 people, and are hoping to make up for the loss by hiring foreigners to write your code, and will hopefully charge less, but then they have to travel, and..
wooo! backup. what you have here is (hopefully) 2 competent developers that (hopefully) know what they are doing and know the project / software VERY well. What most people seem to think is that 5 developers * 1 hour = 5 developer hours. WRONG.. what you actually get is more like 1.5 developer hours, because they are spending time to fix each other's code and having meetings, milestones, conferences, IOW spending money and time coordinating PEOPLE to do WORK. now, remember you still have 2 developers. if they are indeed focues developers, why not just let THEM do ALL of the work??? you will probably think that it is impossible for only 2 people to do the work you wanted 4 or five people to do. however, if these people cannot REALLY work, and just lounge around, then foreigners, esp. HALFWAY ACROSS THE WORLD will most definitely NOT help you.
what you need is for the developers that are left to buckle down and REALLY start working. suppose it DOES take longer to produce, that is ok... it might 8 months instead of 6 or even 1 year. that is still 24 months worth of pay. if you hire indians (supposing *extreme* they are paid half of what you pay the veterans) then you might finishg in 7 or 8 months (it WILL take longer) that is 2*7 + (1.5)*7 = 14+10.5 = 24.5 which is MORE than the 2 developer cost.
plus, you must remember that i took EXTREME circumstances that realistically never occur...which means that you will probably end up paying more.
so, what do you want? 2 developers, less money, and no headaches, or 5 developers, more money (and more $$ that leaves the local company) and LOTS of headaches. think about it...
QED
BSD is for people who love UNIX. Linux is for those who hate Microsoft.
Depending on who or what the market is for your software, the onshore developers can stick close to marketing and the customers to do the requirements analysis and high level architecture. You can let your offshore team be responsible for maintenance of the existing code base (be sure to review their fixes at the start), detailed module design and implementation or do QA.
Communication is key. Many Indian programmers have excellent communication skills - some better than many Americans. You can supplement this by creating mailing lists, common web pages and build/test automation and reporting. Another good practice to do is to have an offshore manager who has excellent English language skills - preferably a current employee of the company who understands the business and current development procedures and wants to go back to their native land.
Rotate all the members of the offshore development team to work in the local office for a period (one month minimum) for cross pollenation of business culture and technology transfer. Depending on the budget and schedule of the project, you may want to have the same offshore developer come to the local office every two years. There may be sticky work visa issues related to this.
The startup costs for setting up a global development team is pretty high. However, once it's in place then adding more developers is pretty cheap. Particularly in these tough economic times, it's far easier to add new offshore developers than it is to hire new American ones.
Get used to global development teams. Sheer numbers of foriegn developers, cheap global communications and economincs dictate that this is the wave of the future.
Try Distributed Team/Project Management tools for working with a team offset in both time and continents
one of the mentionable tools is the called pIDE(Project Management Integrated Development Environment) from kelsar
it free to use..
--- One thing you can't recycle is wasted time. - Anon
This is a perfect and I mean absolutely PERFECT example, of Americans losing jobs to some cheaper guys in india.
Indian programmers will ALWAYS be cheaper and eventually companies when they get to a certain size will not hire Americans anymore.
Why should they? If they can just get people from the third world.
SLashdot programmers and technicians, take a stand and refuse to answer this question, we DONT want them to know how to manage a global programming team, I mean unless you are the manager why should you help them fire you?
If you use Linux, please help development of Autopac
I agree with the sentiment of "hire American." These days it's more true than ever. In 1999ish, however, hire American unfortunately meant hire a smartass kid who hasn't even gone to college and wants to start at $80k (plus bonus) and come to work in shorts every day because he rules the universe. In that situation, the H1 guys rocked. Luckily (hopefully!) those days are over and there's plenty of unemployed folks right here in America that will do the job for you without the outrageous demands of yesteryear.
So why should we answer this guys question, Its just helping him fire us!! Let him go to indias version of slashdot and ask THEM!
I'm sorry but I'm not stupid enough to help my boss figure out how to replace me.
This is why I'm so against globalism, this kinda thing will happen all the time as globalism becomes standard.
If you use Linux, please help development of Autopac
He works for Lexmark International...bunch of assholes.
Oh it just makes me sick. If you are a american you should quit your job and find a company where the owners care a little more about their employees. I've left companys for less. For instance I quit a company because they wanted to fire american workers and run the software on Citrix clients in Mexico. Rather then help them I left. Left them with out any developer support for the 450+ user system and laughed my ass off when they tried to call me for help. In this country we don't have any type of labor party to look after national IS workers interests and it is starting to show. From what I understand about 6 out of 10 projects that try to use overseas programmers fail for one reason or another. Mostly not being able to convey the business logic to the overseas developers.
If only you could tell us the name of your company so we can boycott it.
Last one in jail is a fascist.
Hindu is a religion. Hindi is the language.
Hint: Use the right word
You can have best of both worlds! Pay them $20k, and have them live in one of the utility closets in the office.
Language will not be too big a barrier. And anyway there is no single language called Indianse, those damn guys speak 25 different languages among themselves and the only common language they seem know is english.
I will give you one huge hint.
COMMUNICATE in writing, no ambiguities and have small and quickly achievable milestones and deliverables.
Get them to deliver at least once a week. I typically ask them to deliver once in two days.
This will mean more designing and better prior planning at your end but, it is well worth the effort.
If you dont hear from them via email/phone for 4 days in a row then you ought to start getting a little worried.
Typically they hesitate to get back and clarify a requirement and keep working on some dead end thing until it is too late. so always keep in touch and tell them to send back stuff that they have finished.
Use a lot of Email and Instant messenger and of course a version control software etc.
keep the phones to a bare minimum of once a week, the International rates are way too high.
-elf
Software production is hard to estimate. Let's compare your problem to the same problem in another field. You seem to have a problem of not getting the software done fast enough. You want to add people to the team to speed things up. Good. Good.
Now, take a little time to consider this : How long does it takes nine woman to make a child ?
When you'll get the meaning of this, hopefully just before my manager does, you'll have a much better knowledge of software development.
Apply to BE the manager in India...take some crash courses in Hindi at the local University, and kick it old-school in India, grub'n on all that delicious food!
"Just Smile and Nod." --Huck
... that the management needs to be domestic?
All you need is to send the requirements and have the whole effort managed and performed on the other side of the globe.
If $30/hr US coders can be replaced by $3/hr foreign coders, cannot $40/hr US managers be replaced by $4/hr foreign managers?
This has been ongoing in the blue-collar segment of the economy for two or three decades, it's pretty much inevitable that the same thing will occur here.
At least until US unemployment levels rise to a point where consumption of those foreign-produced goods collapses. Hopefully, by that point, foreign economies will have expanded to the point where they can generate a fair amount of spending themselves, and wage inflation will have brought a reasonable global marketplace into being.
Until then, the only way to survive is by becoming a fat-cat CEO and ride the wave of profits.
These come from my experiences working with Indian programmers off-site. I am making no claims wrt Indian programmers on-site at your location as, in my experience, things work much better in that case. Furthermore, I am not saying Indian programmers are useless, only that the culture and language barriers make them much less productive than on-site developers.
Assuming you have four people including yourself on-site and, say, four developers in India, you will need to dedicate at least one of your developers (probably you) to managing the Indian programmers. This will be a full-time position. You probably will not do this and as a result, the productivity of the four Indian programmers will be approximately that of ONE of your on-site developers, and that is optimistic.
With a person full-time on managing the Indian programmers (and please note, an Indian manager in India is not the same), you will find that the four Indian programmers can develop at the rate of two to three of your on-site developers. This is because, in my experience, they are never willing to work overtime and also, because of the rather extreme language barriers, infrastructure problems, and culture differences.
Note that you will likely also need someone to do design for this project and furthermore, the design for the code you are shipping out to the developers in India need to be much more detailed than that you give to your on-site developers. In my experience, this can only be done on-site.
Add in a manager as you have a team of eight and you are now looking at:
- One manager
- One liason with the Indian programmers
- One (or two) designers
- One (or zero) local developers
- Four Indian developers, producing approximately 2 - 3 on-site developers' worth of code (and no design)
So your eight person team will be, optimistically, as productive as a four-man local team. Pessimistically, they will be half as productive.
You are likely to become slightly more productive with eight Indian developers and four local people.
For every four developers, you need one full-time person locally to do detailed design documents. For every eight or so people on your team, you need a manager. And you need one person solely managing the off-shore developers, assuming you keep their number down to reasonable numbers.
That means that with three local people and four Indian developers, you will achieve roughly the productivity of two local developers.
With four local people and eight Indian developers, you will achieve roughly the productivity of five local developers.
With five local people and 12 Indian developers, you get productivity of approximately 7 local developers.
It is rarely worth it to do development like this.
Oceania has always been at war with Eastasia.
Having done several of these, as your first project, with deep pockets and a compressed do date, you are going to have problems. Major, miss the date, lose your job type problems if you attempt to remote source it.
Oversea outsourcing has problems beyond the traditional remote support. I have and continue to be a strong proponent of remote support. You get the benefit of hiring expertise that may not want to locate near you. For example, I work remotely for clients where the cost of living is easily three times what I pay here. And they do not offer three times the compensation. It sounds like that is what you are after. A win-win.
Here are just some of the issues:
- Time zones are more than inconvenient. If a question does not get answered by 8 a.m. , it will sit until the next day. Picking up the phone sounds easy, but will not be. How many issues can pile up before the communication is complete or they stop asking and just begin assuming? Who gets to call meetings and who attends? As the person leading the project, are you ready to work day and night? Team, status, and planning meetings need to be held with everyone so when?
- Code is not code. Simply put, cultural differences create issues in code. If you wish to own the code when you are done, both parties need to understand what is acceptable standards and what will happen with code that needs to be reworked (do you still pay while they rewrite it?). Standards for names, fields, tables, access types, how and what type of inheritance is allowed, etc. Assuming they will be coding in English (yes, you do need to make it a requirement), unless you all agree (or they have worked extensively in the US), someone will be rewriting the code. Or you will need to look at it like generated code. It does the job, but you never want to maintain it.
- Cultures different. As Americans, we tend to be naive in the assumption of cultural neutrality. And while many organizations do their best to be neutral, language continues to be a barrier. Consider how difficult it can be to understand someone with a varied US dialect. Add the phone, email, and 5,000 miles and a simple statement "You wish the account number removed, no?" takes on a whole new meaning. My unscientific number of 30 -40% redundant communication will work to minimize these types of issues.
Some companies put an American in charge from your side. You work through them and they make sure the details get hammered out with the team. This helps a little, but sounds a lot better than it works in practice. I was approached by a company to have mine work as that front. I passed when I saw the only difference was I would now have all the issues the client had, plus my own.
- What if it fails? This is the one that can be a stickler. Suppose you are being told that your project is on schedule and all the areas are coming together. The status reports look good and the code is getting delivered right up to the point everything stops. What are you going to do? While this problem exists in many contractor type arrangements, these folks are overseas in a country where use of the legal system is unknown. I hate to say it, but at least here you can sue someone if for nothing else but to get the code that was created.
At this point, I foresee a number of people reaching for the "reply - he's a bigot button." Hardly. These are business decisions and people make them from the cost/benefit. Often the price appears cheaper, because the assumption is made that given any programmer "X" they will generate lines of code "Y" and the result will be the same. That is not the case and is simple as the difference between hiring a person out of school and one with 10 years experience. The both know C++ so the results will be the same, correct?
Finally, consider the current economy. You did not say where you are, but I am willing to bet you could get the project staffed locally (or even US remote) for less TCO than you think. If they insist you use off shore help, then research carefully and find out the number of oversea projects done by the firm managed from the US. Of that total, how many were on time and on budget when complete. Then contact those customers and get their input. If their references are not glowing consider what the unhappy customers would be saying.
You may be the one that kicks the trend. However, I would be careful about putting your career on the line for it.
I work for an it company and one of the "appliances" has problems. They always blame the "indian" programmers. We get fixes for problems daily. And we send them right back to redo because they almost never get them right. Instead of a programmer getting right in your box and fixeing it they say 4-5 days. Have 20 problems like this and it's 3months delayed. things are so bad I have begun to learn how to fix the problems myself.
GRR....
:)
Definition of Globalism.
Definition #1. "It destroys national economies and transfers their economic assets, including public utilities, into the ownership and control of Global Big Business and Finance. It destroys small businesses and independent producers, ultimately forcing everybody to work in the interests of monopoly capitalism. It causes unemployment, economic hardship and financial uncertainty for the people, at the same time as record profits for multi-national corporations."
Definition #2 It overrides national sovereignty, party politics, and the democratic process, and can be used to undermine federal systems within nation states like Australia.
It is called "economic rationalism", and it is as phony as they come, a false theory concocted by equating two opposite concepts: oligopoly and free market.
After thirteen years of it, Australia is in chronic economic decline, and so is every other country, including Great Britain and the USA, which adopts it as economic policy. [ See Paul Ormerod, "The Death of Economics" (1994)].
Globalism (economic rationalism a ploy)
If you use Linux, please help development of Autopac
I am currently enduring clear case, and IMHO cvs over ssh would have been so much easier.
:-
These are the highlights
We currently employ someone just to 'manage' clearcase. *ouch*
Remote win32 users need to be part of the local NT domain. So we dont have any remote win32 users. *grr*
It costs us $1500 per developer *ouch*
So just set up a CVS server, simple and free.
You get what you pay for. You're getting rid of 1 American worker and replacing them with half a dozen Hindu programmers that incur 10x the overhead, 10x the work delays, 10x the debugging time and 10x the communication costs compared to having someone on-site. Do the math.
By the way, fuck you and your company for shipping American jobs offshore, especially at a time when hundreds of thousands of American programmers Who coincedentally, speak ENGLISH, can follow instructions, dont work 12,000 miles away and code responsibly remain unemployed due to this kind of shit.
Also, incase no one else mentions it, You're next. Once they realize you can be replaced with a six-pack of Hindu team leads, you're as good as gone.
Sometime tells me its time to unionize.
Bowie J. Poag
sarcasm or this is how he works, most of the programmers from india are M$ platform-only programmer with .NET as their lastest toy
:-)
--
who me ; why ?
We wouldn't be so lazy and stupid, and have cheap labor if it weren't for these damn labor laws!
Fuck this highest standard of living shit...
[ Let me don my flame-suit. ]
You suggest that by posting the source on SF, "and see if there's any freelance coders or other organizations who also want to help", that this guy's software problems will disappear.
But what if there are no freelance coders who want to help? Take a look at some of the more successful open source applications and tools out there: Linux, Samba, Apache, GIMP, all of the GNU libraries, etc. All of these are general purpose, and find their way in to all kinds of various projects. If I'm the only company manufacturing widgets, what benefit do I gain by posting my widget modelling software? If anything I'm lowering the barrier of entry into my market, so those blivet manufacturers can now gain an understanding of how we build our widgets. And by GPLing it, even if the blivet manufacturer takes and modifies the code to work with their blivet machines, they don't have to give that code back to me (unless they also want to distribute their code).
I'm expecting to bleed some karma off here by pointing out the realities of the GPL, but the GPL won't be able to solve their problem.
america will eat its young ...
... more money for ... news folks we all get
when it comes to the debate
of globalization everyone is
silient
"u.s."
screwed just the same. when
indian programmer are hired
they don't make the money
the middleman takes about
half - true pimps.
stand up for what is right
people. far wages for everyone
and stop the talk about "trimming
the fat" these are peoples lives
we are talking about. we all
may not live high on the hog
if we treated each other fairly
but at least we all will be doing
okay.
what goes around comes around.
Why go all the way to India when you could move to Toronto or Vancouver and take advantage of the Government of Canada's "scientific and experimental development" tax credit program (see Revenue Canada's SR&ED website for more info). For every dollar you put in, you could get forty cents or more back... with respect to your project, this might mean an extra coder for free.
-Duke
You've got two options:
1) Code better and faster
2) Ask for less pay
Otherwise you're just fighting against what the US has always preached to the rest of the world. If you can't stand the heat of the only true market economy (=globalism), stay out of the kitchen! Are you a communist or something?
As a freelance Physics post-doctorate I compete in probably the only truly free global job market in the world for a shitty pay in comparison to what you private sector code-monkeys get. I've worked in Japan, America, Germany and Sweden. I compete with the top 10% scientific minds every nation has to offer on a daily basis. I don't complain. I improve myself, I lower my salary, I do almost everything to get a job that's both to my liking and still pays my rent.
So please shut the fuck up, quit whining and get to work and compete with the rest of us.
Having worked for software shop that was hired to oversee Indian developers, and cooperate with Indian developers, on various projects, I do have a few points.
1) We've grown up with computers. I'm a programmer because I feel in love with video games as a kid, on an Intellivision. I had to have a computer. I wanted to be a programmer as bad as a lot of kids want to be an astronaut. We've delt with bad user interfaces (Japanese VCRs with interrelated knobs switches buttons and levels spread accrost the back front sides and top). We've grown up with computer and had every chance to think about how things should work, and how life relates to software. Eg, the elevator algorithm SysV Unix to sort requests for disc blocks. The people of India have not. Their government decided to invest in technology, and sent many of them to a crash source on Java a few years back. The Indians I've delt with were invariable smart people, and I feel bad that they had to lie to get the projects, then try to fake their way through it, and I wish them and their country the best in this persuit, but it should be known their exposure to technology is recent, limited, and mostly rote.
2) American labor is competitive right now. Because employeers of mine started going under before it was popular to do so, I've been laid off more than most. Dispite years of experience, dating back to BASIC (before basica.com), and as diverse as Perl (I frequently speak at the local Perl Mongers meetings), SNOBOL, yacc, 6502 assembly, MIPS assembly, C, SQL, Java... I'm unemployeable. I can't get a job. I'm eeking by with contract work from old contact that trickle in, and my creditors aren't the least bit happy with me. My monthly income is below what I would be making working full time for minimum wage. Hire me! I'll work for $10/hour. Scott Walters' Resume. Seriously - I'm on Java and Perl mailing lists for the area I'm in. I don't call numbers when someone posts a help wanted ad, because invariable when I get through, I hear the same thing: "I've been bombarded with qualified resumes. I had no idea I would get that kind of response. I don't have time to review them all. All I can do is hire the first person I talked to." There is a vast surplus of highly qualified labor in the states right now.
3) If you learn anything from the dot com blow out, learn that companies aren't reliable. Indian companies just like US companies will hire random people without reviewing what their code looks like (hey, they talked a good talk!) when the contract is signed. Why pay them to take a gamble with employees when you can do the same thing yourself, and probably do a better job interviewing? The people you shake hands with probably won't be the people doing the code - it'll get passed off to the jounior programmers - just like the states. An eLance programmer (or myself), who has no real ability to sue you, will have much more motivation for doing a satisfatory job in a timely manner.
4) Buying a lot of cheap brains - aren't you making the Mythical Man Month mistake?
4) If you absolutely must hire Indian programmers, or Russian programmers, etc, take a lession from the "eXtreme Programming" garbage floating around: set many short deadlines for the near future to set a healthy pace, track progress more precisely, and catch mistakes before they become ingrained. Use the "looking over their shouldres" technique. Install VNC and arrange overlapping hours (early mornings/late nights) for a portion of the day. Programmers don't work well if you keep them on a short leash or micromanageme them (it's difficult to find one working solution, and impossible to find a working solution that satisifies the arbitrary whim of an evil overload who won't leave you alone), but having people look over your shoulder adds the Open-Source element of peer review. It facilitates good communication, too. You don't know what questions to ask. Perhaps you've been in an interview, and you're asked, "Is there anything else you'd like to know about our company?", or "Do you have any other questions for us?", and stumbled looking for something? It's hard to know which questions to ask. Asking the right questions has been attributed to the soul of quality. Looking over someone elses shoulder gives you the chance to discover questions you didn't know you needed to ask. Maybe the methods to the API were established and documented, but you completely misunderstood when they would be used, or for what purpose. Working with them and taking on small parts of the project yourself (an object here, an interface there) will give you the knowledge you need to be able to talk about the project with them in real terms instead of managementease ("Oh, it's going really well, thank you, no problems at all! About that deadline...").
I sincerely hope this essay helps.
-scott
By and large the people I dealt with on our Java based project were very polite. They largely came from a VB background, so Java was a stretch. Someone else posted about every answer being "yes", which I found to be very true. Asking questions over a conference call equated to silence. Emails do tend to be taken a little more like orders, especially when the local manager was cc'd. IM was where things became a little clearer. Lots of latent questions cropped up that didn't get asked otherwise. Due to sheer numbers, you will be on their schedule (I was dealing with a 13.5 hour TZ difference...yeah,
Alas, I must post this as an AC, but I must say...
I find this particular slashdot in -extremely- poor taste considering the current IT climate in this country. I'm sure that your company can find adequately skilled programmers for this task at a reasonable rate here as opposed to outsourcing the work to a different company.
In the future, slashdot editors, please try to show a bit more tact in what you post in the future. Thank you.
First, you can't assume that one Indian worker equals one US worker. It just isn't going to happen. Even with the simplest task and the best Indian exmployee you will be lucky to get 2.5 Indians to equal one US worker. Their work habits and productivity are nothing near what they are in the US.
Second, Indian culture does not emphasize problem solving skills. You will likely find brute force solutions that are buggy and kludgy instead of elegant "hacks" like one would expect from a good programmer.
Third, you will get lies, excuses, and "its your fault" as responses when things don't work. When we had an office in Pakistan they would routinely unplug the private line and claim it was down and they couldn't send their work back to us. We'd go through calling the telcos and they would test fine to their CSU.
In the short, don't do it unless you can afford delays or placing an American manager in the office in India. We have and it has dramatically cut down on the bullshit.
Screw the Indian, Russian and any other off-shore sweatshop programming houses that steal American jobs. Repeal the H1-B law!!! Americans First!!!
#1 - send the person who is telling you to sub-contract in India TO India. :-)
He'll be able to manage both of your offices more efficiently from there!
#2 - move the company HQ (incl. all of the top brass, finance, marketing,
and HR) to India and sub-contract the tech jobs to the US. Think of
how much $$$ your company will save then!
There are far too many people out of work in the US to be doing this right now.
I took a 20%+ pay cut after being unemployed for several months.
I lucked out because I REALLY like my new job, despite the cost adjustment,
and I'm sure that many people who are out of work would dearly LOVE the
opportunity to apply for the positions you have at a reduced cost.
Your company is not helping itself if it shortchanges US workers, unless
what you're selling is for a nearly 100% foreign market - if we're all
unemployed, how can we afford to purchase it? Another way to look at it:
how many Indian companies are contracting out to US workers?
Don't forget that.
Having said that, I'd recommend that if possible, go with well-known companies like InfoSys, Wipro and Tata. They have extensive offices in the US and Canada, and in the unlikely event that legal recourse is needed, you can drag them into court.
Danger, Danger!! [robot swings his arms in terror]
room101 -- how much can you stand before they break you?
(they always break you eventually)
You sound like a union member too... "buy only union made products"
You want to keep your standard of living at the cost of others... and suddenly you're finding that that doesn't work in a competitive marketplace...
China and India combined have one-third of the world's population (2.2 billion). The U.S. has about 300 million. If you're looking for quantity, the U.S. is doomed, including yourselves sooner or later. If you're looking for quality, draw upon the strengths of your countrymen and women!
Your company cut your staff, but increased your budget with an edict to find more staff that lies outside your control. Tell them to restore your staff and find offshore management that will work at a fraction of their inflated ego salaries.
I used to work with a programmer from India who now is a principal in a firm that hooks up Indian programmers with US project teams. They act as an extension of your team and are quite effective (and cheap). If you'd like I'll send you his contact information and he can at least give you some perspective on what you may be getting yourself into. Just email me.
Also, another personal friend has a Russian-based development team for large scale Java Application Server (Webshpere, etc) projects, for example. Again, email me if you want more his contact info.
I believe many developers in the US are afraid of the potential for global development teams cutting into their lifestyle. But, its inevitable, what with the Internet and all. The time is now to find out how to be a part of it, not marginalize it with xenophobic vitrol.
-- @rjamestaylor on Ello
Good work is not cheap, cheap work is not good. It has been my experience that the off shore Indian programmers are generally not very competent, and they tend to lack both work ethic and honesty. I think in the long term you will be disappointed by the quality of the work you recieve, and that your company would be far better served by hiring competent domestic programmers. Mark
About Indian Teams, they are absolutely fabulous! I am in India rigth now on a co-ordination trip over a job we contracted out 3 years ago, and the guys are good!! How good? Well when you consider that most coders here (in bangalore and hyderbad) do not consider their work as slave labour unlike back home, and factor in teh fact that most are conscentious and hardworking, you get some pretty hard working individuals. I have had no problems over the past few years. And dont worry about the language. EVERYONE IN THIS BUSINESS HERE SPEAKS ENGLISH. why dont you just call up and find out?
What is required?
clarity, especially from your side,
avoid using metaphors, puns and americanisms, humor over mail migt be misunderstood.
chalk out your work, let them know, show them what you want, and pack in a little patience, trust me, when your work gets done... you will just love these guys. ---- PAT
If any one ever says, "It will be no problem" Watch out. They either do not understand the issue or are covering something up. After working in Asia for twelve years and managing lots of Asian workers, I could go on and on. But if I could give only one piece of advice that would be to take nothing for granted. What ever you believe to be patently obvious will be the thing that will come back to haunt you. Don't doubt the Indians ability to speak good English but they will take things very literaly. They can be frustating to work with but it can be worth it in the end.
We always put our nose in or take care of other country's problems instead of our own, and look where that got us. Poor education, declining economy, and we are seen as the bullies of the world. You can't help anyone if you can't help yourself first.
Just hire US programmers.
There are a lot of serious issues to consider, but you're not going to get much in the way of answers on slashdot.
You do this, you're next. Update your resume and get it out there. You can save money by offshoring jobs (all patrotism etc aside), but not on the scale you're doing it. I mean the telcom costs the issues working across the timezones, lack of management abroad, travel costs, etc. All for saving salary for 2 or three people? Its going to cost you way more than those folks. You need a much larger scale project than this to really save any money. Now if you subcontract the whole thing out to a firm specializing in developing whatever kind of software you're developing, you could probably do a lot better. Heck...they could save money on your salary too.
Sounds like you're working for a real winner. Job market isn't *that* tight. Start looking.
Hey, offshore development is nice business modal in terms of economics and if you are clever enough in selecting offshore partner, than you will get best possible results also. Communicate all your needs to you offshore partner and they will help you with setup.
Do you really see the trend? First company presidents were sitting in on the coding sessions, helping newhired hammer out the bugs, at appropriate times, they were going to pitch new products to large customers. It was like a family.
.etc etc. Thats what MBA teaches you - to constantly reduce risk by making least innovative decisions... so we get situation like that.
More and more later, started having offices with doors, which where often shut. Talking about programming started to be very unpopular topic, with managerial and semi-business types. Technical meetings still were had, but to hammer out specs.
Now meetings are rare, most specifications are handed down to programmers, written off the wall, in vague language. Meetings now happen only in between managerial staff. CEOs/presidents/CTOs don't even bother.
Soon most work will be shipped off overseas, and managers don't even have to see scruffy, unshaved programmers, mumbling about some nonsense!
What I see is constant gap widening between those who make the goods of the company, and those who sell it. Maybe its a race for higher wages. Shipping off programmers to countries across the ocean is not a bad idea, but attitude most people have is cost cutting, without even looking at innovatie ideas that can be applied right at home - XP programmers, bonus on completion
If you wish to ship projects offshore make sure you have incentive program, that will pace developer across the ocean to deliver goods at paced rate - see eXtreme Programming.
Nail donw requirements. Write them out, get one translator to translate them into hindu and second one, to translate from hindu to english,
see if it makes sense - communication breakdown is too common in it companies, keep communication errors to a minimum.
In the end its attitude and direction what counts .
(Outsourcing to a team of 3 in India) for 4 years now. The answer is simple -- spend much time getting the technical and functional documentation together!!! Main problem: In order to have the kind of documentation it takes to make it smooth and productive -- the time involved from your team in the US to prepare the kind of detailed details -- (in a lot of cases) you could have spent that time doing the actual programming....because the design, specs, examples, revisions, etc, etc....usually are akin to the end product minus the time it takes to type the code in.
P.S. -- make sure they have a fast connection direct into your network.
(+1 Funny) only if I laugh out loud.
I've been fiddling with .NET on Linux. (click.) But I'm not Indian.
Move the entire project to India. Including your position.
Unless:
- Your 6 Month deadline is flexible to ~ 9 months (b/c it'll take a loooooooooong time to get in sync)
- You know of specific competent people there that you know you can rely on (b/c mostlikely you cannot)
- You have specific requirements spelled out precisely how you want it implemented
- You do not need to worry about performance and memory (b/c mostlikely you'll take a hit there)
- You can't just hire another American employee and try to sweat it out... (b/c otherwise you're obviously working against the common good of the programmers in this country)
- You can deal with severe communication barriers. Lets face it, I know of PLENTY of H-1's that have lied about having a college degree to get a job here. Its obvious when they don't: they can't speak or write english well! You're mostlikely going to hit this problem!
- There's nothing preventing these people in India from blackmailing you for more money by not providing what they promised (its happenned to us!).
Need more??
Every manager who's in vogue today knows that the solution du jour is hiring local jobless on 3 month contracts at ridiculously low rates. Try before you buy! That way you can find the right combination of programming skills and clueless career management by trial and error.
Have you thought about looking at Canada as a source for employees. Canadian salaries are much lower than their US counterparts, and the exchange rate is favorable to the US corporation. You have fewer time zone issues, and language is not an issue. It really is a win-win situation. The Ottawa and Toronto areas are teeming with workers who will work for US$45K - and they would consider that pay as "fair". The infrastructure and related work environments are similar, if not better than the US.
What a load of fear-mongering horseshit. What, Indian programmers don't speak English ? Your spaceship is double-parked, dude. Face it, being born white-American doesn't make you superior, and ranting about how Americans are somehow entitled to preferential treatment isn't going to change that. One can perfectly understand why you favour an aristocracy of citizenship where Americans have exclusive access to brain-work and wealth, but don't pretend to hold any moral high ground.
Given the economic climate in the country, you should considering hiring folks from within the US. Unemployment is at a recent high and I'm sure there are plenty of American's would would be willing to pick up the work.
Eric A. Stephens ericastephens@mycingular.com
Internet Time is your friend.
What company do you work for? Because I want to short your stock in about 6 months.
No offense guys/gals but the reason why we do all our coding work offshore is because you're a bunch of whiney overpriced prima donnas.
We're in business to make money, not play house and stroke your egos.
I am not sure what is your problem. I understand that there are many jobless friends of yours around and mine too.But you cannot blame this guy but his company that should be blamed. As far as development in India is concern I don't think it is bad idea.Just make sure you get quality you want.
Cultural Differences. I work with a dev team in India from San Jose, CA. They are smart guys and quick, but extremely abrupt. They communicate in English but you very well may not understand half of what they write via email or chat. And I have found them to be a furiously independent bunch. They'll do it their way, to say the least. You can make it work if you are patient, and just possibly you will be a Better Person for it. Good luck.
=^..^= all your rodent are belong to us
I totally agree with the FU sentiment.
I'm lucky to have a job in this economy right now, and I keep an eye on the market and there is not much else for me in my area. There are many, many, many folks who've got it considerably worse than I do, and I bet each and every one of them would tell you to F#$% OFF or kick you square in the nuts if you asked them for advice on giving American jobs to a third world country.
Perhaps I'm being ignorant. Perhaps not.
Why are you helping the fat rich bastards get richer? Why are you helping them screw American workers?
Gabriel Ricard
Mass shipments of tiger penis soup will keep those Jawas happy !!!
I'm sure a few boxes of those forehead dots for their girlfriends wouldn't hurt either.
The speaking english is a big part, kind of hard to communicate without a common language.
There are a lot of serious issues to consider, but you're not going to get much in the way of answers on slashdot.
Pretty much sums up your post as well, nothing useful at all.
It's tough enough to get two native English speakers sitting across a desk to understand technical requirements: try it with non--native English speakers halfway around the world. From my experience the best advice one could have in your situation is, never assume that they understood what you meant, or that you understand them. To make this work you have to make the term "overcommunicate" into a reason for existance. Good luck!
Unionize, huh? Are you really that humbled by the "corporate power structure"? The only calls for unionization come about when people's skills are not up to par. Look at the laborers world. The reason for unions were to combat unsafe working conditions. Are you unsafe at your present job? Look at the Screen Actors Guild. The actors' union recently released figures that 4% of their group actually lives on the money they make acting. Yet the union collects dues from everyone. They also strike, keeping more people out of work. Unions serve only to further damage relations between the industry and the management of said industry, as well as keeping good people away from well paying jobs when the union management gets ticky, and decides to strike. Offshore outsourcing may not be the best in all situations, especially in a recession. But the programmers I know are just as lazy as those from overseas. Don't complain about generalizations if you can't defend yourself from one...
"Goodness, how did you people live long enough to invent tools?" -Hobbes (the tiger, not the philosopher)
Item the first: the economy is doing shitty in America. Many people have been laid off (myself included). But then companies are turning around and hiring off shore to replace the exact positions they just shitcanned!
Item the second: civil liberties are being trampled on left and right in America. Pretty soon it will be Orwell's 1984 if the corporations keep getting their way.
Conclusion: Move to another country. You get a job (because you are now "off-shore") and you won't have your civil liberties trampled on! What a deal!
Nathan's blog
"Unfortunately, it seems that my small programming team must've looked like mostly fat to management: it has been trimmed from a high of 5 to the current 2."
"I have been given deep pockets with regard to moving some or all of the project to an offshore partner, and I can probably get 4 or 5 programmers in India."
Please. They didn't think your team was too large...they thought that your team was in the wrong country. This is basically just an extension of full-time employees getting replaced by benefitless contract/temp workers(Hello Microsoft!)
Similar thing happened at our company(ProAct Technologies) except it caused costs to balloon and was more due to ass-kisisng at the top levels. The CEO(Cathi Raffaeli) basically gave Bert Ellis all his stock back FOR CASH...then she basically forced the professional services and engineering departments to hire #$%@ worthless iXL consultants(one asshole spent all day trading his stock portfolio, another spent all day playing Quake, and a third "Unix Programmer" kept asking idiotic bash/X Windows questions) who cost mutlitudes more than the full-time employees they replaced. This decision was made AFTER a previous round with iXL consultants. How many companies do you know that hire consultants, find them worthless sacks of shit, and then hire them all again?
Cathi Raffaeli was doing two things. a)buying off the board(Bert Ellis was the chairman, and everyone followed his lead) and b)setting up a landing strip for herself with Ellis.
She only seemed to really start caring about the company when she realized her "landing strip" was on a sinking aircraft carrier(iXL.) Oops. Note to Cathi: set up landing strip on dry ground.
We used offshore development in India for a couple of projects and worked just great. Important thing is to set expectations and requirements right and a regular review of progress. Though this holds true for any project, because of time difference, potential for unproductive time is amplified if communication is not precise and crisp.
That was the biggest problem. I am Indian myself, so couldn't even explain it away to the barrier of language/culture.
Communication via email has it limitations. What saved the day was frequent telecons. ATT has some nice calling plans for India (ATT AnyHour International Savings plan- 0.42 c/minute); sign up for that at your company. Worth every minute of it.
Another thing that helped was good documentation- define deliverables and project plans in as clear language as possible..
. . .wondering who's going to buy all the $200K houses, $20K cars, taxes, etc.
That's easy: entertainers.
You almost have the complete list there, very informative, but you forgot Jawas will not work effectively without a constant supply of Tiger Penis Soup.
I'm posting to all you fellow americans out there - foreigners need not read or reply.
:-P )
Why _should_ he support management's move to save money by moving people offshore? Yeah, it smacks of unionism anticapitalist market controls blah blah etc, but come on, do we workers in America really want to support exporting our jobs to places where the cost of living is so much lower that the salaries can also be lower? Will we workers in America see some great benefit for doing that? (Managers need also not read or reply - we know you're going to benefit
I'm not looking out for "the best cost/value ratio" for my company, though it almost certainly lies with people in other countries - they don't share my tax woes or say 'hello' to me when I'm out walking my dog, and they won't lend me a hand when _my_ job gets outsourced next. That extra money saved won't go to the original poster anyway - or will he see a pay raise because they've given him a team in a far-off land? Not bloody likely.
Pro-america pro-union sentiments never last long around here, and I expect this'll be no different.
Oh well - I'm not going to be in the tech industry forever - getting my teaching certificate so I can take a position in a field management can't outsource (_and_ I know my employer will still be around after the next boom/bust cycle.)
The Dutch product is supposed to integrate with the product I work on, but in more of an inter-process-communication way than a codebase-integration way. That is to say we collaborate on interface, but implementation is generally determined locally.
Even so, the geographic separation has been a nightmare! At the very least, the nine-hour separation makes the round-trip turnaround for an email Q&A one full day: (I ask a question at 9AM PST - which is after quittin' time in Holland - so they don't see it until 8AM their time (11PM here) - and I don't get an answer until I come in the next morning.) And these are locally-managed developers with an execellent existing infrastructure. The problems would increase exponentially with the required granularity of long-distance management.
A recent assesment of the problem by an outside consultant suggested that the only cure for this problem is a large increase in spending on plane tickets. Our developers will have to fly there, and vice-versa, for face2face communication far more often than the semi-annual visits we currently do. If we had hired the Dutch developers just because of their lower cost/hour, we would have seen the savings completely blown in the additional travel costs (not to mention the lost productivity from jet-lag - you're not going to get anything useful done when you hit the tarmac at Schipol at 8AM local time, but your body is telling you it's bedtime.) This problem would only be worse if the remote office were in India, with a 12-hour separation.
Summary: The overhead of long-distance management will far outweigh the savings realized in hiring cheaper developers. Don't do it.
The speaking english is a big part, kind of hard to communicate without a common language.
Hey Dumbass, the Indian programmers do speak English.
"A very large programming project" is not one that would take four programmers six months to complete. According to Counting Source Lines of Code, Linux represents some 8,000 person-years of development time.
Why would a "small programming team [of 5]" be given "a very large programming project"? It's your job to point out to your boss why this is doomed to failure.
You have been given "deep pockets" to hire "four or five" Indian programmers? Let's be generous, and say that you're paying each Indian programmer $30K a year. That's a budget of $75K for the six month job. That's "deep pockets" to you? $75K is your idea of a budget for a "very large programming project"?
Given all this, I don't think you are qualified to manage a software engineering project, especially a very challenging one that involves remote development.
Under certain circumstances the global time difference can work to your advantage. A few years ago our company developed software for a Ground Station in the Deep Space Network in Canberra, Australia. We split up the team during the test phase and sent our testers to Australia while the main development team stayed in the US.
At the end of the project, the project managers were surprised to discover that the test phase of the project had been completed in half the time that had been budgeted for it. They had actually picked up time during testing.
What happened is that with the 12 hour time difference, the test team in Australia was working all day and sending in their bug reports the last thing before they went home. Meanwhile, the development team in the US would arrive first thing in the morning and find the bug reports waiting for them. They would work on them all day and send a new build to Australia at the end of the day where it would be waiting for the test team first thing in their morning.
Granted, this was a special case, but it shows that it is possible to use geographically dispersed teams to your advantage. Details on the project are available here.
I'm amused at the number of folks saying 'use IM' or such to communicate with Indian developers. When I worked with a Fortune 500 retailer using Indian developers, we quickly became aware of the 11:30 hour time difference between us. We managed to work in weekly video conferencing calls on most projects, eventually, though at the time getting good circuits up between here and there was expensive. I'm not trying to downplay the importance of communication - it is crucial in situations like this, but be realistic.
.... to fit your expectations. Training is important to ensure that they do not re-create work that has already been produced in your environment.
Another issue was the huge cultural gap between developers. How do you talk about distribution systems, etc. to folks who have never seen one or an 18-wheeler truck, for that matter. A lot of off-the-cuff discussions were rendered useless.
At the height of our involvement we had ~250 developers offshore. Once a year a couple of managers would go to Bangalore (and, earlier, Mumbai) to visit. I, along with a couple of my peers, traveled over as technical representatives. We gave classes on coding standards, reviewed work, answered questions, etc.
Acceptance criteria became a big issue for us. Many Indian shops are fairly focused and procedural. Both shops we worked with were heavily invested in CMM (both at least level 4) and the ISO 900X standards. This did not fit well with our looser development style. They were heavily documentation-centric; we were not. At the end of projects, they expected a short but focused review to assess the accuracy of their work to the project they were given. Being able to test their work and judge its fitness became key.
Perform code reviews and design reviews. It is critical that offshore folk be brought into the fold
"How long before your firm realizes that they can hire a manager on-site in India for a fraction of what they're paying you and not incur the language barrier and communications problems?"
The Indian on-site manager can much more easily aquire a supplier of Tiger Penis. His wife would probably take a job whipping up big batches of Tiger Penis Soup in exchange for a couple boxes of forehead dots.
I agree with the many previous posters that you should explore hiring a local programmer at a reduced wage before going offshore.
However, if you *have* to work with offshore development there's two concrete strategies my intuition (not experience) says would be useful:
1) Use Test First Programming, where you write the tests and the offshore team writes the code.
2) Have the offshore team work on easy non-core tasks initially to gain confidence that they can get the job done before relying heavily on them. These should have very short schedules one or two days, no more than a week.
At some point, you're going to have to make a trip over there to make sure everything is copacetic. If you expect them to follow a certain process, or to keep records a certain way, you're going to have to physically check it once in a while.
gwernol is correct in stating that offshore development is not a good choice for a small company. In fact, off-site development of any kind often doesn't work all that well for small companies.
You, as the team leader, will spend most of your time managing the work and little time doing any of it. If that's all right with you, great. Otherwise, do what you can to get your contractors on-site. (If you only need two people, there's no reason you shouldn't be able to do this.)
Been through this many times, on both ends of the contract. I'm wondering why your bosses are so keen on offshore people for what seems to be a small program.
gm
Ad luna, Alicia! Ad luna!
Since they call it Nippon, aren't you supposed to call 'em Nips?
Find another job ASAP. Even better, have what is left of your team find new jobs. You are all f**ked anyway once this starts to happen...
As soon as you have a firm job offer, give your 2 weeks notice, and watch your 'managers' freak-out. Be firm and professional. Deny any requests for any extention of your notice. Also remember it is none of their business why you are leaving.
With any luck at all, you will leave at a critical part of this out-source project, and it will crash-'n-burn.
Been there - Done that....
Communication is more than just a written language, well unless it's coming from your mouth of course.
Technology has become a primary asset in your organization, and software is at the core. Those who leverage software to respond to rapidly changing market demands will thrive, while those who don't may perish. SourceForge Enterprise Edition provides the flexibility and clarity needed in this day and age of Enterprise Application Integration (EAI) and co-development with strategic partners.
SourceForge facilitates agile software development, which in turn promotes creative collaboration and brings cross-team development projects to fruition, faster. The cost of software is based on developer efficiencies; therefore, reducing the time it takes to complete a project is key.
Managers and developers waste valuable time in meetings and teleconferences to coordinate their development activities. SourceForge addresses this issue by automating the collection of data and centralizing communication. With SourceForge, it's easier for developers to hand-off code to other team members, while managers have the necessary tools to make proactive decisions.
SourceForge provides the edge you need to stay two steps ahead. You will gain a more comprehensive and accurate vantagepoint of all cross-enterprise activities. With enhanced clarity, your organization has the ability to produce quality software in an efficient manner, while reducing excessive administrative overhead, unnecessary spending and duplicated efforts.
SourceForge is the leading collaborative software development (CSD) platform used by more than 400,000 developers worldwide.
VA Software provides SourceForge as an enterprise software product that integrates the essential tools for building applications. SourceForge enables companies to develop better software faster by bringing together the critical information and resources they need to collaborate more effectively across different locations, teams and participants.
By integrating tools for software developers, development managers and executives, SourceForge helps companies become more responsive -- and better leverage existing resources -- while reducing costs.
Learn how SourceForge and CSD are transforming innovation in the enterprise.
VA Software's flagship product, SourceForge Enterprise Edition, provides IT and engineering organizations with web-based tools that enable developers to collaborate, managers to monitor projects, and executives to obtain critical information on demand. Designed for installation behind customer's firewalls, SourceForge has the capacity to support development teams from 30 to upwards of 20,000 users across different locations, groups and participants. By enabling collaborative software development, SourceForge Enterprise Edition helps organizations become more responsive -- and better leverage existing resources -- while reducing costs.
No, Thursday's out. How about never - is never good for you?
The only language computers is taught in in India is English. If the programmer u speak to in India doesnt know English its probably a wrong connection and u r speaking to someone in China.
**Life is too short to be serious**
I am an experienced software deveoper that is fairly competant in what I do. I am presently living in Southern California, but i am willing to relocate to most places (especially moving back to the San Francisco Bay Area). A full resume can be found at http://xcf.berkeley.edu/~nordwick/resume.pdf or you can just go the homepage to find other formats.
Yes! I am using my +1 bonus, because I need a job badly.
A client I work for has had a team of Indian programmers working on a project for four (4!) years, and they are just now using the software. However, the system is being dragged to it's knees daily by all of the 'fixes', 'patches', 'remidies', and 'improvements' being submitted, unfortunately because the the work was not done correctly the first time.
1) Concepts we all take for granted don't translate well to people for whom English is a second, third, or fourth language. 2) You will be lied to. Bigtime. And when you catch them at it, they will try to make everything your fault. 3) Ethics we all grew up with are a foreign concept to our friends from the subcontinent. 4) A majority of the workers will be untrained or barely trained, and once hired you will be giving them a technology education while getting zero practical benefit. 5) When you insist on achieving performance goals, be prepared to fire them all if they don't perform. 6) NDA's, when dealing with foreigners, are useless. Ever tried to sue an Indian because he stole your code & is shopping it to your 5 biggest competitors ? There's more, but the picture is pretty dismal. All this because someone told the chief honcho he could get 3 for the price of one. Here? 30 million buckaroonies into the project and there is no end in sight, the screens & data entry flow are early Tinkertoy, and they have just bought Mondo Biggo IBM box just to get the application to the sub-20 second response time frame...
What exactly is the benefit of having your project worked on outside of the US?
Hire American.
Pick Canada!
No (huge) time differences.
Better communications.
Cheaper than whining unemployed, U.S programmers that are too high about themselves.
Being a code-monkey that works for bananas, I would give my left nut for $40 - $80 an hour. (The fact that I'm female would make it a little difficult though). There are thousands of newbie programmers in the US that would probably work for half that and are just as fast as the third world programmers.
I work with a group of 5 programmers that can each spit out hundreds of coding lines a day.
DON'T tell me that the Americans are lazy you Rat Bastards!!
"Make a car that everyman can afford, and pay him a salary that can buy it." Even the man who invented worker exploitation understood that you had to pay people enough to by the product. If Americans are unemployed and Indians are under paid (by our standards) who is left to buy the product?
There are a hell of a lot of good people in this country you could hire first dirtbag.
When you can't call the developers except at 1 AM, and when they don't have an intuitive understanding of the the cultural situation in which the product will be used, you've got a difficult time. If you add to that developers who do not feel personally responsible for producing quality software [and developers like this exist in ALL countries], it's very difficult to make any progress at all. You probably have techniques for dealing with uninspired programmers working in the same office, but you should realize that when they are working 11 timezones away you will have very little leverage.
later,
Jess
I am programmed for etiquette, not destruction!
It seems more and more companies would rather hire overseas help, than hire Americans. Indeed, in this case they are dropping two Americans, in favor of 3 or 4 from India. If you choose to support their efforts then you should move to India and become a citizen there, since the more people go along with this kind of insulting behaviour, the less jobs we Americans will have, and the more will be available in India.
Personally, I would tell them to go fuck themselves and find work with a company that puts the interest of the country and it's citizens over the bottom line
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
since when is "Windows, & Office" ... "decent software"
D el...reboot...crash...
its certainly not software for lazy people though:
crash...Crtl-Alt-Del...reboot...crash...Crtl-Alt-
A customer of ours has 20 coders in Nanjing, China. They can hire 10 coders for 1 US salaried coder. The customer also has a local manager there too but calls in at least once a day to monitor the progress. Apparantly it works really well for things like windows drivers since the training can be found relatively easily and the coder can be brought up to speed quickly.
Danger DANGER!!!
Make sure that any Indian you hire went to IIT...it is a very good school and there is a campus in every major city...every other school in the country is garbage. Picking up a half dozen IIT grads will be about equivalent to a half dozen Waterloo or Cal Tech grads here.
I worked as a network administrator for a small software firm that brought in a few people from offshore to do contract programming. Our lead programmer (also Indian) was very concerned about these people taking the code and running. With a lack of jurisdiction, if a small Indian firm picks up all your code and decides to run off and make their OWN product, you're kind've up shit creek.
And your point is?
That the other guys statement was dead wrong, and is an exemplar of the sort of thing witnessed in this discussion.
Since when did speaking english meant two people can automatically understand each other? When did communication become so easy and trouble free?
I made no such argument. Your argument here is bogus-- you try to restyle the other guys comment into something semi-coherent, and then pre-emptively rebut straw-men based on the bogus assumption that I'll blindly oppose out at your refined version.
Communication is more than just a written language, well unless it's coming from your mouth of course.
Cheap invective is not victory.
That's a good one...
BlackNova Traders
Recently I've started getting a lot of spam from Indian companies offering to outsource development for me.. Going through my 'junk' folder I've had four of these offers in the past week.
I'm in the UK which, I believe, is considered cheap compared to the American pay standards so I don't have personal experience of doing this; but I have a gut feeling that it would be a bad idea...
You mean Hindi, right?
"I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
I think its time I move to India to find work!
I sure as heck can't find work in the dang country.
McDonalds is becoming a more tempting employer day by day.
/.................../ \\
so... here I am wondering how I'm going to pay my power bill because I'm an out-of-work programmer w/ a degree everyone promised me would ensure I'd have a job when I "grew up" and you ask ME for advice? now that's audacity... my advice is to tell whomever you're "manager" is that you hate your fellow countrymen and would rather see them starve then spend a little more money (but probably not) on hiring (er. contracting) them. Hell... I know plenty of programmers right here that would probably do it for what the Indian's would charge you.
My company has outsourced several projects to international software houses. Lately, our sub-contracting has mainly been done with two Pakistan-based companies, techlogix and systems ltd. (systems.com.pk). We found that Pakistan has generally better bandwidth in contrast to our experiences with development houses based in India. The developers we are dealing with now also seem to have a better grasp of english. Don't what what the deal is, but that seems to be the case.
We heavily use Instant Messaging and NetMeeting to stay in touch. We've had shared whiteboarding and video conferencing sessions with our partners fairly frequently.
Good luck with your projects, but you may want to shop around and check some of the other international vendors before making what could be a pretty pivotal decision.
Joshua
Start with a really good CVS (Check-out check-in.)
Make everything and I do mean everything a configuration item:
configuration management documents,
object repository
class/method code, (The CVS itself)
data instance (data sources & sinks)
project & subproject
tasks & milestones,
configuration item production and consumption
(critical) paths,
human resource experience set
skill inventory
task experience requirements,
design specs,
analysis docs,
layouts of
files,
tables,
object models &
relationship models,
presentations (screen & report),
system architecture documents,
strategy documents on
database,
middle ware,
business logic &
presentation layers components & reuse
coding specs,
reusable components
code classes and methods/functions,
test plans,
test runs & results,
implementation/deployment plans,
migration paths from
development, (stages and what
testing,
production to
final deliverable packaging.
Then, maybe, just maybe, you may be able to create something and deliver something that won't make you want to stick your head in a bucket in shame, at all, never mind on-time or under budget.
There's a lot more to managing a project than inspirational speeches and waving "The One Minute Manager" around and failing to remember Brook's "Mithical Man Month."
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
Just a warning though, you will need to interface with the alpha male and he has a reputation as being even more difficult to deal with than your average PHB.
Now since when have americans started speaking English?
Cheers
Ravi
Is it ironic to anyone other than myself, that comapnies such as this are reacting to a down turn in the US economy by placing their money into circulation in other contries. I feel that we need to somehow make it difficult for them to do this.
I have a great idea, how about being part of the solution instead of the problem by keeping your money right here in the good old U.S. of A. Where is your sense of patriotism. Not only would you be helping your country, but you might actually end up with a product that works!
More to the point of the question. I have been in the position of leading software teams that were brought in to clean-up (i.e. re-write correctly) systems that were outsourced to Indian companies. It is often far more costly in the long run to deal with inferior off-shore companies just to save a little cash up front. There are quite a few issues to think about along the lines of the quality of the work, the knowledge that the team has (or most likely, doesn't have), the cost of maintaining and expanding poorly writen code, etc..
Maybe your company needs to call me, and let me and my people take care of your software needs for a reasonable price.
I maybe a bit biased (I'm Russian) but Russian develoeprs are betetr educated and more proffesional. We've been working with various American and EU teams for several yearswith good results. Please note that outsopircing doest eqaul explotation of offshore develoeprs. $1000-$1500 /mno we are gettimng here allows for a very comfrotable midle-calss style life.
US-UK-Israel: The real Axis of Evil
Pray that they speak english and know how to spell.
I've seen FAR too many projects shipped overseas and come back a HUGE, mangled pile of absolute crap that had to basically be rewritten because you couldn't understand what the app was trying to tell you.
Ed R.Zahurak
You know, oblivion keeps looking better every day.
If you're going to look international hire canadian where you still have some legal control over the persons working for you ... eg mr indian cant sign nda's etc and have them mean jack all.
On top of that canadian programmers work for approx 27 thou cdn/yr which is like ~18 us. much cheaper than even your out of work american because our cost of living is lower in most areas.
on the subject of management, i manage a small cdn/us dev team for php/c/etc we heavily use CVS and SSH shells. For communications we use voip software but without the middleman (we can all figgure out how to set a subdomain to our current ip). With this level of free communication you can pretty much keep a video/voice conference going at all times with everyone on your team.. Someone has a question they just ask. Welcome to the world of enabled im systems.
Email, I send almost no email. Why because the lag time on email is usually 5-10 minutes with the best of people, it takes a very long time to collaborate effectively on a project if they feel they cant ask questions and try to figgure out what you're asking on their own.
Treat remote developers as peers, they cant easily tell what is an order and what isnt. Trying to play control games over the net will not work and most of the time if you say anything you will regret your boss will already have a copy in his email. Even if you're in a position of authority it's "can we do this" (even if you know its more then possible) and "i'll get right on that, and we'll merge em at time x" it makes people much more responsive to deadlines if they feel like they're holding up someone who's being nice to them..
Thats just my two sense tho.
What's the name of your company? I refuse (whenever possible) to have any dealings with companies based in the U.S. that prefer to hire foreigners over Americans for a job that could just as easily be done by an American. It's people like you, who whore for un-American companies, that make me want to puke!
This poster's name secretly replaced with Folgers Crystal Meth
...and you want my help in doing it?! Cram it!
This post is protected under the DMTA (Digital Millemium Trolling Act). It is illegal to moderate it as a troll.
I work for the state. It's a lot of work but state workers get a LOT of time off. I generally accumulate more leave than I can use. I'm looking at 4 weeks of unused leave this year.
Instead of going off-site, try and recruit currently working programmers to chew up their leave at YOUR office. You generally only need warm bodies in copious amounts at certain phases of the cycle. You can hire three or four warm bodies to hammer code for 60-70 hours a week for a few weeks and complete much of the base code. Your in-house staff should be able to do the rest.
If you aren't part of the solution, there is good money to be made prolonging the problem
Use some H1B visa's to import slave labor!
I think saying that you survived the slowdown is a bit premature. first, the slowdown is not over, and second, you only have 2 programmers where 4 are needed. Sure bringing in cheap labor may look good to the accountants but you are far from out of the woods.
Look at the comments - they reek of the automobile industry unions in the heydays of US manufacturers moving their plants to third world countries
If you just hand off the programming work to a team overseas (especially in India), be prepared to have it utterly fail. I've seen it happen time after time after time...
Your only chance is if you have key company personnel overseas managing things every step of the way. You've got to have a very good manager there making sure that *your* priorities are being adhered to.
Overall, I'd say to be extraordinarily careful before undertaking offshore development.
Why are you letting these clowns ruin our country?
A problem with managing remote programmers is that it can be hard to quantify our work. This is where I suggest weekly reports. I know most everyone hates to do something like that, but they are useful for both the employer and the programmer. A weekly report due friday allows the programmer to quantify their work for the week, explain programmatic issues and provide a refresher for them monday morning when they resume work. As a team building exercise, it can be useful to read each others reports when you run into a problem because someone may have already ran into it. I may be working on server code and am having a problem with UDP packets and someone else may have an insight that would help me.
For the employer, it helps you understand exactly where each programmer is at in the project. If a junior programmer seems to be hung up on the same problem for a couple weeks, you might have another programmer temporarily help him resolve it or move him/her onto a different task. Since you can't physically be there to check on progress, this is the next best thing. If it gets to the point where you have a performance review, there is a lot of existing documentation available for you to review.
We do our weekly reports in HTML so it can be viewed from any machine with a browser. As someone who hops back and forth between Unix and Win32 environments, I prefer HTML over the dreaded Word Document. Bleh. The hyperlink ability is nice because it can refer to earlier reports.
Regarding HTML weekly reports, I'd suggest making a password protected website available to all team members that contains the weekly report archive as well as a couple discussion boards. You can have general team announcements and have general product discussions. I believe a board would probably be better since you'll probably have team members in different timezones. The discussions can also serve as a knowledge repository. If, 7 months down the road, you wonder why one of the developed programs uses TCP instead of UDP you might find the answer several months ago in a discussion about that very subject. At my previous job, Terra Lycos, occassionaly someone on the team would wonder why we did something a certain way. Often the answer was that it wasn't feasible when we first implimented the technology. Or we didn't have the hardware. Or we didn't have the staff. Etc. Project histories (especially searchable ones) are damn useful.
Thats my 2 cents worth... I hope it helps. :)
Michael
I went to your homepage.
What did I find? Your resume?
Nope, just multiple pop-ups trying to install [the evil] gator in my computer!
Don't start blaming everyone else, maybe the real problem is that you don't know how to market yourself!
In California, the average house price is about $350K. In the Bay Area, the average house price is more like $450K. Maybe it's time to move to Mexico..
cpeterso
If the US economy is in decline then how can we have a rising GDP even during a downturn? Or are you just being a troll again?
Mac OS X and Windows XP working side by side to fight back the night.
Well, it can work out but if the project is in a time crunch, good luck. Are you simply contracting the development project out to a offshore partner? Or are you building an offshore team that will work for you in a longer term?
I think infrastructure is always the biggest issue when dealing with team away from the headquarter. Not in terms of language issue but simply time difference, computer networks issues (VPN, etc.), and human-to-human interaction issues. Not to mention project management of trying to making sure everyone is in sync. in terms of requirement.
BTW, I think requirement is probably the key here. I think it will almost be impossible to hammer down the requirement for a particular development work if not all the players are in the same physical location. Including the Subject matter expert, technologist, architect, business users, etc.
IMHO, there will be a lot of hidden costs involved in working with off shore teams. Especially for new development work.
Good luck!
-Joe
My management is thinking of doing parallel development of the same app, with two teams in the U.S. (working in two different locations about 20 miles apart), and one or two teams working in India. Each team would simultaneously be working on different part of the same app. The project manager and users would be in the U.S. The app is a rewrite of a large legacy app. It will be rewritten in Java, JSP, servlets, EJB's, Oracle, etc.
Does anyone have any experience with this kind of approach?
Stephen Molitor steve_molitor@yahoo.com
We've been screaming that at Microsoft for ages and look where it's gotten us - Nowhere.
Might as well be speaking greek to the guys.
You make it sound way too simple. You think that as long as an American company hires local Americans instead of foriegners then thats the best decision for the country, right? Well what about the American shareholders vs. the American workers? If the company outsources to India or China, it will save money thus increasing profits for the American shareholders. Not so simple anymore is it......?
Who matters more? They're both Americans.
Mac OS X and Windows XP working side by side to fight back the night.
Try IEEE Software Volume: 18 Issue: 2 , March-April 2001. It has numerous articles on global software development
Believe it or not, *I* once lost a job to Indian programmers myself.
But on a deeper level, you have to ask yourself WHY they are always going to be cheaper.
From the minimum wage thru "Building Codes", it seems that in America the legal system has "locked in" a vastly expensive cost of living. OK, I'm an American, so I know I've got a $100,000 house and starting from there, what kind of job can I be cost-effective at.
I always say "Freedom = Income - Expenses", etc.
I am kind of a lone fruitcake with few Email-buddies, so if by chance this kind of "Deep Thinking" might seem interesting, you might start off by buying a Garrett Harding book, "Filters Against Folly" is my favorite.
My compuserve in-basket will nicely truncate at 100 messages, so I'll risk giving out 74464.1722@compuserve.com, although I'll remain an Anonymous Coward for now
I wonder how many whining techies here that are loudly proclaiming "Hire American!" also dribble disdain about MS anti-competive practices and attempts to manipulate the market?
A global and free market place is the way of the future. You will need to learn how be competive on a global scale and not try to place artifical barriers to "protect your market".
On how the American Legal System has pushed us into "investing" in Consumption rather than Production, I also like "The Return of Thrift : How the Coming Collapse of the Middle-Class Welfare State Will Reawaken Values in America" by Longman, searching on "Longman Thrift" without the quotes works at Amazon.
The "used price" on this book seem to start at about 1 dollar - I think the insights in there are much more valuable than that, hmm....
You're obviously a management wonk wannabe. Go kiss some more ass...
Take a look at how much you think the cost of defining the project in great detail will be. And I mean great detail -- "a database with customers and stuff" will not get you what you want.
Then take a look at the cost of you managing the project. It's basically going to take all of your time for the whole project.
Add in the cost of QA-ing the results as they come in from overseas and sending bug reports back to India.
IMHO, as a professional consultant, the overhead of these tasks is much higher than the savings you can obtain. For example, a detailed requirements definition probably takes at least 50% of the cost of the project. Your management time is probably another 10% and the QA time is another (if you're lucky) 15%. That's 75% of time that the Indian's can't effectively help you with.
Even if you save 90% on the remaining 25% of the cost, you're only getting a 22.5% overall cost reduction. Maybe your requirements are already perfect so that 50% is really 25%. But you can't get any better than a 50% savings in that case.
If the actual programming is massive, it might be effective but most projects are much more about requirement definition than programming. So don't forget you're really only saving on the costs that can be outsourced.
Hell, I'd take a job for $80 an hour, and I think most other developers would too. And believe me, it's not difficult to find people with a great work ethic.
In my experience, people who don't work hard aren't given any reason to work hard. In other words, their companies treat them like dirt and make it well known that they are expendable. Who wants to bust their ass for a company like that? The secret to hard work is loyalty. Create a strong sense of loyalty amongst your employees, to both you and to each other, and they will bust their asses for you and for the team. I've personally seen people go from worthless slackers to amazingly hard and efficient workers and then back to worthless slackers as their managers changed. Great managers and great companies breed great workers. Never forget it.
Neil
You've got to be kidding... here's an example of something machine translated to japanese and back...
Original:
The choices are all date oriented. They are as follows:
1. All products except today and tomorrow (default)
2. All products that are a more than a week old
3. All that are more than two weeks old
4. All that are more than a month old
These will be presented as radio buttons in a modal dialog box. The modal dialog box does not close unless it is canceled or until all files selected are deleted.
One round trip:
As for selection it is date everything which is directed. As for those as follows there is a thing:
1. All products and the tomorrow which exclude today (default)
2. The week when is it is old
3. To be more 2 weeks or more which are all product everything it is old
4. As an option * button of the dialogue box with respect to the old form where so it is from month mainly everything these is shown. If it is not cancelled until or file everything which is chosen is deleted, the dialogue box with respect to form does not close.
It's hard enough to create a good requirements spec, imagine you're in a different country 12 timezones away, and having to go by something that reads like the above translation. My advice - get people who are fluent in English and give them the original spec. Keep iterations very short (like a couple of days), track and communicate like crazy, and don't get emotionally attached to the outcome or you'll drop dead from the stress. Good luck.
P.S. contrary to opinion expressed in most mails. Time zone difference is an asset. I do most of my client calls from 7 to 11 pm India time which is early morning in US. Also, most of our first-time clients are pleasantly surprised to find that 40 bugs they reported last evening have reduced to 2 by today morning !!
http://www.phprojekt.com I have this running to support a 200 unit condominium building. Its the best, has all the tools you need to organize a global team including incredible language support (course we know about the English thing). Good luck and . . . . . Thanks Albrecht (he made it mainly)
"You never want a serious crisis to go to waste." - Rahm Emanuel
We develop (in London) during the day, then send code off to the people paying us in the USA, who test it (through our night). (Testers must be cheaper than programmers).
Fire yourself, and hire an H1B team lead from India. Then they will communicate well, and you can go find another job with the satisfaction that you were so successful at offshore cost savings.
As an added bonus, when the project fails because someone in a foreign country steals IP or hacks in a back door, you can blame it on the H1B worker, and avoid any responsibility yourself.
One more thing: sending development overseas can only make your project take longer, even though it might be cheaper.
There are three people that you used to work with that now want to kill you.
Don't belive me, then read his history and journal here.
I consider myself journeyman; I've done this a few times on projects with 8 people * 4 months and 8 people * 2 years, and several projects of 2 people * 1~2 months, on projects that produced commercial shrinkwrap software, custom software for external clients, and software used internally.
1. Don't think of this as a cost cutting exercise. You may end up spending more money than you would have. Consider it a quality raising exercise; in many parts of the world you can get better people for the same price than you can where you are.
2. Pick your partners with extreme care.
Typically you won't meet these people before you agree a deal. Look at a lot of teams, and look very carefully. Follow up their references. Examine their work. Build up a scoresheet. You will be at least 1/3 through the project before you can validate your decision.
Choose people you like. You need to be able to work together - sometimes more closely than if you were in the same room.
Try to choose on the basis of having a long-term relationship. If your project succeeds then you probably will have one.
You need to budget a significant amount of time to do this. Budget proportional to the overall size and potential loss if the project fails. The rule-of-thumb is that you should expect to spend 1 month for each 4 months of project time. That is, for a project scheduled to last a year, you shouldn't be surprised to have to spend 3 months finding your partners.
3. To succeed, the team leader on your side needs a *really* good understanding of different cultures. This is critical.
In different countries, the average person behaves differently in the same circumstances. Unless you understand the cultural cues that people are giving, you won't understand what is really happening. You need to make sure that you are picking up on these cues or your picture will diverge from reality.
For instance - things to watch out for:
- Are you, or some of your team, women? Are your counterparts comfortable with being told what to do by a woman. In some parts of the world this can be a real issue.
- Do you understand and have sympathy for the religious beliefs of your counterparts. If you hire people who have a Muslim background, for instance, you should schedule meetings so that they are free at prayer time.
- Are there political tensions you need to consider? If you are working for a major corporate client, and your counterparts have access to potentially embarrassing documents, servers, sites or whatever, could this be a problem?
- What are the language barriers?
- Politics part 2. You also need to be aware of this on a wider scale - depending on where your partners are, it's quite possible that a war could interrupt your work.
- UI design is culturally intensive work.
- And much more.
Look for team-leaders/contact points that have experience of more than 2 cultures.
3. It's not the culture that matters it's the people.
Yes, the cultural thing matters a huge amount, but the individual people matter even more. You need to spend time developing personal relationships. You need to budget for this. This is even more important in light of the point 4.
There is an area of potential difficulty here... the nature of the jobs change. The people on your team are there to manage a process now, not to do the process. If you have a team of developers, then you may have a big problem; they are not going to be doing development. They are going to be contributing towards managing a development process. Do the people on your team have the necessary skills and aptitudes? Are they going to be bored and leave during the life of the project? What can you do to militate against the danger?
4. Contract and recourse.
You should work through a process of establishing a contract. But don't think that this is worth the paper it's written on. Its purpose is to establish a level of trust. If the project fails you have no practical recourse - it's a risk you take.
In my experience, once you have a contract you should be permissive about behaviour; the contract is usually fixed, but the nature of the task usually changes.
For instance, the contract will usually depend on a specification. It is very unusual for your spec to be complete. And it's likely that you will change items in the spec. Your contract should allow for these variations. It's a healthy situation to have give and take.
Do not enter an agreement where you talk to one person, but you never get to talk to the team.
4. Use a designated point-of-contact on either side. This is pretty much a full-time job for both these people. This relationship is critical.
You should assume nothing. You should be explicit about anything you want. You should repeatedly check that your counterpart understands in the same way that you do by asking for feedback.
You need to trust these people deeply (on both sides). If you feel that you don't, then kill the project, and do it early.
This is a difficult job. Externally this person needs to represent your point-of-view. Internally this person needs to represent the pov of your partners. Your internal team, and especially management, needs to understand that this is the job of this person. This is most important in a conflict situation.
5. Communication.
Establish several threads of conversation and explicitly mark them...
You will need a meta thread to discuss the project as a whole. You will need a thread to discuss schedule. You will need a day-to-day thread. You will need a thread for handling the formal changes - for instance if you want a new feature, you should discuss the possibilities in the day-to-day thread, but your partners should understand that they should only initiate action on this discussion once you have made a formal request.
You may need other threads too, depending on your circumstances.
5. Working practices (closely related to communication).
You need to set up fixed processes and working practices, and have well-defined areas of responsibility. You can't be woolly about any of this or it won't happen.
Set up a way to track issues so that they either have a resolution. This could be a spreadsheet, a web site. Keep the tracking mechanism separate from the mechanism you use to discuss the issue (probably email). Make sure that your partners follow this issue list. They should have power over it too.
Set up a code transfer mechanism, and standards - for instance is it a pre-requisite that the daily build is working?
You should definitely use a code versioning tool on any project larger than a month, or with more than 2 people. Establish firm rules for where the master lives.
Set up regular checkpoints. You need to establish these well ahead of time, and list the things that are important to meet the checkpoint. Of course these may be in conflict with the software design; some of the targets are likely to be there because of political pressure. That's why you need someone on your team who has an understanding of the design of the software. You need to ask for things that are sensible. Not impossible. Your partners may want to demo the software to you at the checkpoints. Or you may want to run a gamut of formal tests and report on the results.
6. Expect to have a separate Q+A person on your side.
In many cases, when you work on a team that's internal to your company, you don't need a Q+A person. When you are dealing with external developers you MUST have a Q+A thread and person. It's your way of measuring the health of the project.
Your Q+A person should have a good understanding of software development so that they can find the issues of concern... there's no point in complaining about the font size when the fundamental framework of the app is broken.
You should build test packs. Your partners should have access to these. Depending on the complexity of the app, and its purpose, you should consider building an automatic regression test framework into the code.
7. Payment.
This is your leverage, but you need to be very sensitive to the needs of your partner.
There can be problems getting payments to people. Set up the mechanism and test it with a small payment. You and your partners need to understand the lead times involved. These are often of the order of two to three weeks.
Once you make a payment, you should provide some documentary proof to your partners.
8. Close
When the project is finished then you should celebrate. It's very difficult to do this with people that are far away. Send gifts. Say thank you. Don't just kill the relationship - these people can be your friends.
Good luck!
- Have a current Passport and plan a travel budget so that one party or the other trades off coming to the other's home site, depending upon the nature of the work, at least once a month.
- Both parties must have an adjusted work day to accommodate the different time zones - get as much same time in office as possible.
- Since you're going to be on the phone daily, get a good overseas carrier and attempt to buy bulk rate time.
- Investigate satellite VTC with secure hookup because you don't want to worry about your business practices stolen. Buy time blocks and negotiate, negotiate, negotiate. (Don't use Internet VTC! I can listen in too easily. Remember, it's your company's intellectual property you're trying to protect.)
- Hire a person from the Military with C4SI to help you setup your project. (They're getting out of Uncle Sugar's service all the time.) Or hire a firm with these folks to be your security advisors.
- Use a virutal server (it should be transparent to the every day user where it's located) or replicate servers.
- Out of sight is out of mind. Visit, talk, talk, visit, talk, visit, etc.
Project/program management is tough enough without large distances and language barriers. Think outside the box, but be secure. Remember, step outside this country and people will be looking to kill you. Thus, my recommendation for a sound security plan.After the above, running the project will be a piece of cake. 8-)
Good luck! Been there, done that, got the T-shirt & ball cap.
--Stork
There is nothing any employer can do that would get me to do that again. Nothing. Not money, not promotions, not public glorification. Not even if they can teach my wife's cat to stop shedding.
Life is short, you should do things you like with your time. You are not going to like this. Trust me.
I've been here before - and there's more to consider than just billing rates and communication challenges.
One issue that seldom comes to light is that the increased communication requirements pretty much force you to use antiquated DoD-style waterfall methodlogies. These methodologies are notoriously slow, expensive, and failure-prone.
An alternative is an agile methology - such as RAD, XP, etc, etc. However - it's highly unlikely that you'll be successful with this kind of methodology being performed by an offshore agency.
My money is on a small, talented team using an agile methodology vs a large offshore team using waterfall. In fact, I'd give some pretty good odds on it!
Ken Farmer
Be VERY, EXTREMELY carefuly hiring people you don't know from India. We have had some horrible experiences, and it seems that many people I've talked to have had the same result. The quality of the code was so abysmal that it was thrown out completely, a waste of lots of time, and a waste of an unbelievable amount of money.
Not that US programmers are automatically good, but the quality of the rent-a-coder tends to be the worst of the worst, and can easily contribute to a failure of the project.
Detailed design docs, GUI prototypes, communitation are all very important.
However, check the quality of the company.
1.) Look for a company that is owned by an Indian who lives in the US. This will save you a lot of problems as a company owned by an Indian-American is more likely to have already addressed many of the cultural, not to mention technical, issues. Plus you want an Indian-American owner because they can better explain to you what to expect from the Indian business culture, some of which is actually better once you know what to ask for.
This is important because you don't want to spend your time and money teaching another company how business in done in America.
2.) Ask the company to provide you a written list of what documents and work products you can expect from them. This will cost you, but it will save you lots in the long-run. Every company claims to have process, but if you hold them to delivering an SRS document (etc.) before coding then you will quickly get a real feel for whether or not they use a formal development process.
3.) Ask about their facilities.
Find out if they own or rent the building. Companies that own have better financial backing and are more stable (usually).
Also, are they connected with a local University (this can save you lots of money and time for mundane programming tasks!). Affiliated companies can also hire more quickly should your requirements rapidly change. Also, they'll be more flexible with regards to a sudden and short-term need for additional staff.
Also ask about their Internet connection if you will be transfering large files. Everyone will tell you they have broadband, but you should test this by sending several large files (40MB) over a period of several days. Also, put instructions for downloading the second day's file in the first.
---
And Finally:
All in all, I would highly recommend checking out the company and not just they technical capabilities.
Also, don't listen to all the negative people who say that Indian programmers are not good. If they are not good, then how did they develop a multi-billion dollar software export industry (which happens to be the world's largest supplier of software services to the good 'ol US of A).
As an owner of a trans-atlantic software development firm, I wish you the best of luck. Plus, on the off chance that you get a lemon with your first attempt at hiring offshore, don't give up, just analyze what caused the problems and fix them.
Thanks,
Akbar
President, COO
America Technologica, Inc.
Try the Philippines -- it is as close to the US as you can get from any Asian country. Practically everyone speaks and understands English - no need to learn their language (Filipino). Should you explore this option, don't hesitate to get in touch with me.
I worked for an offshore company's US office for an year. All PR and client management was in the US while all the work was being done in Eastern Europe.
The best way is to have a local manager for the offshore team, i.e., send a person from your company to work with the team.
This must person have unedrstanding for the project on all levels and be competent enough to make quick decisions while your office is sleeping. He should also be able to speak the local language.
My experience of managing project overseas was extremely painful, despite the fact that I speak languages fluently -- it is extremely difficult to communicate via email AND avoid all possible misunderstandings...
There are so many good coders in this country who are looking for work. Why not hire someone to work from home at a lower wage etc. $2/hour genius programmers who never get your spec are too expensive.
Which dialect? I've got news for you: the reason everybody in India speaks English is that the dialects of Hindu vary so much that the only way they can communicate with somebody not from the same town or region is to speak English! Which of the 700 Hindu dialects to you suggest we learn, to enable us to communicate with all persons from India?
Bear in mind that your requirements will be written in English. English is the second language in india. Can you successfully order a Soy non-fat double latte in French/Indian/Japanese? That's nowhere near as sophisticated as a software project requirements.
IMHO it's these kinds of issues that make it hard. The time difference is just annoying. Are you ready for all your variable names and code comments to be in another language?
IMHO you will get better value for money in the US. I would be interested in contracting with you.
However, if you must hire offshore, look to Austrailia and New Zealand. Both english speaking countries where the language barrier is much less of an issue. You also will get good value for your american dollar.
Fiid - Ryhmes with Squid. Software Engineer
Communication
- Accents are different so English may not be the common language you think it is.
- Cultural norms are different so that someone may tell you they understood your instructions when they didn't really.
- Their day is your night so common conference call times may be hard to arrange and be quite expensive.
There is a wide variety of skill levels among Indian programmers, much wider than among US programmers. Since you won't really know what the quality of your team is until you have worked with them for a month or so, it is an extra imperative that you follow good software requirements gathering, design, coding, and testing principals. No shortcuts! Without good documentation, you will constantly be tripped up by the communication problem.A good local manager who has been brought to the States for a week and been thoroughly run through the documentation can make a huge difference to the success of the project. They will be able to solve local problems and locate suitable skill sets. They will be invaluable in making sure that practices like nightly builds are being followed, that warnings and errors in the code are being noticed, that code reviews are taking place, etc.
FreeSpeech.org
1. don't expect a normal work day for the next N months. they will be 10-13 hours ahead of you and will want to have meetings early am and late pm.
:-)
2. make sure your specs are solid. the adage "garbage in, garbage out" applies here. depending upon what company you go with, quality should never be a problem of itself. many us/indian companies are certified CMM Level 4 and higher. ask for metrics on their development projects' quality (i.e. % bug free?)
3. have meetings twice a day (morn, eve) with the offshore team until you are comfortable with the offshore pm/lead. ask for daily status reports.
not feeling funny today and since this is my bag, i figured i would go for helpful.
Not wanting to run down the reputation of Indians (I've worked with several good ones) there can be communication problems when phone/email is the only source of communications. Many Indians are not very forthcoming, if there are problems, they will tell you half the problem, then quickly back off and promise to solve it themselves, when what is really needed is someone who will dig their heels in and say "No, I CAN'T JUST DO IT, I NEED A F**KING DEBUGGER!"
This can be a major problem with remote management, the severity of problems doesn't get through to the manager, so they go unresolved for far too long.
If you want programmers who are cheaper than yanks, and willing to tell you to get f**ked (when you really need to be told) hire Aussies.
The time-zones work well too, especially if you're on the West Coast, there are a few hours each day that are "office hours" in both sites, so you don't have to stay up till midnight to make your phone calls.
#define BLATANT_SELF_PROMOTION_MODE ON
I'm working on a project for a US based company now, part of a team of 6, and it's going well.
In fact, the project I'm on will be finishing very soon, and I know several good people I can recommend, so if you're interested, drop me a line.
#define BLATANT_SELF_PROMOTION_MODE OFF
Quidquid Latine dictum sit, altum videtur (anything said in Latin sounds important)
We (my partner and I) have 20 programmers that work for our very own foreign-owned company in Vietnam.
:-)
Our guys are *good*. They're smart, constantly learning new things and are quite dedicated. At need, they willingly work late hours for special projects and accelerated deadlines.
But one thing that makes our projects work so well is that we think of it (as another poster said) as a **long** commute. One of us is there for about two weeks every month. Houston to Saigon averages about $1000-1100 per flight. It is a *required* business expense for us.
And it's a two-way commute: we're very anxious to get individual staff members over here as soon as we can (lots of visa problems thus far). Not only do we want to get them property indoctrinated with US business practices (!) but we want to show them that a Houston summer is at *least* as unpleasant as one in Saigon.
> no offence
Isn't that how the american word 'offense' is spelled in England (which is where India got its english from)?
Dude- Don't know if this'll go through or not, hence the CC. Anyways, I just thought I'd say that I DEFINITELY feel your pain. I can say that because I'm going through the same thing myself right now. I graduated last spring with a B.A. in Biology and a concentration in Computer Science. CS is what I wanna do with my life (for now, at least...being a 23 year old in Minnesota), but I got the Bio degree because for a while, I wanted to go into med school. Blah blah blah, shit didn't work out, and now here I am: 43K in debt (thank you, private school student loans!), unemployed, and living at home. I haven't worked in 6 months, and I'm beyond broke. Every fucking place I apply to for computer-related work REQUIRES 3-5 years experience before they'll even look at your resume. That means that people like you and I get left behind, with nothing to do. Literally no place will hire entry-level people since they have a plethora of experienced MSCE junkies to pick from. People tell me to "hang in there," and that "don't worry! The industry's turning around again...", but those people all have jobs and can rest comfortably at home, while I type this in my bedroom at my parent's house and wonder if I'll ever hear back from the batch of resumes I sent off this week. Basically we have bad luck...we were born 5 yeas too late. The sad thing is that I talk to people who are in the industry, doing stuff that I want to like being a Sys Admin, and I'm confident that I could do their job better than they do it. I've had one interview in the last 6 months, and it was the head IT guy interviewing me. We started talking computers, and I brought up Linux and UNIX stuff that I'd done in college. He listened patiently for a few minutes, then asked me, "What's Linux?" (they ran a MS/Mac lab). Those are the kind of people who have our jobs, my friend. The only thing we can do is be a passive observer to this fucked-up industry for now. All those proactive zealots who preach patience and harassing HR until you get the job can kiss my ass...I've been doing that for over half a year and I'm still at ground zero. What can I do? Well, today I applied for a waiter job at the local pub and a cashier job at the bookstore I hang out at. The money I'd make there won't even pay off my loans, but at least it's something. Keep your head up, but don't give yourself a fasle sense of security or hope...there's nothing worse than being let down over and over again. Word. -magz
"Hell hath no fury like a woman scorned for SEGA. ..."
That's entirely true: practically everybody I talk to about a prospective project asks me who we've done work for. Nobody ever asks who we have worked for twice. But that's a very important metric: how many clients have given you another project after you delivered the first one? How many clients have given you a fifth, or a sixth, or a twelfth?
In the case of this thread, the original poster is stuck with a contract shop--he thinks his options are an outsourcing company in India. My point was to emphasize that unless his project is huge, he's a lot better off looking for outsourcing help closer to home. One option is to hire a firm like us (and nobody has ever suggested that our code was anything less than spectacular, I might add); another is to hire a Canadian firm. Any way he approaches this problem, his employers have decided they're going to outsource the project.
Depending upon the project and the consultant, you may not have to have a lot of in-house support for a project. One of our clients is a major industrial gas company--we've done a bunch of work for them over the years. Some of those projects have been turned over to in-house staff; others, generally smaller projects, have a corner of somebody's desk, but if the app needs tweaking they'll toss us a couple of bucks to make the changes. We're sufficiently tuned into the client's release procedures that we look like just another development team at roll-out.
Other consultants have different views--and perhaps they make more money than we do. My view on consulting is that I want a continuing relationship with a client, doing new and interesting stuff. I do not want to spend my career fixing bugs and writing tweaks for ancient projects on out-of-date platforms. The way to get to do that is to be the guy the client thinks of when they're talking about methodology, be it "software engineering" or something else.
1) There is a good code base development in Mexico. Some of the universities and institutions over there are recognized in the U.S.
2) The time zone is comparable to the U.S. and it is easy to fly to.
3) English is also spoken.
4) The same technology is used and understood over there (OO, C++, C, ASM, UML, etc).
I work for a consulting company and have heard more than once, we like you better but this other company is cheaper. This is usually from companies that have gone the cheaper route once or twice already and have failed.
Most people and companies don't understand the difference between price and cost. Price is what you pay up front. Cost is over time. Yes something's price might be considerably less but the cost might be much higher. You get what you pay for and you don't get what you don't pay for. There is a reason most companies are thought to be penny wise and pound foolish, it is because they look at price only and never see cost.
What a bunch of FUD!
It is also risky since India is a third world country
Software developers in India have as much access to the latest technology when it comes to computing as any developer in the US would. I don't see how India being a third world country in any way negatively affects the expected output. On the contrary, lower costs means you will get more bang for your buck.
and its neighbor is about to launch a nuke at it.
Pakistan is no more likely to launch a nuke on India than Cuba is to launch one on the US or than someone is likely to fly another plane into a major US landmark. For all the posturing that occurs, the last time Pakistan and India were at war was over 30 years ago. War hysteria is something politicians stir up to distract from local issues and rarely result in much action.
The rest of your arguments are valid but the xenophobe in you sticks out when you make blunt statements like above.
Mmmm.. Donuts
> Learn to speak Hindu.
:-)
Nope. Go to Ireland instead. Culture is closer to home, country is physically closer to home, no language barriers, big pool of highly trained, highly productive programmers who *like* working for American corporations, they're slightly more expensive than Indians, but a *lot* of US software companies do work in Ireland (including Red Hat as well as that one from Redmond, WA).
Biased? Nah, I live there
Alan Cox is not a US citizen. Red Hat is a US company based in North Carolina. Whether or not you can program like Alan Cox can, have you even thought of complaining about that? Oh, and Linus Torvalds was not born in America, either. Should Transmeta have hired an American instead? Funnier still, Windows and Word were heralded as examples of how smart and productive American programmers are! Am I really reading Slashdot?
Sarcasm aside, there's no such thing as an "American job". When Toyota and Honda build cars for American consumers, they manufacture at least some of those cars in the US*. Did they steal Japanese jobs? Qualified or not - and I'm not saying you aren't - you are not entitled to a job.
* They may have been required to. In any case, are you complaining that they're not building all their cars in Japan?
Give me a call. I can build a relatively inexpensive team here to do it. Lower wages, easy and desirable travel, and fiber-optic to the US. Intel has a large presence here.
Hold pointed end of knife to left abdomen
Pull inward forcefully
Move blade quickly from left to right
At least you'll still have your honor
Errrr, I used to be a programmer and read /. every day. I've recently been promoted to a manager and I don't know what the fuck to do. heeeeyalllp.
ok. so they trim the team. fine, that's money. hmmm...they now got deep pockets (ok, so maybe not as deep to keep the original team...). so now u (yes, u...) expected (!) to build a similar (ok, ok...the same...) team. but now you got to add your overheads. deep pockets...hmmm....not deep enough i suspect. drop them.
The "problem" isn't companies who place their money in foreign labor. The "problem" in the tech sector was the overwhelming surplus of hype and shortage of real products that people actually wanted to buy. Couple that with the dot.coms which had no business plans going out of business, they made up a huge bulk of the customerbase of companies that bought all those IT products int he first place. Do you get it NOW?
Mac OS X and Windows XP working side by side to fight back the night.
So, for all of them, I cordially invite you (and the company you work for) to piss off.
Now that that's out of the way, may I say that while posting this question here was in poor taste, I understand that this decision wasn't yours, so I'll offer a little advice: If you have any instinct for self-preservation, you'll find a new job immediately. This project is doomed, and that failure will be pinned on you. Find new work while your reputation is intact.
Or, if you actually don't care that you're going to get fired anyway, think of this: is being the go-between for a hostile employer and an apathetic programming team really what you dreamed of doing when you grew up?
don't do it, it will be a total clusterfuck. Unless you like daily conference calls at 11:30pm.
These are my friends, See how they glisten. See this one shine, how he smiles in the light.
Just a quick rejoinder to that one you have thrown about Enron:
The problem was that Enron (like most other MNCs), bribed their way to an extortionist contract that would supply power at three times the going rate (this was termed as "progress" by the then government which accepted the bribe). Trouble was that a huge stink was raised about the extreme fishiness of the process and all hell broke loose soon enough. The whole thing is a sad commentary on how one half (the west) is just as corrupt as the other (the east).
(reformatted because of /. lameness filter)
Todd Modjeski
Near Homeless, currently in
Morgan Hill, Ca.
email:hire_me(at)picputer.com
Objective:
To obtain an engineering position that utilizes my knowledge of embedded systems, audio, hardware, and or multimedia.
Skill Set Summary:
Operating Systems: Windows, Linux, OS X, CICS
Embedded OS: MQX, Nucleus, Custom Designed
Microprocessor: ARM7, MIPS RISC, Intel 80x86, Motorola 680x0
DSP: Analog Devices 21xx, 21xxx, TI C54, C55
Microcontroller: 8051, Microchip PIC, Z80
Primary Languages: C, C++, Various Assemblers
Other Languages: Basic, Pascal, PL/1, Cobol, JCL
Hardware Tools: eCAD, Logic Analyzers, Distortion Analyzers, In Circuit Emulators, EPROM programmers
Software Tools: GCC, GDB, RCS, CVS, MSVC
I/O Devices: USB, I2C, ADC, DAC, CODEC, Digital I/O, LCD Display Panels, PC Keyboard, Serial Port, Parallel Port, IR, Servos
Data Formats: MPEG, AC3, AES/EBU, S/PDIF, SMPTE, MTC, MIDI, AIFF, WAVE
Software Skills: Real-time Systems, Embedded OS Design, Signal Processing, Signal Synthesis, Digital Filter Design. OO, API
Hardware Skills: prototype hardware debugging, schematic design, pcb layout and design, analog filter design.
Education:
Illinois State University
Major: Computer Science
Minor: Psychology
Classes in digital and analog electronics
Graduated spring of 1991 BS.
Work Experience:
Independent Contractor 8/00 - Present
The bulk of my work has been with Spatializer Audio Labs, porting their technology to various CPU and DSP chips including ARM7, ZORAN, TI C54. I have also been working on PicPuter, a micro controller OS project used for device automation and event logging.
Gibson Guitar Corp. GMICS Division 10/99 - 8/00
Three former employees of Opcode Systems were recruited to start up a small facility in California to implement the GMICS specification for Gibson Guitar Corporation. GMICS is a digital interconnection cable standard for use with musical instruments based on 100 Mb Ethernet.
Debugged and tested the existing hardware for the GMICS evaluation boards.
Wrote an OS for the Analog Devices 21065 DSP that contained an action queue for real-time events and a cooperative multitasking kernel for non real-time events.
Created an API that allowed DSP effect parameters to be queried and modified through the serial port.
Designed and implemented an IO chip based on the Microchip 16F874 that provided the DSP with a serial port, an I2C port, an LCD display port, two PWM outputs, Analog Inputs for potentiometers, and general purpose IO to decode buttons and switches, or drive LEDs.
Opcode Systems Inc. 4/99 - 9/99
Opcode Systems Inc was a company that provided professional music applications and hardware. Their product line included their midi sequencing program Vision, and midi interfaces such as Studio5. While at Opcode I wrote the firmware for a USB midi interface that was to be OEMed to Digidesign for use with their ProTools product line. I was also involved in new product meetings in which I pitched several of my product ideas. Henry Juszkiewicz CEO of Gibson USA decided to stop funding Opcode so it is closed its facilities.
Designed and implemented a USB Midi interface.
Participated in new product meetings.
Independent Contractor 6/98 - 4/99
I worked on several small contracts that mostly revolved around MPEG3 Encoders and Decoders. They were used in various embedded systems including TV set top boxes and www set top boxes.
Pacific Digital Media 2/98 - 5/98
Pacific Digital Media is a small startup company that was going to make a high end TV products. I created a 2D graphics library and integrated an ADSP2181 MPEG audio solution for the project.
Developed an optimized 2D graphics library.
Wrote an MPEG audio subsystem.
Participated in product feature meetings.
Atari Games 3/95 - 2/98
Atari Games primary business is designing coin-operated video games. I was originally hired by Atari to help create the audio portion of a custom chip that would decompress MPEG video and AC-3 audio for DVD players. The chip was also going to contain a 'game personality' that included a 3-D geometry engine and wavetable synthesis. The project was canceled when we could not influence DVD manufactures to include our chip in their designs. Afterwards I transferred to the coin-op OS group. I implemented several algorithms for their high-end audio delivery system designed around a TI C31 DSP, including a new engine synthesis model, a tunnel reverb, general midi playback, and ported the system to use the cheaper TI C32 DSP. I designed a new low-end audio playback device based on a TI C206, added a streaming interface and ported an engine synthesis model to an existing system designed around an ADSP2181. Designed and implemented a portable audio solution. Maintained a consistent API for all of the game design teams.
Developed wavetable algorithms for a custom DSP, C32, C206, ADSP2181.
Wrote specifications for the execution units of the custom DSP.
Studied frequency domain compression techniques.
Designed an interactive real-time audio OS.
Created an engine synthesis model and a tunnel verb.
Maintained existing code base.
SunRize Industries 1/91 - 3/95
SunRize Industries was in the business of manufacturing Studio16, an eight channel direct to disk audio editing system that locked SMPTE timecode. Its primary market was the audio for video industry, although SunRize enjoyed sales from the music industry as well. I joined the SunRize team at the beginning Studio16 project. Influenced the hardware design designed around an ADI2105. Designed and implemented over half of the Studio16 software, including the timeline Cuelist. Maintained and refined the software until Studio16 became the industry standard audio editing system for Amiga computers and Video Toaster workstations.
Helped debug prototype hardware for two products.
Wrote all firmware and DSP algorithms for Studio16 products.
Wrote the device drivers.
Wrote several applications including the Timeline Cuelist.
Designed and implemented a video track for the Timeline Cuelist.
Aided in the integration of several third party products including the
Video Toaster, video edit controllers, and midi sequencing programs.
E-Z FM Synthesizer 3/89 - 9/90
E-Z FM is was a program that synthesized high quality audio samples using both frequency modulation and phase modulation synthesis techniques. The program contained several cut, paste and loop editing tools and could export the audio samples in several popular file formats as well as midi sample dump.
Designed and implemented all of the software.
Wrote a manual to accompany the software package.
Negotiated and sold the rights to market the software.
Listen to 570KVI - there's a guy running ads for web sites developed under $1000. His team is in Asia, so he can pass on the savings to you!
I'm sure all you out of work HTML coders appreciate this.
--- Jump!! Fire!! Bullet time!! - Lego version of the Matrix
Background: I've invested five years involved in the management and growth an Indian engineering team, and spent one year working for an engineering company based in Bangalore. I'd like to share some real experience and raw numbers for educational purposes.
First off, two things compel management to explore Indian development as a viable option:
1.) Cost savings
2.) They speak English
First, cost. The burdened rate for your average full time US software developer currently runs around $30-$50 an hour. (Burdened rate= hourly expense to the organization, which includes hourly wage, PLUS hourly breakdown of benefits, PLUS hourly breakdown of an individual's share of the operating expenses, calculated roughly as "AnnualExpenses / NumberEmployees / 2080", 2080 being full time work including vacation and all that.)
The burdened rate for your average web developer in Bangalore India runs anywhere from $6.50/hr USD for entry level engineers to $20/hr USD for intermediate host software end embedded engineers. Note that Bangalore is perhaps one of the more expensive markets for developers, certainly more so than Chennai and in Hyderabad (see below for regional discussion).
Quick - do the math. From a cost accounting perspective this makes loads of sense. The devil, of course, is in the details.
Next issue: "they speak English." That is true, but in the south, where the "High Tech Triangle" is defined by the cities of Bangalore, Hyderabad, and Chennai, often they speak Kannada or Tamil first, THEN they learn Hindi and English in school. Sometimes English isn't even their second language.
At this point many laugh and point out that there is then no way one could hope to understand these people, but that's an oversimplification. I've yet to have an experience where I've been unable to understand what an Indian Engineer is telling me.
Where this becomes an issue is where communicated expectations and requirements are sloppily conveyed verbally or through informal channels, such as Email. This audience of any should know to manage requirements well, but I've seen this mismanaged repeatedly.
Number 2 on the aged list of "Sex Best Practices of SW Development" states one should "manage requirements." Working with teams in remote locations, regardless if they are across the country or around the world, will fare far better if you nail this essential rule.
What happens if you don't manage your requirements? I encourage anyone to try working for a US company while located in a remote office...or even managing your project while on the road and working out of a hotel room. Working in India is often like working at the end of a 10K mile whip. Most people forget that hallway conversations don't make it to your remote office.
One more point on requirements: make sure your specifications include a definition of UI, preferably developed in the market where the product will be used, and look into using a string table to manage your strings, which helps greatly in your localization efforts. I actually make these recommendations regardless of where the SW team is located. Since when have traditional SW developers created winning interfaces?
If an Indian engineer has been toiling to get into SW development since they were 13 years old, how would they gain the experience to know what UI is intuitive? And even though developers have a good command of the English language, don't expect them to fix typos in your strings...which is why a string table is often better.
This is actually a huge issue, but in summary, nail your requirements and you come close to nailing this whole "they speak the same language" deal.
Finally, don't be shy to call during their operating hours, which on the west coast is 11.5 hours off. The work day typically begins at 9-10 am, and continues till 7-8 pm. Lunches are at noon or 1, and there is a coffee time taken at 3 or so. A phone call will nail close to every issue, far more so than an Email.
Finally, know your regions and how to take advantage of them. The "High Tech Triangle" is getting pretty sophisticated and therefore expensive, relative to other developers in other areas in India. Step outside this triangle and find some fat development deals, such as Profluent (not the one in San Jose), who is located outside this region and therefore hit even harder for business than those within, but my getting access to Profluent came through a strong personal relationship I have there. It pays to network.
Bottom line: process exists to negate risk, so evaluate the risks, then staff and define processes as appropriate. If I were to do it all over again, and I am, I'd invest in a project manager whose not afraid of 36 hour flights and 2 am calls, and I'd work with a smaller development shop before I'd work with a large one, for reasons I'll not enumerate here.
I'd like to end by sharing why I continue to chose native Indian developers for personal start-up ventures involving my investments: the developers I know there exceed the technical sophistication of domestic US resources. Too many American engineers smugly avoid cramming on diverse topics, a skill learned in the high-stress schools that weed our slackers. If I want good engineering work I call my friends in India.
I hope this has helped.
Programmers are almost as cheap here as they are in India, but they speak perfect english, they are laid back and easy to work with, and its a great place to visit if you need to!
Due to the economic slowdown, I think most of the 'injun' groupies are headed out of Santa Clara county. It's like injun over there I tell ya. But watch your six buddy, 'cos not all injun coders are what they are. I know some who couldn't even charge a laptop battery.
Your nationalist views are stupid and short-sighted, IMHO.
"I love my job, but I hate talking to people like you" (Freddie Mercury)
The only way to do it effectively is to fly over there yourself to manage them. Our company just finished a $3M project and about 25% of the way into it that became the apparent solution. It still ended up being a total flop and the guy who went offshore is now divorced and we're rewriting most of it back in the states now with people who can actually think outside the box. What still blows my mind is that management doesn't seem to mind losing $3M and 1 year of project time for some reason, it's like a page out of Dilbert!
Go with locals, they might cost more but you get what you pay for!
great, I wasted my fucking time on a CS degree. What a fucking load of crap. Am I an sucker or what?
A cardinal rule of software development: "Adding more developers partway through makes what would otherwise be a late project even later." See The Mythical Man Month for a full, well-thought-out explanation as to why.
Tastes like burning! - Ralph Wiggum
Many companies have tried the India approach but there are many tales of woe.
An alternative is to use New Zealand based developers which are low cost at USD40-60/hour. They do however have two distinct advantages.
1) English is a first language and US colloquialisms are understood as over 50% of TV programming is from the US.
2) The timezone is better being 3-5 hours difference from the west coast. This allows for daily realtime communication to occur.
I personally have contracted work through http://www.nothingbutnet.co.nz/services.htm and found the experience to be even easier than dealing with east cost US developers.
One of the really good things is that internet performance to NZ is also very good and using netmeeting over a 256kbit link works very well.
Sorry. Like a lot of others, I can't see the slightest chance of this working. 1. Your management is clearly clueless. If they weren't they would have the remote team lined up and a credible theory of how they are going to make it work. 2. You will have zero overlap in office hours between yourself and the Indians. That's, as Ross Perot would say, goofy. If you must do this, find some remote programmers with at least three or four working hours a day of overlap. 3. You will need very good specs. If you have very good specs, there is very little saving in shipping the work overseas. Writing the specs is the hard part. 4. There are conditions where an overseas partner might work -- for example, they have a well developed technology that you need. Or you have someone on your team that knows the foreign culture and some of the programming team. Or they have done a lot of successful subcontracting and THEY can tell YOU how to make it work. I don't see any of those elements here. My guess is that sticking around for this is signing up for a couple of years of sixty hour plus weeks and you will very likely not get much credit for sticking it out. If you are a consumate politician, you may be able to come out of it not too battered and looking like a hero. If you aren't, I'd say, get your resume up to date and bail. PS, I've worked with foreign programming teams -- Japanese, not Indian -- I don't think I'd do it again. The cultural differences are immense. I respect the Nihonjin a lot -- more than my fellow Americans in many ways. But Japanese and American approaches to doing things are very different. I've worked with enough Indians to suspect that the problems will be even greater there.
don't blame americans here preaching hire american, after all times are very tough for them and everyone had to watch his own ass first.
however, businesses survive because it makes business sense and the fact is that while US IT market was collapsing last year India grew by 40% so they must be doing something right!
anyhow its better if you shift to India during the duration of the project (or let an Indian manager there manage it).
don't read too much into the 3rd world label! u won't miss many things when u shift there temporarily (excluding american food of course!)
...are you EVER or did you already get over Michael calling you a kid for posting so many comments to Slashdot?
Mac OS X and Windows XP working side by side to fight back the night.
This pretty much goes for the outsourcing of any part of your business to another country.
1. You are sending your money to a different country. If this country doesn't play nice in the global economy, chances are it won't be back. Money spent locally will eventually return to your pocket.
2. You are sending your technology to a different country. Depending on IP laws, they could potentially steal it from you and then take your market.
3. You are sending your clients wealth to a different country. This is essentially the same as 1, but it's work repeating. If you don't hire people here, people here won't be able to buy your products. If you think you don't sell to the public, where do your clients ulitmately get their money?
Despite this, I advise everyone in Europe, Asia, etc to hire Americans! We don't suck, honest!
We have extensive experience using our off-shore programming resources, which have allowed us to write any type of software, in any language, for any operating system...and at a fixed cost with a fixed timeframe. If you need any information, please let me know, as we would be only too happy to help.
Unions have the side effect of leveling the playing field. Great for the slackers, not good at all for the achievers.
Most techies are not aware of this, but look at it from a global business point of view:
The very same countries that are offering cheap labor and crying about poverty are putting enormous restrictions against american interests in their countries. Many countries (yes, including India) have laws that REQUIRE you to assemble certain products in their country in order to avoid astronomical taxes. Others REQUIRE you to buy local products even if you could get the same products cheaper outside the country. And strangely enough, some of these countries have Most Favored Nation status bestowed on them by our beloved congress.
And people here are whining that the US wants to protect the jobs of its people. It is funny how whenever the US intervenes in the affairs of another nation, they are asked to f*ck off, but whenever it comes to economic help, the whole world plays the victim.
For the record: I am not american; I live in america. I support any country's rights to put itself ahead of its neighbors. I can't blame India and other countries for looking after its interest, but to be fair, America should be allowed to look after its people to. It does not make sense to import talent when there is talent in the country. What will happen in the end is that the standard of living will go down, real estate prices will plummet, the market will fall, and consequently pull down the rest of the world markets. Rising unemployment in the US, especially in traditionally strong industries, means world wide recession. Foreign workers send revenue out of the country. I don't blame them, if I were a foreign worker, I'd do the same thing. In the end, Americans pay taxes and elect their public officials in order to prosper.
The bits of Canada I've been to, you can get arrested for speaking English in the wrong place.
You think I'm kidding?
Try renting an English language video in Quebec.
Quidquid Latine dictum sit, altum videtur (anything said in Latin sounds important)
Its already well stated in other articles here, but just can't be stated enough. Just say no. Just say no. Just say no. And then go get yourself a load of self respect and drop it on your bosses desk along with your resignation. There are hurting, unemployed programmers in your neighborhood, guaranteed. There are other ways to save money. For example, if your management thinks they can handle having 4 workers half way across the world, why not just close most of your facilities and allow 4 new workers to join the two left in working from home and only going to the office for meetings. The company I work for has that business model, and I've seen that it works.
Having done this twice I know how to do this right. Our first experience was using an Indian Java team in Jamaica. We didn't write good specs. We didn't communicate well, and the code drops more often than not had to be re-written by the US based programmers. Generally it was a disaster.
We learned from our mistakes, but there were still disconnects. Our second remote team was based in Eastern Europe. We had established a formal process by then that included HIGHLY detailed specifications. We didn't even start coding until the remote team understood the methods to be used, the arguments and results of every procedure. It was painstaking work, but the code which was generated generally worked right the first time.
In conjunction to very detailed specs I spent every workday morning talking with the individual developers. We worked out details and unexpected problems, because despite having detailed specs to begin with, we didn't anticipate ALL of the potential problems. After each decision was made that was contrary or complimentary to the spec, the design document was updated with the new information. Sometimes we had five revisions a week. We kept our design docs in text mode so diff utilities worked to quickly assimilate differences.
I also spent 6 weeks of face time to work out design issues with new versions of the software. The Eastern Europe team was very sharp and had good questions and provided many novel solutions. Many of the things we encountered during design sessions was not how much we could do with the software, but how much we could cut out. Programmers love to solve complex problems. The challenge was to keep things as simple as possible.
Since we had a US team, we would often create stubs for new sections of the software before sending them overseas for completion. Then the resultant code was integrated back into the main product by US programmers.
Establish formal code review and testing procedures. There were bugs with the code that was found by both the US and Eastern European team during the reviews. We reviewed each others code too.
Establish formal coding standards. Tab stops, logic formats etc. Trying to resolve each programmers individual coding style is a painful exercise that is unnecessary. If you have to be a jerk about it, do it. It will make your life much easier.
Enforce in-code documentation. I can't tell you how many times I got code that worked, but knew that 6 months down the line when we would need to modify it for one reason or another, we would have to learn it all over again. Allow coders only to be clever when they have to be. Clever code for the sake of it is useless and counter productive.
Source control. Source Control. Source control. YOU are the authoritive source. If the remote team wishes to have their own source code server, don't let them do it, or use something designed for multiple repositories. CVS isn't all that good at it.
You will need lots of patience. Don't get ideas about starting something and then throwing it over to the wall to the remote team for completion overnght. It doesn't work that well.
If your team is relatively compact, establish end of day reports. I've used both 'stream of conciousness' logs and things more formal. Send thoughts and ideas to the mailing list for comment. Some idea you think is great has large holes put in it by local and remote team members because of false assumptions on your part, hidden dependencies and other similar things.
Finally, having said all of this, I would have to agree with the other respondents to this post. There are LOTS of top quality programmers in the US who are looking for work, and are HIGHLY motivated to do a good job. I suggest looking closer to home first. The thing that we lost when our company went to a global team was the creativity brought on by the spontaneous exchange of ideas. Each team had it's own collective creativity, but it didn't spill from team to team.
The larger team (remote) began to wag the dog.
'nuf said.
That said I have also heard that Bulgaria has very good and very inexpensive people.. but yet again I have never seen this team used for the most important, time sensitive things. An Indian team might be appropriate for a lot of work that doesn't need brains to build or test, has no hard deadline, and has an extra person or two on your side to manage them. This is DEFINITELY not a solution for a 4 or 5 man project. BIG MISTAKE!
If you really want to go offshore, call me. I am a highly experienced American in Tokyo. I'd try to be competitive of course but I'll be straight forward. It is not going to seem cheap but it will save you a ton of money. I understand engineering and have also used documentation, face-to-face, and telephone meetings to solve problems that developed in large projects that involved many offices around the world. For example I was hired to solve problems in a project that included a U.S. corporation, their U.S. developer, the Australian branch and their developer, ditto for Japan and cases of where things were going wrong in Australia, China, and Germany. Obviously the problem was with the parent organization and in the end, the Japan side decided the solution was to tell them to go to hell. You need someone like me, preferably based in the U.S. if you can find him or her, who has seen the same problems over and over again. Get your boss to give that person some control over the project and fire teams quickly that don't act professionally.
I think your company has made a mistake though. It's not like you can't find good developers in the U.S. who need work. Maybe if you and the remaining programmer threaten to quit your boss might get a glimmer of understanding. It's not like you would be spending your time doing anything constructive if you get into this mess. Look for a new job!
One thing I suppose I or someone like me could do would be to coordinate development while standing between the two timezones. I just have experience in it because there are a lot of Indian programmers here and I work with lots of Americans and Canadians. But best for you to get a consultant in the U.S. who can come in from the outside and tell your boss the same thing.
If you absolutely must use a given Indian team, prepare for spending lots of money on phone calls, hotel stays (at least one person, one month), trips of a 5 person team, lost deadlines, extra documentation to make sure everything stays on track, and an extra budget for a wig since you're going to pull out all that hair. If this thread doesn't convince you and your boss, you both deserve all the trouble you get.
I am an American who was hired as a program manager for an Indian-owned software outfit's US HQ. The guy who hired me quit soon after because he was fed up with what basically amounted to sabotage on the part of the Indian coders and managers in India. They tended to be unproductive over-promisers, but what was really worse is that they'd diverge from the customer requirement, sometimes trying to peddle off tools or other software from their "strategic partners" that they'd plow shitloads of money into, even if their products were garbage.
For one project, India sent over code that had to be laregely rewritten by Indians that were sent temporality to the US to work on the project. It's as though they needn't have even bothered over there. Also, because all they knew were MS and Oracle, the client got stuck with a Web server platform whose software licensing costs were over $75,000, all for something that could have been done easily on Linux/Apache and your choice of scripting languages and DMBSs.
My experience, after leading one project run totally in-house and contributing to others that weren't, was that the Indians might have been able to code things and deal with databases but they didn't have any notion of dealing with computers in general nor did they understand anything about security. FTP in the clear? No problem! Code stored together with data? Sure, anytime! There was simply no professional history there; no sense of "I built this well because I have to suffer the consequences personally if I don't." There was no sense of "I had ongoing responsbility for code I wrote".
I came to believe that it was wrong for these H1B shops to exist, especially when there are plenty of unemployed IT people all over the US. The INS needs a wake-up call from somebody in that regard; these companies are swearing up and down that they cannot find anyone in the US that can make Web sites and the INS is stupidly believing them. Now, I don't dislike the Indians; I became good friends with many that I worked with, but there is wage exploitation and shutting Americans out of jobs going on here and when you put your dollar toward that "offshore development model," you are furthering both of those cancers.
If you think that you can get your coding done for a lot less by Indians or whatever "offshore" group you care to utilize, has it occurred to you that the day will come when those coders simply won't stand for a fraction of the going rate anymore? Every time you take advantage of the wage disparity, you come closer to eroding the disparity. A Benz S-class is becoming as attractive to them as it is to you, and, guess what - it still costs a lot over there too.
Oh, by the way: if you get into a conflict with Indians, expect your fair share of passive-aggressive behavior. Remember, they practically invented it.
The guys were talking about trying to find a Chinese team (China to Japan is like India to the U.S.) that could do it. When someone is sitting in front of them who has the experience, the time, and is willing to meet the budget. If you have a hardware factory China or better yet Taiwan is great. But NOT for an important smallish project. You'd be better off outsourcing the thing to a small shop in your neighborhood.
To properly imaging how it's going to end up, think of working with a team of people, each of which you've never seen, and with whom you speak on the phone for no more than 30 minutes a week.
If you cannot avoid the split project, then you must allow for:
There are a whole bunch of other issues that are involved. In my case, the project was interesting, but the management and resolution of technical issues was an absolute nightmare.
I'm not going to try and just flame you outright because I don't think you deserve it. However:
"Bottom line: process exists to negate risk, so evaluate the risks, then staff and define processes as appropriate. If I were to do it all over again, and I am, I'd invest in a project manager whose not afraid of 36 hour flights and 2 am calls"
This is something that I don't find consistent with doing good work and living well in the process. For those kinds of flights and those kinds of phone calls to exist, you've already lost the battle. You're talking about putting people through tremendously unnatural and costly travel and disrupting people's lives for some BS software work that probably won't even be in use three years down the road? If this were a Moon landing, it'd be different; if this were a once-in-a-lifetime achievement for the participants, then it'd be different. But it's not. It's routine, everyday stuff - and here you are, expecting these earthshaking efforts as a matter of routine. That's how you burn people out and make them hate you.
In my experience, these offshore-development-model projects often wind up with team members who don't know each other and don't know you; you have no real sense of what these people can or can't do. Compare that to the notion of actually hand-picking and guiding a team who you work with all the time, with no time difference and no language barrier; in fact, you can even have a synergy that comes from having a common culture among your programmers (references to towel-carrying, terms like "Pepsi Syndrome," "Slashdot Effect").
I'm sorry, but I just don't consider Herculean acts of cat-herding in order to shave a few bucks
to be virtuous or admirable; you're just perpetuating a let-the-machines-and-the-money-run-me ethic that has nothing to do with having people live comfortable, fruitful lives.
Hey Cwimmer,
Why not hire local? I am an American in Graduate School in Computer Science and can help this guy out (see below).
Can you put us in contact with each other? I can offer my services for the same price that he can get the same programmers from another locale. The options of managing a team across the ocean or a talented American for the same price, I am sure he will choose local. Same skills, same price.
If your calculations are right, the total cost of a Chinese programmer is even lower than that of Indians. This fits with the view I've heard from some other big companies discussing outsourcing; India is getting too expensive.
Plus in China, with so many foreigners here chasing "the wild-wild east gold rush" you have excellent native-speaking systems analysts, project managers, even designers on the ground!
I've worked with Indian teams as well, and here are my experiences:
Language barrier
Over the phone it takes quite some effort to understand what they are saying; if you're used to the Indian English accent, ignore this.
Crap requirements management
Even companies claiming to be CMM Level 5 didn't manage requirements; they just casually talked about them over the phone. This seriously destroyed my faith in CMM Level 5 as a useful quality measure. Note that I'm not claiming most Chinese companies will be better, just questioning value of CMM.
Poor user interface design
Here I agree with the previuos poster: outsourced to Indian software development companies, the user interface will be everything but user friendly and obvious. One company that had the user-interface for their website developed in India had to offer 2 day training programs to teach people how to use the site! Talk about self-evident design! Let professionals designers do it. In China you can find plenty of US and English designers, at a very reasonable cost; they're here for the experience, not the money.
I'd be glad to forward requests to software development companies in China.
I know where the dot comes from, it's not jewelry at all. Indian husbands poke their wives vigorously in the middle of the forehead, saying "Why you so goddamn ugly!"
Why don't you hire US workers you fucking nazi! In this time of economic crisis, we need all the work we can get, and the fact that some god damn india fuck gets a job and I don't really irks me. Yes, I *would* work for cheep. So FUCK you.
-Jeremy D.
Why restrict your considerations to Indian companies?
There are a number of companies here in New Zealand that specialise in providing services to foreign clients. The exchange rate to the NZ dollar makes things very competitive - and you end up dealing with people who can understand your companies culture.
The typical Kiwi (*) developer takes personal pride in his/her work - this can work much to your advantage.
(*) Kiwi is a positive slang term for a New Zealander.
One company I know of is Black Coffee Software(http://www.bcsoft.co.nz) - there are many others.
I work in India doing offshore work. Keep these things in mind
1. Document and explain (by phone) the architecture and design well to the team
2. Identify one technical or team leader who will manage and give them clear deliverables. Do not treat them as if they are in the same room as you. Break your design into components/subsystems with clearly defined interfaces and give them one/many of those sub systems
3. Ask them to estimate their work and plan their work. Review the estimate and plan. Manage the sub project instead of trying to manage tasks. Challenge the team and give them autonomy instead of trying to micro manage. These are smart people.
4. Clearly lay down coding standards you will follow, checklists for code review and unit testing strategy
5. You can use a common repository but lay down the rules about checkin quantums, build procedures and integration points.
6. Talk to the team everyday for 10 minutes to get a sense of where they are at.
7. Review the code everyday. This gives you a sense of the actual progress, code quality and helps address issues up front.
I am telling you these things since I see developers in the US trying all the time to micromanage the team out here since they cannot see them and they feel very lost without "visibility". This leads to over management and lack of control.
O this learning! What a thing it is - William Shakespeare
I never knew simply wanting to make money was evil. Anyways, did you know that a significant amount of capital is held by regular workers in their pension funds, mutual funds and 401k plans? So ... when you say you don't give a crap about investors you mean you really don't give a crap about Americans in general. Of course you don't have to care about them, you simply need them. Without their capital you won't have a job. Even if you work for a private company it probably has public companies as customers or suppliers. Either way you need to take the needs of investors into account. And investors always seek to maximize profits and minimize costs. If that means outsourcing programming jobs then so be it. Its not the end of the world after all, just the exporting of one particular industry.
Mac OS X and Windows XP working side by side to fight back the night.
Like good ol' Fred Brooks stated: Plan to throw one away!
The salary surveys seem to indicate Programmers cost around AUD$45k to AUD$60k in Brisbane (a little more down south). If you can find any decent programmers in the USA happy to be paid $32k, hire them.
Australia has a very good university system creating very skilled IT professionals. Even when you add office space, super (Aussie 401(k)), and other costs (total of maybe 40% to 50% extra) it is very reasonable to set up shop here. Many of the large corporations IBM, MS, etc are doing it also.
Australians also have a similar business mind to Americans and understand basic conepts of fairness and contract law (yes they should be related). You can contract for a job and if things get messed up - it will not cost you a cent in bribe money to get a fair outcome if you need to go to court.
There is a large time difference but at least the Internet bandwidth is decent and your code and builds should replicate quickly. Phone calls from the USA can cost under 12c/min and Australia's DSL prices compare with the USA so tele-commuting employees may be able to help bring down costs further.
I only want to say that here in Argentina are a lot of qualified programmers without a job, and the currency exchange is very benefical for USA.
yadda yadda
1900 - Factories higher cheap immigrants over American workers. "It used to be that a man could put his 70 hours per week and support his family" 1980 - Manufacturing jobs are replaced by automation and cheaper Japanese facilities - "It used to be that a man could put his 40 hours per week and support his family" 2002 - U.S. Programmers are being outsourced by cheaper Indian labor "It used to be that a man could put in 30 hours per week, slack off at work, drive a sports car, and support his family"
I've used BSCW to do shared workspace on a relatively large project. You have to consider, though, that my job was managing BSCW, not actually using it, but the people that used said it was great.
All the people involved were at the same state, but some of them were a city away.
BSCW is based on Python and the server can run on Windblows NT/2000 and most U*NIX. The instalation and configuration are really straightforward and the user interface is quite easy to understand.
Utinam logica falsa tuam philosophiam totam suffodiant!
I managed an Indian team we inherited when we were bought by an American company. When us Canadians looked at outsourcing to India years ago, we concluded that the Indian folks cost just as much as we did, so there was no point.
But like I said, we inherited this team and were told to use them. The price turned out to be maybe 25-35% cheaper than Canadians would have cost - that surprised us.
So we did the "communications intensive" thing - specified in fine detail, lots of late-night conference calls, code reviews, examples, feedback galore. Cost us a lot of time and effort.
And in the end we found that you get what you pay for. In spite of all our efforts the team did not perform - we had to throw out everything they did for us - it just didn't work. We asked around and found that a good team would cost us as much as good Canadians.
In the end, the Indians, and half the Canadians, and most of the Americans got laid off when the e-business bubble burst.
Caveat emptor?
I've had a very good experience with outsourcing programming to China. We're a
small company with a (correspondingly) small budget and no inhouse
programmers. But we realised that if our company was to grow rapidly we had
to move a lot of our workflow online and offer 24/7 access to information to
our clients.
We spent a long time drafting a requirements specification and on paper
designing and re-designing the site until we were clear on what we wanted. We
took our specs first of all to several companies in the UK and discovered
that there was no way we could afford to invest that amount of money. In
despair and shortly before giving up a friend mentioned they knew a foreign
run software development company in China.
We contacted them and everything was plain sailing. No language barrier, even
more importantly no cultural barrier, the project was completed on time, on
budget and at a price that we could afford.
Being a web based application it was very easy for us to check the work as it
progressed. We did have some problems with features implemented wrongly but
that was down to our lack of experience in writing specifications as much as
anything else. Once the app was delivered we found a couple of show stopping
bugs during our own testing phase which if they had been allowed to go live
would have been a disaster, but we found them and they were fixed within
days.
We signed an ongoing maintenance contract with them which has been running for
a year now and so far we are very happy with it.
Retrospectively I think the key elements to our success were spending a lot of
time on the design and making the specifications very detailed and readable;
and having experienced westerners at the other end to translate our
requirements to the Chinese programming team.
i've been worthless, and hardworking. but yes, it depends on my mananger, the work given to me, and how i am treated. but doesn't that seem like common sense?
-Jon
this is my sig.
If you even hesitate to make a call to your working companions, how do you figure they will work with you? You'd better take that flight not and get to know them now...
Try Australia! Nice place, fairly cheap, speak English, understand Yank-ish, highly educated, great to visit. What do you mean you might not go back to the US?
"Cats like plain crisps"
Communication is the key...
Hold teleconferences or irc sessions frequently. Use instant messaging. Keep logs of every communication session.
there's a problem with the definiation of smart, but anyway.
the "best" programmers i've known are more experienced then they are smart. they KNOW what happens if you put a auto_ptr in the stl container, they KNOW what happens if you try to keep binary compatibilty with a VB program, and they know it all first hand, because there's a big scare of a bit mark on their hand from that last time this bit them.
i think it's important to be smart, but i think persistance and experience speak volumes more for the quality and productivity of a programmer.
-Jon
this is my sig.
I work offshore for a small ( 20 developers) US based company from India. I have been with them for almost 2 years now. That is also how much experience I have in the Industry itself. I won't make the mistake of saying that I am just as good as the developers in US. But thats primarily because every member on their team has a lot more experience in the Industry than I do.
Initially, yes the 9 am Conference Calls sucked, and it was a lengthy process trying to understand their requirements. But it all paid off eventually. Over the last two years, there has been plenty of work coming my way. With the ball rolling I always manage to keep pace and work to maintain standards. Besides, communication over Messenger and Email reduced the gap tremendously.
Once your keeping pace, working proactively becomes the next barrier which I surpassed in time. My work has always been assessed thouroughly and credit given where due.
The real meat in working 12 hours away was evident before a recent release where it was assured that after the Dev's in the US stopped working on a possible show-stopper for the day, I took up the responsibility of ensuring it was fixed during my work day.
Apart from the differences in the pay scales, I am sure you can see the inherent advantages. With my experience in the current team, my employers hardly require any management bandwidth to ensure I am productive.
Last year, the company had to layoff a sizeable portion of the development team. They retained the cream however to sustain their product line and to explore more lucrative avenues. In a show of confidance in my abilities they did retain me. Now having weathered the worst, I feel proud I stuck with them. What better recognition could one ask for ?
I guess the key to making this work is to ride the initial curve effectively, achieve tight integration and to not let the fact that your team is offshore turn into a justification for poor results.
A lot of the posts have been negative and it surprises me. Nevertheless, my post is not a defense for offshore development, I am just putting my experiences to paper.
- Santosh
Santosh Dawara
Why to choose India? There are other non-expensive countries around the world. Take Lithuania (or any Baltic State country). It is small european country which has high educational level and good software developers. Nearly all software developers speak English (and also Russian if you need). Cost is $5-$15/hour. Communication networks are good developed around the country. And - there are no big cultural differences as you have in India.
I present UI design and usability from this perspective: a successful design is one that factors for the human machine and its social and performance constraints. Too often UI design devolves into a subjective game resembling hand-ball with a curtain, which is totally unnecessary because in the end, lacking good customer data, no one really knows what constitutes good design...except the target customer.
Presenting the just the basics, stuff that is more than available in the US, I've found a great number of these junior -to- senior developers have taken hold of the teachings and have gone through extraordinary lengths to learn more so they can be successful UI developers.
The ACM's SIG-CHI has enjoyed an impressive increase in contributions from emerging Indian and Chinese experts, and the world's leading UI researchers often share their wisdom in these communities, so there's a change in the works.
Its interesting - not once have I experienced anyone on these teams argue that they can deliver intuitive UI design because "they too are computer users and thus know what is intuitive", an extremely common engineer cop-out for instituting good UI design methodologies. These developers understand they are located 10K miles from the target market, and the UI design fundamentals so often scoffed at in the US are simply accepted as tools enabling them to become more successful.
From a management perspective I suppose in the end its all how you sell an idea, how you position it as adding to their own personal "equity" as a developer. We've seen improvements in Asia, and slowly, in the US as well. I suspect competition is good for business in this regard.
I'd like to emphasize that being Indian or Chinese or Russian doesn't preclude anyone from doing good UI design - not making it a priority does, which displays reckless corporate disregard for maximizing profits over the product lifecycle. Once they accept their own limitations and how to use well understood tools for UI design, I've learned these eager contributors are often more than willing to put these new tools to work.
Again, thanks for the opportunity to be involved in this discussion. Cheers!
Our company once tried to develop a system with indian developers. Their lead developer flied over to us in order to manage the project. He was a nice guy and very polite but demanded a lot of attention from our senior staff because the specs we're not clear enough for him.
:).
It turned out to be a real disaster and the project went way beyond schedule and costs. Once it was finished the client wouldn't accept it because it was full of bugs and lacked functionallity. And as stated above the debugging phase was horrible because the programmers were already assigned to other projects and our guy at the office had returned to India.
My advice: let the guys in India develop nicely definied components for you. Just send them the specs for a function, class or include file that only does one thing. Make sure the specs and demands are clear and unambigous (as always
Then use your own time to test their products throughly and with a testing strategy and make sure your testdata has been developed along with the specs. And offcourse you have to put it all together and to make sure that the UI is consistend and ready for the market you are targeting.
Working in Northern Ireland and having managed a number of development teams for US based companies I can tell you of my experiences that are obviously NI based and have always been good.
If treated well developers stay with a company for life. Well at least three years and but +12 is not uncommon. This has advantages and disadvantages, you get staff with intimate product knowledge but if you hire a looser your stuck with him until you take action (more on that later).
Culturally NI and US are very similar. Just look out for differences in humour and a lack of political correctness. Some Americans have difficulty with local accents but this is rarely a problem and does not effect written communications. Other differences are holidays. We like to take three-four weeks at a time (OK, don't fall off your seats, this does not cause a problem, if managed). Work Ethos - we work harder during working hours but are much less likely to come in early/go home late. Typical working week is 40hours. My experience with American and NI programmers reporting to me is that it does not make any difference.
Government grant aid exists to help set-up a business here, especially if you plan to grow it, if nothing else they can help you evaluate NI as a location for offshore development (http://www.investni.co.uk). There are also grants for training and research. Personally I suggest treating these like a bonus, if you can get them great but don't base everything around them.
Developer cost range from less than $30K/year for a graduate to $60K/year for a senior engineer with 10+ years. Typical costs for a good C/C++ coder are around $45K/year. On top of this you should budget ~17% to cover employee benefits such as medical insurance, pension (401K) and government taxes. Graduate programmers are of a much higher standard than in the US, probably because they do a year out in a commercial environment as part of their course.
Office space is cheap.
Ignore anything you may have read in USA today or seen on CNN. Belfast is not like the image portrayed in the media. I have brought many Americans here, most were worried about their safety, and all have either been back or left wanting to come back. To put things into perspective, more people die on the roads here each year than due to terrorism and the general crime rate is one of the lowest in Europe (unfortunately going up).
Don't split the project between two different sites. Minimise the dependencies between sites and give each site a complete task and make them responsible for it and for achieving the deadline.
Don't underestimate the importance of face-to-face communications. It is surprising how much inter-company knowledge is passed via hallway meetings and chats in the toilets! Make sure you visit the remote office and make sure they visit you. You can fly to anywhere in the US from Belfast for around $600 via London and people here do not generally expect to fly business. In many cases it is cheaper to fly international than across the US. Flight times are around six to ten hours depending on location.
You can't just hire and fire!
People are generally on one-month contracts, this means recruiting can take two months (one month to advertise the position and arrange interviews another as the new recruit works out his notice). Getting rid of staff can be a legal minefield if you don't know what you're doing - so hire a local manager you trust and who knows what he's doing.
Time zone differences can be godsend and a nightmare. If you on the East coast then there is at least a 3-hour overlap with Belfast. Actually it's better than this because people on the east coast come in early. On the west cost there is very little if any overlap and this is compounded by California coming in late to the office. In my case working to 12pm my time on a regular basis, always having my cell phone switched on and offering reciprocal time to the staff working outside normal office hours resolved my problems.
As someone already pointed out the time zone difference can be used to your advantage if the task can be broken down to day sized chunks. This allows you to pass the project from one team to the other at the end of each working day. Personally I have only found this to work for bug fixes.
All parties need to be fully aware that it is important to accurately communicate the status of a task at the end of each working day. The number of times I came in to find an email detailing a critical problem but not providing all the information was incredible. In this situation I either had to waste time by exploring multiple possibilities or wait for my colleague to arrive for work in the states before committing resources wasting valuable time.
Good quality email, voice and Internet connection are essential especially if you go for a centralised source control system. Downtime on any of these systems is a killer.
Get voicemail at all sites, provide staff with cell phones.
Cliff, We have experience in offshore development and pratice this in the Czech Republic and other Eastern European countries. If you would advise or a partner to assist you in your quest, my company provides the specific service you need. You can contact me on: stuart.watkins@connect2development.com if you have any questions about this.
Step out of the airport, get in a cab, and try to get them to take you to your hotel.
Whatever hotel you finally wind up at, sit down and have a long hard think about whether this approach is going to deliver what you need.
Then come back home, and face the fact that THERE AIN'T NO SUCH THING AS A FREE LUNCH.
Yeah, but who in their right mind would hire the average Slashdot poster anyways? ;o)
I worked for an Indian company in the US (I'm American) that made a huge, big, giant deal about being CMM Level 5 ("one of only 5/8/12/21" as time went on, demonstrating how watered-down a claim it actually was).
First: all this means is that they along with some consultants developed a paper prodedure that the consultants judged as meeting Level 5. If that seems a little bit circular to you, it should. The consulants are disencentivized to really crack the whip; they won't keep getting paid if they do. So, whenever you see these Level 5 claims, always know that for all practical purposes, it's pretty much self-appointed.
In our case, I had a look at the document and, I'm sorry, but it just read like some kind of slapdash undergrad project - several typos and grammar train-wrecks on every page.
Second: I never saw the process actually used. Clients wouldn't sit still for all that bullshit anyway, and functionally we acted like a Level 1, Level 0, or even a Level -1 organization, if for no other reason that the project managers and tech leads *appeared* to be code-smart but *were definitely* everything-else-stupid.
I've done it. With mixed results.
I gave them the specs, and got shit back and did it myself.
Then I tried with others again, and forced them to do daily progress-reports and daily chat-sessions and frequent versions I could test and that worked to a certain degree.
The hourly rate sounds great, but if you calculate how much time you have to invest to control the bunch of fleas... it may be better to do it yourself.
I noticed a strong tendency to make up for the low hourly price by either working MUCH slower or many more days than necessary.
I worked with 2 companies in India and one in Bangladesh, the results were pretty much the same.
Ultimately I MIGHT do it again, but only for non-critical programs.
Without tight control, - forget it !
Reinhard
Offshore development is both good and bad. The toughest part is not being able to sit face-to-face for development discussions. The second hardest part is overcoming language and cultural barriers. The best part is that you can get some highly productive developers for a very low cost. Here are some tips for making it work:
- Hold a weekly conference call with your local and offshore developers to discuss progress.
- Stay in phone contact daily with one or more of the developers offshore.
- Use cheap PC video to add a dimension of being there when possible.
- Make sure you have a solid configuration management and testing plan. Your offshore developers should be able to access your bug tracking and requirements databases just as your local developers do. Plus they must have equal access to your source control systems.
- Iterative development and constant integration are key. This finds problems sooner which is key with offshore developers.
- Make sure you pound home over and over the reason for the project. Offshore developers are fabulous at taking a well defined spec, coding it up, and checking it in. However, do not expect them to understand your customer (some will but my experience is that these are few - mostly because of the business culture differences).
- That actually leads to a huge key: Define your requirements as much as possible. Even more so give them detailed design documents.
Offshore developers can be great, but you must work very hard to integrate them into your team and even harder at continually managing the project.
Remember, if they get stuck at 10am their time you can't answer them until 12 or so hours later your time and they can't start work off of your answer for another 12 hours. So you just lost a day.
Good Luck,
Travis Sparks
I worked with Indians and I think yes, they are cheap, but only 10% of them is good. If I were you I would go with East europeans (Hungarians, Slovaks, Russians) since a much greater pecentage of them is good (about 50%). And they are at least not a third-world country.
Well, I think that this is great. .... so if you make cars, get them made in India or China. Then you won't need any local computer staff - it can all be done overseas, and will be so much cheaper !!
If you make electronic goods, get them also made in India. It will be so much cheaper.
If you are a bank, send all your money to India, and get everyone in China to spend it for you. It will save you so much time, and money, and worry !!
If you sell fast food, don't worry. You won't be needed any more. Nobody will have any money to buy any, except in India and China. Brilliant !!
You'll even have time to cook yourself. ... get someone in Kazakhstan to make one for you. You'll be pleased at all the money you've saved. And they probably won't even need a computer to make one at all!
But what does your company actually do??
Forget the computing... the computing just helps you to do what you do, to run your business
You want a military fighter plane
You know it all makes sense... This report was done on the cheap.
OK, I admit that I did see some posts advocating avoidance of offshore workers, but there has been quite a crowd suggesting and rallying for the India cause...
Don't you get it? India is *less* wealthy than the global average. Americas/Europe (or whereever you are likely to be from) has *more* wealth than average. This means that if we keep importing work from India, India will become more wealthy, and if you can believe it, your neighborhood will become *LESS* wealthy.
How will that happen? Some of your friends will see wage freezes. Some will get layed off. Jobs will be harder to come by. And some of us will be reclasified from "middle class" to "working poor".