A union doesn't need to be a mediocrity enforcing, all-encompassing beaurocracy.
Programmers don't need a union to ensure fair pay or minimum hours. Our concerns are different, and a limited union can help.
Eg:
1. Programmers need to be given 6 months heads up before big change in employment situation. (RTO, city change, etc).
2. On call hours on weekends need to be compensated as overtime.
3. Unused vacation must be compensated as overtime by year end. This also means that unlimited vacation policies should come with miminum compensable vacation days.
4. Standard minimum maternity & paternity leave policies. Also, additional compensation if layoff occurs after notice of mat/pat leave or soon after mat/pat leave.
5. All meetings from noon-1pm should have compensated food.
6. Any meetings after 11pm (of contracted timezone) should be compensated as overtime.
7. If an employee has to live more than a 1 hour rush-hour commute from work AND a company cannot find nearer housing for them at some standard rental amount, then the commute should be fully paid for.
None of these are unreasonable and all will benefit everyone. You can have students get union membership in undergrad. Universities can enforce entry permissions to career fairs on union compliance.
Now, absolute power corrupts absolutely. As vital as unions are, limiting their powers to valid areas is just as vital. That portion I still don't have figured out.