The reason it was written this way is that the devel database is not actually a complete snapshot of live. Lots of tables and some whole databases aren't there, so pages break horribly in the devel environment. This should of course be solved by replicating the rest of the db...
It sounds like changes have been made directly on live and never propagated back. Which means that you're walking on a highwire twice.
Of course the way that you should do it is write scripts to update dev, and then when you're happy, run them against prod. That way dev either matches prod or is ahead of it. (Data, of course, gets copied from time to time from prod to dev.)
But you know that. Convincing the rest of the company is your problem...
Cheers,
Ben