Slashdot Mirror


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?"

14 of 671 comments (clear)

  1. Re:Yes. by BluedemonX · · Score: 3, Informative

    Don't you mean Hindi? Hindi's the language, Hindu the religion.

    --

    --- Jump!! Fire!! Bullet time!! - Lego version of the Matrix
  2. Re:Yes. by 2br02b · · Score: 3, Informative

    It's Hindi, not Hindu. And programmers from the south of India (where the IT boom is mainly concentrated) are likely to be more comfortable with English than Hindi.

  3. Do not do it! by Ted+V · · Score: 5, Informative

    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.

  4. Suggestions. by glh · · Score: 5, Informative

    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.

  5. Re:The usual suggestions... by crath · · Score: 5, Informative

    Just do the usual stuff...

    ...but in spades.

    My employer first began contracting work to India about 10 years ago. The first couple of projects were dismal failures; but we eventually got the hang of it and continue to use lots of India-based developers. Here are a few of our learnings:

    • make sure your design documents are very detailed: if you want a data structure built a certain way then write it out; if you want screens laid out a certain way then do mock-ups; the more written detail the remote team has to work with, the better
    • talk to them every day! Don't rely on email for your communications. Use IM from your home PC to stay in touch during the evenings. Set up a daily phone call with key team members and talk everything through
    • if you can afford to bring a couple of the remote team to North America for a few weeks, bring them over at the start of the project so that you can spend some time with them and get them started on their work while you can supervise them. This isn't because you don't trust them or they are incompetent, it's just a fact of life that colocated teams function better
    • plan project execution so that the application compiles, links, and runs from Day One. This is an area where Microsoft has it right: nightly compiles of the whole project that can be tested each day will ensure that the remote team is building the application the way you are expecting. The daily call provides a great opportunity to give the remote team immediate feedback on their work
  6. Re:Yes. by durdur · · Score: 3, Informative

    English is commonly used as the language of instruction in Indian universities. Assuming you are hiring college graduates, they will likely get along ok in English.

    India has 14 official languages. Hindi is widely used but is not the native language of many Indians and is not even related to the languages spoken in South India.

    So, while it would be commendable if you learned an Indian language to communicate better with your staff, you might have to learn several if they come from different regions of India. Not very practical IMO.

  7. Here's one opinion by gwernol · · Score: 5, Informative
    My limited experience of this makes me suggest the following guidelines:

    • Choose the work you farm out carefully. Because of the communications issues you can't expect the offshore team to work well on innovative software. If what you are doing involves building new technology or using known technology is an innovative way, you need to have onsite people. If the work is well understood and predictable, offshore can work well.

    • Over-communicate and formalize communication. The time shift makes it hard to make sure that you get back what you wanted. So write detailed formal specs. and make sure you keep them updated as the project progresses.

    • Build a trust relationship with the team manager. If the guy leading the offshore team is on your side you have a much better chance of success. Ideally travel out to the offshore location before the project starts to meet and shmooze him and the team. This is only possible if those pockets are really deep...

    • QA at home. The offshore team should be doing their own QA of course, but you need to run your own QA operation on all offshore code. Don't skimp this, or you will never have confidence in your product.

    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
  8. India isn't your only option by John+Murdoch · · Score: 5, Informative

    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:

    • There is lots of outsourcing talent here in the U.S., and your total project cost with a small consulting firm can be surprisingly affordable.
    • There is loads of talent in Canada where time zones, language, culture, and ease of travel are not problems.
    • The costs of outsourcing to the Indian subcontinent include a lot of travel, a fair bit of legal and contractual complexity, and a potentially ugly downside in the event of a project failure.
  9. Don't. by ceswiedler · · Score: 3, Informative

    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.

  10. Yes, Don't. by kevlar · · Score: 3, Informative


    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??

  11. Re:The usual suggestions... by CrazyLegs · · Score: 3, Informative
    I agree.... My company has farmed out some work to Bangalore and my advice is the same as crath's. My primary directives here:
    • spec your work as detailed as possible. That includes GUI look, feel, nav, etc. If you don't do this, you force your offshore friends to get creative - and you definitely do not want this. It's amazing how much cultural influence you get in a GUI design....
    • this goes double if the work is OO-based! OO development is by nature a collaborative effort, so we tend not to spec the details. This doesn't work when the team is somewhere else. Believe me.
    • establish up-front how software testing will be done. In my experience, unit testing is about as far as you want to go before they hand it over for system and acceptance testing. Otherwise, you end up with a big heasdaches (security, connectivity, etc.) connecting these folks to your internal development infrastructure.
    • bring a few of your offshore friends in-house to get a feel for the people and approach your IT shops uses. This is really key to building trust and context for future endeavours.
    • Only outsource what you know. Don't ask your offshore friends to develop stuff with which your company has no real experience. It will be a disaster for all involved. Trust me.
    Guess that's it. Good luck.
    --

    CrazyLegs

    "Pork!!" said the Fish, and we all laughed.

  12. RE: Managing a Global Programming Team? by ghengismcbangus · · Score: 3, Informative
    I work for a west-coast U.S. company. Three years ago, we aquired a company in the Netherlands. All of the employees there are fluent in English, and the developers are mature and skilled. They had an existing product which motivated the sale, and the developers there were very familiar with it.

    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.

  13. Re:regardless. by cduffy · · Score: 5, Informative

    Imagine people dying in the streets because they can't afford to go to the hospital, like the rich people that farmed jobs out to Banglna-fucking-desh.

    If there's that much more money in Bangladesh, though, then people there can afford to go to the hospital, and that many people are no longer dying in the streets. Moving jobs around doesn't destroy wealth -- it simply redistributes it. What globalism does is help make the market more even -- smooths out the particularly rich areas (as labor will be imported from elsewhere) and the particularly poor ones (as they'll be able to export labor cheaply). The net result, then, is that the standard of living everywhere will move closer to average -- without the use of government wealth redistribution (which I find repugnant) but merely market forces.

    The point I mean to be getting to, however, is that people won't starve -- they'll just have to work for less. Countries without minimum wage laws will do much better, of course (they'll be able to export the labor of folks willing to work for less than the minimum wage elsewhere, whereas those in countries with minimum wage laws will be unable to find work at all in fields where the going market price is below the mandated minimum wage) but that's a problem with government interference, not globalism in general.

    The main reason I can see people being homeless and starving due to such smoothing is artificial price floors -- minimum wage laws (allowing foreign competition to result in unemployment rather than merely lower pay), building regulations (raising the minimum price of housing and forcing people to be homeless rather than merely poorly housed), that variety of thing. Those problems can all be fixed -- and the net result will be less starvation. If there's less conspicuous wealth as well... so be it!

    And I say this as a capitalist myself -- but as a fellow who'se convinced he has even globally a better-than-average product to sell, and who is happy to have more buyers (and more competition among his suppliers!) even if it means competing against more of my fellow sellers. I also say this as a fellow with a sister who'll be halfway around the world in a few months who may not come back -- I hope that she can always find work able to cover food and rent wherever she goes; if that means taking a job exported from elsewhere (like my employer, which has offices around the world), all the better!

    You claim to be a "capitalist", but what you want is not a free market but a market rigged with tariffs and restrictions and taxes to benefit yourself alone. It's a short-sighted thing to want -- it may benefit you immediately, but the infrastructure set up to profit you immediately may bite you in the ass later; and the power to lay those tariffs in your favor can every bit as easily be used to raise the cost of the goods you sell. You mistake capitalism, a means of efficient resource distribution via fair competition, with unadultered greed; and shame the former in the process.

  14. Re: Real costs of Indian development by dahlgren · · Score: 5, Informative
    Bottom line: if you do it right you get what amounts to near-round the clock development at a fraction of the price. If you screw up, even as little as twice a week, you lose a week of development, and sometimes more.

    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.