This thread in Ask Joel is the most interesting discussion I've ever read abut offshoring/outsourcing software development!
It's getting incredibly long though, so it's really hard to read through. But the first 25 comments are definitely worth reading.
My personal take on the subject is roughly this: I believe software is art more than science. I think the best approach to make it look like engineering is something along the Unified Process - that's what the IT world has learned the hard way for the last 30 years! One golden rule of UP is to have the users and the coders communicating, to have them understand each other's constraints...
This doesn't mean I think nothing can be outsourced, but you certainly cannot carelessly offshore a whole IT department to a place with a radically different culture and expect that communicating with specs will "just work"! :|
If offshoring software development is ever going to succeed we'll need a whole new set of skills and tools (internet being one of them) to master it, and we're not even close! However, I think the experience of open source software projects developped by an international community are an interesting experience to this.
I would probably elaborate on this if I wasn't this busy reading the thread at Joel's right now! :>>