In this article I will try and explain when offshoring PHP development works, and when it does not.
First, let's discuss a bit of context. When a company says their rate is xxx per hour, you need to consider what that actually means. I'll jump straight to the ego, in our case:
- We work on an Open Source model, so the customer is essentially paying for the maintenance of the ecosystem they are working in within the hourly rate, but as a result there is a bit of a monopoly of expertise: you're paying the people who created the ecosystem, so there'll be a huge efficiency from that.
- In our case, often there is a certain lead of project management time that doesn't get counted in the hours. A project will be spec'd up, and we do try and charge for it in project management, but it is rarely equal to the amount actually spent setting up a job. When offshoring you typically do absolutely everything on the clock, because there's no lower service tier that the offshoring companies need to differentiate themselves against.
- When we use our hourly rate, it is almost always on a fixed-quote basis. The reality is we usually spend 2 or 3 times longer than we actually account for, because the hours estimated are usually quite optimistic, and in reality there are always things that come up, like bugs in third party code to workaround.
That's a big drop, but it's still less than half the price to offshore, and when you run a business you do need to be sensitive to costs, because if you aren't, your competitors will. So the happy-smiley feeling of paying Open Source developers can't be a deciding factor, unless of course you have a requirement to push the Open Source project forward because nobody else is willing to do so and you need that particular project in your business.
People in India (or Pakistan, or Russia, or any other country) are not inherently any more or less smart than people in, say, America or the UK. To say that is pure xenophobia and I find it highly distasteful.
We have a lot of experience offshoring to India. When I was running ocProducts from home (before we got our office), I was both the CEO and the only in-house developer, and there was no way I could sustain all the client work in addition to running the business and pushing ocPortal forward. So offshoring PHP development was at the heart of our business model. I didn't ever explicitly mention it, because I knew people would pre-judge it and I didn't have time to rebuke prejudices regularly (people wouldn't have given me the opportunity in many cases too): the truth though was I would review all the code before anything ever went to a client and make a tonne of changes, so it was pretty much irrelevant from a client point of view.
So, where can offshoring go wrong? Here's a list from my own experience:
- An issue called “power difference” comes into play. Developing countries usually have a culture where it is considered highly unprofessional to ever question someone who is a superior. Managers in Western countries usually thrive on feedback from people under them, and ask for all their decisions to be questioned, and I think this is vital to success. You really don't want people to be “yes men”. Don't underestimate the seriousness of this problem, a manager never has the time and perspective needed to perfectly explain a task, but if employees don't ask questions when they start to explore out the task in it's full detail, those tasks don't get done right.
- Time-zone differences: either you need to wait for a developer to come on-shift, or the developer is asked to work horrible hours and then sleep in a noisy city during day time (Indian cities are horrendously noisy).
- You can't look over someone's shoulder to see how people are doing. A manager has to find a balance between high-level management and micromanagement (the balance is different for different employees), and looking over people's shoulders occasionally is a great technique that is completely impossible with staff who are not in the office. Of course, this problem also applies to freelancers and people working from home. Don't think that Skype or desktop sharing will make up for this, it is far harder to get an accurate check using these things, and it takes a certain amount of negotiation and time each time you want to do it. I can say from experience that just walking around the office (maybe whilst walking to the door to go to the loo – i.e. taking out virtually no time for it) and checking everyone at once is infinitely better. Never assume people will pro-actively bring problems to you, because developers are all to at least some small extent 'shy', they try not to bother you, and they often do not realise how they could be working more efficiently.
- People are less likely to ask questions if they have to type them out.
- I have good Indian friends who know English far better than me, but the average Indian developer will make a lot of grammatical mistakes that need to all be reported or fixed in-house.
- There are differences in quality standards between developed and developing countries. This may sound controversial, but it cannot be denied, ask any Indian and they will say how their country is organised chaos. People in the West have grown up with an expectation of beautiful refined media, not things that are hammered together, and you often see this difference in the quality of online work too. It sounds prejudiced, and perhaps it is, but I think it is true for many cases (of course, you should never generalise and stereotype, it's a thin line to walk!).
- Offshore developers don't feel compelled to compete so hard to justify their rates, because there is nobody significantly cheaper for you to run to. Of course, many people have better reasons to compete than just based on rate justification, but I think to some degree the basic feeling of “you're paying peanuts, just how hard should I bust my ass for you” is sometimes there. Again, I don't want to generalise, because I have seen some extremely diligent Indian developers.
- The demand for offshoring PHP development exceeds the supply of developers, yet the price ceiling cannot rise due to the nature of the market, hence breaking normal rules of supply and demand – hence kind of tying up the industry in a certain mediocrity.
- Educational standards may be lower. A lot of people from India spend a huge amount of money in other countries to get educated. Of course, I can't say this for sure, not having experienced an India education, but I have some information on this from two people who have done degrees in both India and the UK.
- The more experienced developers usually either leave the country, or they get tied up in large corporates that work for companies like Microsoft.
- You cannot doubt that there will be cultural-based and language-based communication problems. To take a common example, pink in India is often a favourite colour for men, which is actually the natural case because it is a dangerous blood-like colour which goes hand in hand with your stereotypical male aggression – but a few hundred years ago that changed in Western cultures and it became female-associated.
- It is very hard to explain some things in writing, compared to demonstrating something on screen and using your finger to point.
- Most offshoring companies will not let you interview developers yet also don't have the same level of written programming standards a Western company would have.
My opinion is that you use offshoring PHP development if you have a task that meets the following criteria:
- It doesn't need much explanation
- It is quite long
- It involves standard skills
- It is not particularly cultural
This was article 4 of 8 in my "Web industry Exposé" series of blog posts.
If you think it's good advice, please share this link with others. If you think I'm wrong or have something to say, please discuss below.