One thing I try to determine about startups is their ability to fire people.
Lots of the problems you mentioned sound like they were in part due to the company finding that difficult, and of course it should be noted that any process like this, about humans and done by humans, is going to have errors on occasion. The real trick is realizing and correcting them.
Yes. I've been at start-ups unwilling to fire people and it sucks.
I've had people suggest that "willing to fire" is a bad sign, because we can be even better by just always hiring the right people! Which is a self-reinforcing style, because now you really can't admit you hired the wrong person.
100% agree, but I think the real trick is not taking it personally. Too many people think that having to fire someone reflects badly on them, it doesn't[]. It only means that it didn't work out for some reason. I try to explain to people "work" and "not work" are two different places, like killing you in World of Warcraft has nothing to do with killing you in "real life", and not being able to work with you doesn't mean I don't enjoy or want to hang out in non-work situations. But that is a hard thing to separate for many people, they are their work and that means work is them.
[] The exception is when it does, they clearly hired someone for some bogus reason, but there will always be exceptions.
Lots of the problems you mentioned sound like they were in part due to the company finding that difficult, and of course it should be noted that any process like this, about humans and done by humans, is going to have errors on occasion. The real trick is realizing and correcting them.