Being fired for low performance is okay — if you feel you're continually perform poorly, you should start to look for another job well ahead of this moment. California is not a particularly saturated market for software developers.
Not following the legally required procedure is bad, though.
The problem is that companies following the "fire at least 10% every year in every department" Jack Welch philosophy tend to let some good people go. It's a management philosophy that just assumes that there's no such thing as a really good team, full of worthwhile players.
Its an attitude that works better in professional sports, where hyper-competitiveness is more often an asset than a liability. The knock-on effects of a bunch of coworkers trying to outdo one another to make the cut seem as though they'd make for a crappy work environment, which I believe is what VieElm was talking about.
It's not appropriate for me to comment on company HR policy. All I'm going to say is that my impression of the atmosphere on the software team is not at all "a bunch of coworkers trying to outdo one another to make the cut".
lutorm, I should have put a disclaimer in there. I know nothing about SpaceX policy and so I wasn't trying to cast any aspersions. (and frankly, the 3% figure VieElm mentioned sounds more like attrition than Neutron Jack policy)
Well it's well documented that what happens is that the system ends up being gamed. For example managers hire people to fire so they don't have to fire the people they've friended. See Microsoft Stack Ranking.
Not following the legally required procedure is bad, though.