If you assign copyright to the programmers, then you have to create a license for the company. If at any future point that license turns out to be suboptimal, you have to renegotiate with all current and past programmers, at a disadvantage. This is a major headache.
Furthermore as soon as programmers start touching each other's code, they no longer have the legal benefits of ownership. So they have the choice between licensing code to each other (winding up in the same bind as the company), or else refusing each other's changes for their personal benefit (which will be a nightmare for the company).
By contrast if you go the standard way and assign copyright to the company, the company has no such potential headaches. Programmers who wish to use company code have to get permission to do so, but they only have one party to negotiate with. And programmers have no copyright incentive to block each other's changes. This is better all around. Remember that the goal of a company is to reduce the necessary friction in getting work done. Do whatever reduces possible friction the most.
If programmers are bringing useful code from elsewhere to the company that they plan to use elsewhere, then I would recommend having them either license it to the company under very generous terms, sell it to the company and get it licensed back, or rewrite their software. (Rewriting will likely take much less time than they think it will.) But in the end the company really, really needs to wind up with code that it controls and has full freedom to modify in any way that it wants with a minimum of intellectual property encumbrances.