I worked in a company that was predominately union, and part of the IT department got chucked into the union as a bullet point in the CBA, so about 30-40% of the organization that I managed back then was “represented labor”.

A few takeaways that may be relevant for thinking about how programmers would cope:

* collective bargaining brings the average compensation up, but also prohibits the high-performers from negotiating their own terms, so effectively performs as a ceiling to wages as well. This is not an asset in the IT world, as most IT jobs that were routine (data center operators, job-minders, tape rotators) have literally been replaced by robots. It’s all about individual contributors/stars now.

* During one contentious CBA anniversary, we (management) were worried enough that we got into some deep strike mitigation planning. It was probably healthy because it made us think long and hard about how the org could survive/operate without these positions, information that was still highly relevant even after the CBA was inked. The nature of every IT discipline gave us far more flexibility to turn strike mitigation into a strategic roadmap for staff reduction and automation.

* the protected tasks - only the monitor mover can move monitors thing - is often exaggerated but a flavor of it is very real. Once had a worker grieved because he had some cable crimpers in his pocket indicting he must have been doing protected work. Routinely had simple/quick jobs delayed because of a need to schedule with “the guy(s)” who could do the work, even if the work was something anyone else could reasonably do. Division of labor boundaries often seem absurd in the IT world.

* labor union disciplinary process and broader CBA objectives can drive retention of some pretty crap employees. The abuses I’ve seen are jaw-dropping and challenge the conscience.

* seniority wins in a union, meaning they “eat their young” when reductions are required. This employment preference for longevity over merit isn’t ideal in IT.

* on the plus side, there were union employees outside of the IT world (in the traditional trades) that really took pride in their work and the union as a driver of quality, professionalism, positive work ethic and craft. I had a lot of respect for those guys and their shop stewards exposed some of our workers to that in a positive way. But I don’t recall anybody but the worst employees in the IT space ever feeling like the union was a benefit to them.

* The lower-skilled jobs were unionized, and it made it more difficult for people in those positions to casually start doing more complex work and get experience that could help move them up (help desk to server admin, e.g.). For as much as the union wanted to protect their work, mgmt was equally incentivized to keep them penned in to their identified tasks, lest the union’s scope start to creep by virtue of “past practice”. I’ve seen that attempted.

So it’s very hard for me to imagine a programmer (who by nature is an individual creative star, not a wrench turner if they can help it) fitting into that world. The division of labor rules would be pretty stifling - what is your protected unit of work? By language? By platform? By module? Not saying it can’t work, but I think companies lose agility and workers are cut off from their potential.