I think we need a 21st century union. The old style unions fought for better working conditions (important) and overprotected the bad workers as well as the good workers. They also in a lot of cases limited salaries. The reality is that some developers are way better than others and as a result deserve more pay. So a union trying to negotiate every little thing would be a disaster. Hence why we need a new kind of union (especially since in the government money talks, and right now no one is advocating for the programmer, but the big companies are certainly advocating for themselves).
Below is a list of issues I think need fixing. I'm not looking to completely outlaw anything, but just for fairness.
Working Hours
The video game industry sure could have used a union when EA was abusing its employees. There are many other areas where developers have 60, 70 or more hour work weeks because some idiot in business over promises things. And the law seems to say in most places that programmers are exempted, or even if it doesn't the company will still not pay you and it is a big expense to bring a lawsuit. So working hours is a serious problem. I'm not saying that 40 hours per week is the maximum and anything over that should be illegal. But I'm saying if you are working 60 or 70 hours you should be compensated. I'm even willing to be fair and say that the extra hours can be at a rate of Salary / 52 / 40 * overtime. So basically each overtime hour is the same as a normal hour. For companies releasing a product I would say give the option to defer payment, but if that programmer is fired, all unpaid overtime is immediately due. The reality is that all the free work often expected is totally ridiculous. In many other industries overtime is paid at time and a half or more. The workaround is that many programmers get jobs that are flagged as manager type jobs even though they are a normal programmer. In other areas there are no laws saying anything about overtime.
Also overtime should be disclosed up front. It's not fair to hire someone under the assumption they will work 40 hours per week and then suddenly 80 hour work weeks. Programmers deserve the right to say no before they are locked into the company and trapped. There will always be some industries that need a crunch time, and people who want to work there. But there will be many who do not want to work in those conditions and they deserve the right to work 40 hours a week at the job of their choice. I'm not saying that they have to be allowed to work 40 hours per week at EA. The reality is most people know that at EA you will work over 40 hours a week. People will always want to join and the union shouldn't stop that. But they definitely should get paid. It should be illegal for companies to offer comp time or a bonus and then take it back. The reality is that in some form overtime should be guaranteed compensated, maybe time and a half or whatever the norm is, but I'm willing to say at just normal hourly pay.
The other thing that having to pay overtime would do would be to make management set more realistic schedules. They will no longer be able to cover up their incompetence by saying they delivered on time and under budget even though they set an unrealistic schedule and ran their dev team into the ground to do it. The money would show up and they would have to explain it. Then when it is realized that they don't know how to schedule maybe a new manager would come in who could schedule better. But I don't think management is stupid. I think once overtime starts to hit their bottom line they will learn. Because in many companies releasing a software product now or in two weeks doesn't matter. It is basically just some manager trying to make a name for themselves getting stuff done quickly. And those guys will probably be in trouble once overtime is paid and it all starts to show up for the bean counters. Most likely if overtime is time and a half they would be better encouraged to stick to 40 hour work weeks with only the occasional crunch time if things run over.
For industries (start ups, video games, etc.) where getting the product out matters, this just insures the developers are compensated for their efforts. Now you can't promise comp time, bonuses, etc. and then back out. Well I mean you can...But you'll always be responsible for compensating those overtime hours by the minimum payment of hourly salary (or time and a half). Anything on top of that would be great....
Employment Contracts
Many of the employment contracts are completely overbearing. In some states they are unenforceable but in other states they are enforceable. Contracts that say you cannot work and do programming for one year after you leave the company are particularly troubling. But reality is that most work you do for a typical employer is nothing revolutionary. Another invoicing system, another database driven web app, something that crunches their data a certain way, etec... Nothing is revolutionary or cutting edge. I admit you shouldn't be able to just yank out the product and sell it to someone else because it is work you did for your last employer (well I sort of agree). If you just create a web app with some fields for your employer that links to a database. Well while I'm sure the data of the app is intellectual property nothing you did would be super revolutionary. At your next employer you may do the same thing. And occasionally you may use a technique you invented or used at a previous employers. This is just professional growth and growth in experience and it should be taken employer to employer. This is part of what experience means and trying to stop that by an employment contract is unethical.
Another sticky point on employment contracts is saying that they own everything under the sun you think of and do or everything relating to an industry. Because even if the contract only says that they own everything relating to an industry the reality is that many software projects can find application almost everywhere. I mean if you work for a company that makes point of sale systems then you should be able to take their technology or the work you did for them and go create your own point of sale system to compete with them. But if you contribute to the linux kernel, the employer should not own that. If you write games on your own and sell them, then they are yours. Even by claiming an industry is a problem. If at home you invent some type of generic middleware, even though you work say in the auto industry, there is probably an argument that the middleware could be used by the auto industry. If your job is to develop middleware for he company then it is tricky. But if you are just a maintenance programmer for their web front end, then clearly it is just a project you did on your own time that has nothing to do with your jobs. Also if you come up with an idea that has to do with your job, your manager says it is not good, but you think it is and you create software to do that idea and sell it should the company own that? I think this is how the economy works. Someone comes up with an idea and identifies a market, then goes and develops the product and starts a company, etc... Especially if the employer rejects the idea. I'm fine with saying if it is directly related to your job then you should present it to your employer first. But if they reject the idea it should be yours. Because they may reject it, then you create the product, and they decide oh its a good idea we own it, even though you made it on your own and took all the risk. That's not right. Some companies even have contracts that say any idea is theirs. If you and your kid work on a science project, the company owns it, whether software related or not. Those contracts are ridiculous.
Some employers do some novel stuff and an employment contract should protect that. But saying you cannot work for a year is overkill. If you invented some statistical algorithm to keep predict inventory percentages for a retail store then by all means that is the employer's intellectual property and it should be protected, you can't disclose that to anyone. All of the employers data should remain confidential too. you shouldn't be able to steal customer lists, address lists, etc... These uses of an employment contract I support. Even something that says you can't poach employees for a small period of a few months to a year is not totally unreasonable. But much beyond this is unreasonable. And a lot of times even if the contract is unenforceable you have to have the funds to keep fighting in court through appeals until you get to a high enough court to decide the issue.
Also a lot of times you don't get to see the contract until after you accept the job and give notice on your old one. Now if you don't sign the contract they will fire you or not hire you and you already left your old job. That's not right either. All contracts should be given at the beginning as part of the hiring process. Some employers even add contracts later. You work for company x for 5 years, suddenly one day an employment contract sign it or lose your job....that's not right.
So we need to band together to universally reject these bad contracts. Basically an employer should have first rights to any ideas that have to do directly with your job at most. But mostly I don't even believe in that. I think that the employee is paying for a developer to fill a role. And as long as you do the job that you are paid to do then they are getting what they pay for. If you come up with a billion dollar idea (unless you are an executive whose job it is to steer the company) then the idea is yours. If the company is paying you 80,000 per year and your idea is worth 1,000,000 then it isn't right for them to get ownership. Plus most of the time a developer has to work on whatever management tells him/her. The priorities are set by the executives who are paid much more to come up with billion dollar ideas. I'm not saying that you can't give the idea to the company if you want. But the choice should be yours. In reality most developers will come up with tons of ideas but never implement them because there are costs and risks that they are not willing to take. But the company may have the resources to take these risks. But for the rare developer who comes up with an idea and has the vision and follow through to bring it to fruition they should be able to do that. If a contract is presented after the hiring process then that is not fair and we should universally reject that (I would say this should be accomplished through lobbying congresscritters and if that doesn't work appealing to the voters in this country to try to make anyone who opposes this get voted out). Also not work for a year, that's not fair. If you create a magical statistical inventory algorithm, saying no magical statistical inventory algorithms for a year may be okay (because no matter how hard you try, you will probably use some intellectual property from your last employer even in small ways). But saying no development at all for a year is ridiculous. For non novel things like file processors and database based web apps, there is no restriction, banning that for a year is ridiculous.
Also what the heck this signing away your right to sue your employer is not right either. If your employer fires you because you are Indian, Black, Overweight, Too Old or sexually harrases you or violates some other law then you have a right to sue the employer. I would hope first you try to work it out. But a lot of times companies don't care unless it hits their pocketbook. If you are fired for poor performance should you be able to sue? Probably but you should lose and have to pay the fees. It's a slippery slope. But the laws and courts are often the only defense that we as workers have. And signing away your right to sue is pretty standard on most employment contracts I have seen. Most of the more reasonable ones consist of "keep our stuff confidential" and "sign away your right to sue". The "keep our stuff confidential" is reasonable. You shouldn't be giving out customer lists. For some companies their list of clients is highly confidential and is their life blood and you should shut up about it. And the company database belongs to the company. Any special algorithms, techniques, business processes invented by the company (that aren't common knowledge or a common (or obvious twist) on common knowledge) should be protected but everything else is free to disclose/use.
CONCLUSION
I think there are other universal issues affecting us all (like abuse of immigration, etc.). Much of it striking is not the answer, but basically paying off congressmen (just like the corporations do) and just generally stirring up outrage over the voters to force the government to act. Most of it could also probably be dealt with by a strike at the offending companies coupled with a boycott. I'm not saying guarantee anything aside from working conditions. If companies want to pay $5 an hour then they are free to do that. If all of them decide to pay $5 an hour then there is a problem and the union should act..... If some companies want to run their employees into the ground with 100 hour weeks then fine, if every company wants to do that then the union has to act. And also the employees who are run into the ground should be guaranteed a minimum compensation. Employment contracts are often unreasonable. Some states declare them unenforceable. And most of the big companies are still in business so I guess it didn't add any value to the business. Just ruin people's lives. Probably employment contracts should be totally eliminated (except for reasonable confidentiality agreements saying keep our data and our trade secrets a secret unless required by law enforcement, etc...).