I know Jeff has written about this subject [1] on his coding horror blog in the past but I am interested in learning the opinions of a broad set of developers.
I agree wholeheartedly with his statement:
I propose we adopt a Programmer's Bill of Rights, protecting the rights of programmers by preventing companies from denying them the fundamentals they need to be successful.
So, if you could propose one item to the bill of rights, what would it be?
Very important to me is the ability to pursue my own coding projects, on my own time and on my own equipment, without fear of the company trying to own it. Without this ability, I'd feel that my creativity is severely curtailed.
A decent spec workstation with multiple monitors, on which I have admin rights.
Access to Internet. Some companies still disable it, and it makes programming much more difficult than it has to.
The right to speak honestly without penalty.
A top quality chair.
Jeez, you guys are thinking small (or have been very sheltered). How about the right to provide your own time and effort and quality estimates and to have those respected?
With the exception of my current job, I can't remember the last time anyone took a developer's estimate seriously
The right to install FIREFOX or SAFARI, rather than the corporate drabness that is IE
Have a flexible work time. I don’t like to work in the early morning hours, can get hardly any work done, and I really hate to be forced to do it.
Free coffee, because programmers are machines transforming coffee into software.
:)
Paid on time, all the time
The important ones:
Does the company use its own products? (if applicable)
There is no better time and place to catch your own real world bugs, than in your own office. Your non-developers then become free testers.
Can developers use their own machines?
I like to use my own laptop because I'm faster with it and my work travels with me.
Are the interviewers extremely arrogant?
Some interviewers do their best to let you know how much better they are than you and also try to imply to you that it would be a real privilege to you to work for them. Lutron was infamous for this where I went to school. They stood out because it wasn't just one person, it was all of them and they took their direction from the head guy that would show up each year.
How do YOU feel about them?
Whenever there is doubt, there is no doubt.
Trust your instincts. Here are some examples from a company I interviewed with last month and subsequently turned down their offer. None of these things by themselves was necessarily a deal breaker, but in the end, they add up.
There already is a question to this in
with answers as diverse as the right for good hardware and the availability of information.
Important to me are quiet work environment, best tools, no politics (subsumption of Kent Beck's list in XP). And as I view programming as a creative process: flexible working hours.
[1] http://stackoverflow.com/questions/70846/developers-rights-what-should-they-be#70874Training.
Lots and lots of training.
Because our job is mainly working with computers I think it's important that programmers get the opportunity to socialize when not working. Things like office games, rooms for hanging out with your co-workers, etc. are really important if you're going to feel appreciated.
A high quality keyboard and mouse.
The right not to use Lotus Notes
The right to be recognized as a profession. Everything else flows from that...
Environment with no or little distractions Good computer with tools that I am used too
These are my top priorities when working.
I have quit a job where I had a 2Ghz CPU and 512M memory with 20G harddrive. Not an optimal computer to work with.
I have the right to leave my job at any time. What more do I need? If I don't like my conditions, I can leave my job and find another or start my own, more to my liking.
Are there any programming Unions, particularly international ones? If so why not join one of them?
My bill of rights would include a nice comfy chair, a big 21" LCD monitor, loads of excellent coffee...and immunity from "weekly status meetings"
A suitably powerered computer with two decent monitors.
Treat me with the respect you'd give people with my amount of experience in other specialized fields, where very few people from the general population are actually able to do my job well.
I'm not asking to be treated like a doctor or a CEO, but giving me more respect than an entry level call-center employee is a start. I can work faster and more efficiently with a better monitor, and I'll take less breaks if I have a better chair. If I'm in a quiet environment, studies have shown I'm likely to be upwards of 10x more productive, even!
Giving me a reasonable number of days off - and allowing me to take them - will make me less likely to leave for greener pastures. Allowing me to prioritize quality will stop me from having to lose my weekends to a pager, and will keep our customers happier.
If you're not a technical manager - if you came from an MBA school, and not a CS degree - listen to what I have to say about technology. Odds are I've spent more time than you have doing this one thing, and while I'm a bit rough around the edges of explaining things, I'm often right; if I wasn't, you should fire me and hire someone else anyways.
Finally, respect that offshoring software development has the same price savings as offshoring manufacturing... but additionally, has the same quality problems. Since software is often far, far more detailed and precise than building a Sony Walkman, perhaps quality deserves a wee bit more focus than a shortsighted bottom line will ever give it the first time through.
If I couldn't have every right, I would at least ask for a quiet environment without interruptions. I believe though that every right mentioned is essential.
I have to agree about paid overtime.
I think mine would have to be having a supportive management structure. What I mean by that is if you need something to do your job you ask management for it and you get it. So this could include a monitor or 2, multiple workstations, time off when necessary, etc.
The right to download .msi files in a .net shop.
:(
The right to choose our Operating System (Linux, the distr that you are confortable to work with) even more : the right to choose the machine you want. (I would really appreciate to have my own iMac at work)
The team leader has to be a at least an ex-programmer who really understand what your job is about ! Not an arrogant "Top Manager" that has only some knowledge of marketing and management !
You guys that complain about not getting any respect for the time quotes you give, then turn around and meet the time quotes others give, that are shorter. See the problem? Every time someone other than me gives a time quote, for a program I need to write, will have their timeline missed. If you want them to take your quotes seriously...quit meeting their time quotes.