My experience was unpleasant, but unions aren't automatically bad. I think there is a similarity to politics - when the same people are running something for a long time, it becomes corrupt.
The union I was in was not doing the best they could. They once decided to strike for more money when they already had a really nice thing going. They naively assumed the money was there for the taking, all they had to do was go on strike. Well, the strike lasted 5 months, they ended up taking the same exact offer that was on the table at the beginning (strike accomplished nothing). Then the company moved 75% of the work to a southern state. There were many officers in the union who didn't appear to do anything but collect a paycheck. When things were good, people didn't care that much. But after that long strike that got nothing in return, there were a lot more unhappy people. Not too long after all that work got moved, the union was disbanded.
We once needed network cables pulled and installed, would have been about a 4 hour job. It took just shy of two weeks because of all the different people who had to be involved. First guy came to drill holes in the drywall for the cable feed. Couple days later, two guys pull the cable. Couple days later, another guy comes to put connectors on the wires. Next week, another guy comes to patch the holes in the drywall. Then another guy comes to connect the cables to the machines (no, we were not allowed to do that because it was "electrician" work).
It takes reasonable people on both sides for a union to work as it should. The union should not defend people who are caught red-handed stealing for the 3rd time and insist on another written warning. The company should not try to fire someone because they didn't suck up enough to some egotistical blowhard.