Engineers with the lowest rated performance usually get that rating because they are thorough, methodical and diligent. In other words, they keep the poor code the other engineers write from making it into the shipping version. These are not the kind of people you want to fire.
Man, you have some piss-poor performance metrics, or you have an office of superstars where 'bottom 10%' really should be meaningless. Are you measuring lines of code or something horrible like that? All the people I've met in my various jobs that were rated in the bottom 10% always got there by requiring constant hand holding, failing to meet goals they themselves set, failing to learn or grow, or failing in any number of other ways. Not everyone in the bottom 10% is some magical coder that just "doesn't fit into boxy corporate values".
Yes, sometimes low performers add value, like doing some repetative crap work that you haven't automated yet. Firing them does put a strain on you to pick up whatever they actually were getting done. That doesn't mean you can't absorb their work, or automate them out of existence now that you have more of an incentive to do so. If you are firing too many people and can't absorb the X% of work they were doing, then of course you'll have problems. Yes, sometimes low performers are actually essential to the process and your performance metrics are way off. No, that doesn't meant that "Engineers with the lowest rated performance usually get that rating because they are thorough, methodical and diligent"
Computer Science is merely the post-Turing decline in formal systems theory.