It seems to start with the fact that many engineers think 100% of their job is coding, and therefore they can get "more" work done when working remotely. This is absolutely dead wrong. Engineers also should be accomplishing the following in order to maximize overall productivity:
- teaching other engineers
- learning from other engineers
- coordinating engineering tasks to minimize duplication
- doing what is necessary to ensure the software is what is needed
- communicating with others any insights that may be had while developing
- working with other departments to make sure everything is in place to build whatever it is you're building.
This is just what I can come up with off the top of my head in 2 minutes, and each of these things takes a significant hit when the engineer is working remotely. Any engineer I would want to hire has quite a bit more to offer than coding skills, and as soon as you require more than a basic automaton blindly building a product exactly to spec, you need human interaction with that person to maximize potential. We already learned this lesson a few years ago with the total failure of "all software can be outsourced to India!" I don't see why we need to learn this again.