A few things that a modern union could do:
1. Place limits on expected working hours. Let the management know that working above 40 hours a week, or needing to be on-call 24/7 should not be the norm. Let management know that using all your vacation time should be the norm. Set minimum amounts of vacation time for people to take, when a company advertises "Unlimited PTO". 2. Fight for minimum cost-of-living increases, presumably tied to a fair metric such as the CPI in an area. Every company that I have worked for has had a hard limit on the raises that you can earn each year--usually around 3%. This is typically close to or just above inflation. 3. Collectively hold the company leadership accountable for their actions. When management doesn't act in a professional way, they should be held accountable in the same way that someone lower on the corporate ladder would be. 'Unprofessional' behavior could be anything like sexual harassment, being physically aggressive, etc. We've all seen this first-hand or heard about it; typically HR won't get involved because it's easier to make the rank-and-file worker change divisions or leave, than to have the upper management change. 4. Place limits on executive pay relative to worker pay. Today a CEO makes hundreds of times more than your average rank-and-file worker. This multiple is only increasing. A union could fight executive pay increases without commensurate increases to worker pay.
A few things that modern unions don't have to do:
1. Push for equal pay among everyone. I think we can all acknowledge that knowledge-workers don't all contribute to projects with the same level of effectiveness. I know some of my coworkers are better at their jobs than I am--and I'm okay with them getting paid more than me. Because we aren't just a cog in a machine, it doesn't make sense to treat each other as directly replaceable parts. 2. Encourage workers to limit their productivity, for fear of eliminating jobs. The union should win when the company wins. The union should do its part to help the company create more value for the world, and make sure that the employees get a fair share of that value.
I think it comes down to being fair versus being equal. Workers used to be equal labor substitutes, so the unions treated everyone as equal. Workers are no longer equal, but unions haven't evolved to the new business realities.
For what it's worth, I'm not a software engineer and I don't work in the Bay area. My city doesn't have many job opportunities, so I don't have the luxury of just leaving a company without also packing up and moving to a new area. For my coworkers who own houses or have a family, this is particularly hard. A union could help us create a better working environment, but many people have this idea of what a unions are based on a system of unions that was based in 19th and 20th century manufacturing.