I know Jeff has written about this subject 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.

72 accepted

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


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.


The right to install FIREFOX or SAFARI, rather than the corporate drabness that is IE


Free coffee, because programmers are machines transforming coffee into software.



Paid on time, all the time

  • A good ergonomic chair
  • A good clear bright large high resolution screen
  • A good combination of natural light, fluorescent light and incandescent light

The important ones:

  • The right to be wrong. Nobody gets everything right.
  • Respect for my opinions, especially when asked for them. It really grates on me when I'm asked for an estimate and as soon as I give it someone higher up the food chain goes "but surely it can't take as long as that!". If you don't want to know, don't ask me!
  • The right for decent working conditions. Exceedingly low temperatures or exceedingly high temperatures are a no-go. I don't care if you're working on it, while it's going on don't expect me to be at anywhere near decent efficiency. A quiet workspace, and being free from interruption - interruptions cost much more time than the interruption alone.
  • The right of input. Don't tell me what to do in exacting specifications. If there's no room for me to use my brain, I'll take it elsewhere.
  • The right to grow. There's often a (perceived?) glass ceiling for technical people. What if I don't want to be a manager, but just grow more and more technically? Give me something back for that, and most importantly, don't say "oh then you will stay within this pay scale" if I'm actually valuable to the company.

There already is a question to this in

Developers? rights - what should they be?

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.

  • 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.

    • The human resources recruiter would always call me outside of business hours while she was driving in her car. She wanted to give me my offer outside of the office so she could talk in private.
    • Everyone passing through an electronically secured doorway was required to "badge in/out" even though the company had less than 30 employees.
    • The offer was a low-ball. The job demanded a higher salary (and not just for me) due to special skills required.
    • After interviewing with only one person, the CTO, and receiving an offer, I was never invited to see the office, meet the other developers, or anything similar.
    • I was given an 8-page, very in-depth, C++ test. That's good. The bad? The test showed an extreme lack of effort: several questions were duplicated, explanation questions with one inch of answer space, and some questions were only in English by virtue of the fact that all of the words comprising the question appear in an English dictionary. After the test, the interviewer seemed surprised that I just took a C++ test and told me that 95% of my work will be in C, not C++.


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?


A suitably powerered computer with two decent monitors.


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"


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.


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.



I believe there's the IEEE and the ACM.


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.