Try writing the software for a piece of hardware that is still being developed without everyone in the same place. it would be hell!
Language barriers, misunderstandings, the fact some things are just plain difficult to express, slow turn arounds, having incomplete specs and expressing which parts are subject to change, maintainability after delivery, accountability and international law, the need for regular contact between hardware and software guys, points of contact - if things go dark in russia, how can i get in contact? Config issues- the software doesn't work on my pc...licensing issues, source code availability and ownership, ability and cost of making mods to the code years later, unknown skill/professionalism of offshore programmers, etc etc. But hey, it could be cheaper...right?
Language barriers, misunderstandings, the fact some things are just plain difficult to express, slow turn arounds, having incomplete specs and expressing which parts are subject to change, maintainability after delivery, accountability and international law, the need for regular contact between hardware and software guys, points of contact - if things go dark in russia, how can i get in contact? Config issues- the software doesn't work on my pc...licensing issues, source code availability and ownership, ability and cost of making mods to the code years later, unknown skill/professionalism of offshore programmers, etc etc. But hey, it could be cheaper...right?