It's you who don't understand how unions work - you don't choose your managers. You choose your union reps. Your managers are strictly interested in the good of the business, at any cost to you (structurally - individual managers may care about their employees, but that is a weakness in the organization) - the union represents your interests, at least to the extent that a democratic process can achieve that.
The union is there to equalize this relationship. Developers have to deal with a bunch of things they don't want other than live life in peace and code either way. With a union, they have some say in what that something is. Without a union, it's entirely up to the shareholders and pointy haired managers.
Now, if you're in a position where you are 100% critical to the business, than sure, the union may actually reduce your personal negotiation power. But the vast majority of programmers have more or less 0 negotiating power without a union. They take what is offered or leave, regardless of how much they enjoy their work or co-workers.