There are down sides to offshoring.
Distance (time zone), language difficulties (technical language is harder than standard language) and in some cases lack of security due to distance (violation of commercial confidence).
Companies have found the lack of ownership of their code base to be an bigger issue than expected (ie bug fixes or additions very slow).
Not to mention a back-lash from (patriotic) customers.
I do custom C/C++ development designing monitoring systems for heavy industry (rail, mining, farming). I spend a lot of time reverse engineering file formats of onboard data loggers or creating mechanisms for different systems to interact (ie STC NG HBDs -> micro PC -> 9600 BAUD radio -> train driver(speak alarms)/Train control software(visual alarms)/DB server(historic record))
I have work for at least the next two years, then the new GE Evo series locos will be more common (than the DASHs) and I start again....