Why does Software Engineering not have union representation like other professional occupations, such as teaching? Are there any unions for software developers that exist and are successful?
Unions are useful when one person can pretty much do the same job as anybody else with little or no training. By allowing employees to negotiate as a whole, you don't run the risk of employers simply finding the person who'll work the cheapest and driving wages down. (At least, that's the theory.)
For professional fields, when employees require particular skills and you simply can't replace one engineer with someone else with no "penalty". As an engineer, you have much more power to negotiate wages and working conditions on your own, based on your own skills and knowledge.
We produce a product - code - but we're not like typical unionized laborers. We're also not professionals like doctors and lawyers and accountants. (Can you imagine some hospital administrator demanding that a surgeon work overtime on Saturday - with no extra pay - to push a few more patients through?)
Really, we're highly skilled craftspeople, very similar to medieval stonemasons. The folks who built the great cathedrals of Europe varied tremendously in their abilities and qualifications, and job-hopped quite a bit - and still managed to have a Europe-wide guild. And woe betide the nobleman or bishop who screwed over a master mason... they could just kiss their project good-bye.
I often think we, too, should have a guild - especially when I read so many questions on Stack* relating to software developers being underpaid, having no life due demands to work huge amounts of unpaid overtime, and having to put up with crappy working conditions.
Software Engineers do have a union...
The "Communications and Computer Workers Industrial Union 560" is a department of the Industrial Workers of the World (IWW or "Wobblies") who work in the electronic communications industry. Their organization is open to workers engaged in computer operation, including programming and networking. See http://www.iww.org/unions/dept500/iu560/
Noam Chomsky is an IWW member.
Somewhat akin to the other answers, but the classic "professional" roles in society (doctor, lawyer, engineer, etc.) have not been unionized. The working class banded together into unions to oppose heavy-handed treatment by management and owners. By collectively demanding a change in their working conditions they were effective where a single person could not be. After the basics were covered (and indeed became the law of the land) the union leadership had to be seen to be doing something of value, other than drawing salaries out of the union dues. This led them to continue to demand more and more concessions from the management and owners, backing up the demands with strike actions when they were not met. Professionals never really dealt with the same issues and there was little or no benefit to joining a union. For creative professionals like software developers the rigid rules of a union where your time in the union counts for more than your skill is anathema to how they want to work. The strongest performers are the most likely to avoid a union; the weaker performers are usually for it because they can hide in the crowd and are guaranteed a minimum employment. Software developers are generally better educated than the average working class person and will ask hard questions like "What do I get in return for my union dues and the restrictions on what I can do?" and if the answers are not compelling they will not sign on.
The software industry lacks unions simply because neither the workers nor management see the need for collective representation. There are obvious reasons why management would rather not see software professionals collectively bargain on work issues such as compensation, working conditions, etc. But software professionals haven't felt enough discomfort in the industry as a whole to take action collectively.
But the larger issue is that software professionals also haven't looked at the collective representation model the same way professionals in other industries have. The American Bar Association could be considered a union for lawyers, as the AMA is for medical doctors, and AIA for architects. Those organizations define the level of professionalism for practices and skillsets that we should model ourselves on to improve the quality of software and working environments.
We must because it's clear the management at your company isn't likely to do it.
I've said this a few times in comments, but I think it merits an answer.
In the UK we do have unions for software engineers/programmers. The primary one is Unite, which has the primary engineering union as a constituent. The sector for computing workers is Graphical, Paper, Media & Information Technology.
The union situation in the UK is complex and now relatively few people are union members because of a lot of power being cut from the unions in the 80s, due to anti-union political policies and a few unions setting a bad example, which allowed the mood for changes.
To stay strong, most of the old unions merged together and have continued to do so for some time. When I was born, most engineers were part of the AEU, the Amalgamated Engineering Union, this merged with the electricians to become the AEEU in 1992. The AEEU merged with the MSF (Management, Science and Finance) union in 2001 to become Amicus. UNIFI (Union for the Finance Industry) and the GPMU (Graphics, Paper and Media Union) merged in to Amicus in 2004, and in 2007 the T & G (Transport and General Workers) merged in and the name was changed to Unite.
There is still strong anti-union feeling in the country, particularly from the professional classes, who mistakenly believe that the primary purpose of the union is to bleed companies dry by forcing up wages and striking. This is not the case. The primary responsibility of a modern union is to protect their workers from malpractice by their employers. This is usually in the form of free legal protection for defending members against illegal working practices, unfair/wrongful dismissal cases, health & safety issues, etc.
For the cost of being a member, the ability to get expert lawyers involved for free on your behalf when the ** hits the fan is a life saver. One of my ex-colleagues is presently taking an old employer to court over unfair dismissal claims. He was always highly anti-union and is now having to pay out an immense amount of money to take highly disreputable people to court who have huge wallets. Bet he wishes he had paid the £10.96 a month.
Most professionals, instead of joining "unions", join pseudo-unions in the form of professional membership bodies. The primary organisation in the UK for programmers is the BCS (The British Computing Society). Becoming a professional member of this body gives a degree of recognition, requires accreditation via exams, and gives post-nominal letters. The body also provides many networking opportunities via a wide variety of groups that meet frequently for talks and discussions. The organisation is also has Royal Charter, so can issue Chartered status to IT professionals, or indeed engineers as they can award the Chartered Engineer status. I believe there are equivalent organisations in the US and other domains.
Many professions also have regulatory bodies, which are usually compulsory membership and function like unions in part. Doctors in the UK have to be registered with the General Medical Council (GMC), and are usually members of the medical union, the British Medical Association (BMA). So it is not only teachers that are professionals and unionised.
To summarise, joining a union is possible for programmers and is highly advisable unless you have total blind faith that your working career will always be free from any potential legal situation. It is not all about the masses against the classes, it is just common sense to protect yourself and the family that depend upon your job.
Software Engineers don't like the restrictions on their freedom that unions bring about, and they tend to be more individualistic. They would like to get paid on their ability, not the same rate as every other developer. If they were Union they'd be stuck where they were if they had the usual defined benefits plan, unlike a 401K that they can move around without penalty; and Software Engineers probably tend to have job changes more due to the nature of project work, with each project having the potential to be quite different that the others.
Once Software Engineering gets more ho-hum and standardized, then you'll probably see more Unions involved.
TL;DR No unions because its not in the interests of everyone else.
There are some organisations for software developers globally, and in each country. They all share one characteristic. What do Professional bodies for software development like, IEEE CS,ACM, BCS, and ACS have in common: no regulatory powers. Not a coincidence. Don't want another Bar Association starting up. Programming is essential to the world but arrived as a job after the other professionals had already carved out their regulatory powers.
As Software Development is not regulated anywhere in the world, it is not a Licensed profession. Most developers have university educations and are culturally disinclined to join unions.
(I'm going to use the term software development instead of software engineering from a desire to avoid the whole what is software engineering issue)
There is an interesting piece of game theory going on too:
Young developers out of school take low paying positions to get work. Employers use the threat of getting in cheaper replacements to hold down salaries.
There is also a supply of discipline-crossers like Physicists, Electronic engineers and the like who will work in software development if they can get paid. Over production of EE's, Physicists and Mathematicians supply more cheap labour. ('Regular' engineering doesn't pay particularly well, and even being a PE isn't cost effective [check Job vacancies for PE positions and see the differential in pay against non-PE].)
Now this is not true in many other professions, as they are generally Licensed like regular engineering, Law and Medicine, for example: Lawyers don't have to worry about firms getting in Philosophers. (Junior law is a snake-pit though....)
Most western countries also have a special class of Visa for non permanent residents with Software skills. This is generally pushed by large firms in the country who want cheaper overseas developers. (Large corporates claim persistently there is a shortage, but this doesn't seem to be backed up by, for example by the US census data.)
Now, the Bar Association might have an issue if a special Visa was created for importing cheaper lawyers. This is not as absurd as it sounds, as Medical Doctors from most countries have to re-qualify to practice in many countries they might migrate to. So it seems like our professional friends manage that a bit better than us independent minded software developers.
So there are many downwards pressures on salaries.
Lets do a thought experiment. Suppose there was a global Professional body for software development. We're going to try to consider a situation where no software developer loses out. Not out of niceness, just because the jobs would all move to wherever the organisation wasn't. It might perhaps have a de-facto membership: if you develop software , you're a member. Lets suppose that instead of trying to get any country to stop importing labour, they just set rates that were global. The set rates would have to be ample for people in expensive, wester nations.
Obviously our brethren in the developing world would be very very happy. Happier than a Bangalore senior programmer. (and that used to be pretty happy IIRC.)
Now all software developers are happy. Who would be unhappy?
The Physicists and EE's and Mathematicians would be happy. ( They'd be software developers)
But individuals and business globally would pay a lot more for software. They'd be unhappy. Where is software used ? Everywhere in the world economy, there is software.
If such an organisation existed, it'd be banned immediately. ( in most "right thinking" countries. ;))
It is, I think an isomorphic issue to "too big to fail." : Too useful to allow collective bargaining.
Software developers are victims of 1) their own success 2) their penchant for undercutting each other. "The old rooster cage" argument.
Depends where you live - in Australia there is the Australian Computer Society. When I was at Uni they talked to us about joining, but I don't really see the value in joining - from memory it was pretty pricey to be a part of.
What do you want to get out of the union?
About the only "professional" job that's unionized, at least in the U.S., is teaching - and that's because they're public employees. Unions damage the companies they infest and make them uncompetitive - which harms the employees too. Unless your employer is a monopoly (e.g. the government) or part of an oligopoly (e.g., the auto companies), the union can't actually improve wages or working conditions. Programmers tend to be smart people, and see this.