After so many years in this company, lots of the unmaintainable code I have to deal with is either my own fault, or the fault of someone I used to work with but and now they left and I'm the one who has to apologize for their code.
If I move to a different company, 100% of the unmaintainable code I'll have to deal with there will be someone else's fault.
And managers don't like it when you explain that the code is a unmanageable mess because they put a deadline on every goddamn thing and never pay off technical debt.
At a new place you can honestly say "the code is kinda a mess, it needs a bunch of work" and the manager can just assume it was because the last guy didn't know what he was doing and not because of their own shitty management.
Management could implement a code review process to avoid this.
Software development isn't a brand new field anymore. Most problems are well known and therefore have well known solutions. So it pretty much always comes down to management not wanting to implement the known solutions to the problems because its easier to blame the devs.
They did, that's why I said "team" in my response, however I will elaborate for you.
two Devs must review and one dev lead has admin rights to push to protected branches. Problem is when the whole team is not meeting expectations and they all jerk off eachothers bad code.
My team reviews internally just like they did, the issue isn't the review process. At a professional level you should trust your peers therefore the issue was the hiring and/or training process