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?

+17  A: 

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


Make that free DRINKABLE coffee. The nescafé instant dirty dish water they have here doesn't deserve the name coffee.
I've heard similar said of mathematicians.
-1 For ripping off Paul Erdős without giving credit.
@nmr: It looks more like an accidental paraphrase. Also, according to [this](http://en.wikipedia.org/wiki/Paul_Erd%C5%91s), the quote actually belongs to [Alfréd Rényi](http://en.wikipedia.org/wiki/Alfr%C3%A9d_R%C3%A9nyi).
+100  A: 

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.

Chris Jester-Young
In California, this is the law. :-)
Is there any reference which says this? I'd feel much better if there is something I can point people at, if need be. :-)
Chris Jester-Young
CALIFORNIA LABOR CODE SECTION 2870 http://www.unixguru.com/california_law.html
Sorry for the yelling. I copied the headline right from the web site and lawyers love to yell.
*lol* Perfect! I should stay working for Californian companies then. :-P
Chris Jester-Young
Read the California law again. It says your company owns your work on your own time if the work is related to their business. So, if you work for EA and you try to make an iPhone game at home EA owns it, not you. Doesn't matter that it was on your own time.
@gman *Only* if the employer has such a specification in their employment policy / contract. 1 and 2 are exceptions to the employee's rights, but are also not rights automatically assigned to the employer.
@banzaimonkey That's not the case. An employer has quite a few rights without having to put them in your employment contract. For example, the fact that they own anything you do ON COMPANY TIME is not something they have to spell out. It's the default law. If you want more rights you can negotiate them but without explicit exceptions they own your work. The same is true for work outside of the compan if it fits under the law as spelled out in the links above.
+7  A: 

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.

Ralph Rickenbach
Ahh poo! I did a search and didn't find anything. The hints when adding the question failed to bring anything up either.
+1  A: 

A suitably powerered computer with two decent monitors.

Scott Langham
+71  A: 

A decent spec workstation with multiple monitors, on which I have admin rights.

Matt Howells
a constant battle in all the large organisations i have worked in (and some smaller ones too)
admin rights i agree w/ but i dont agree with the multiple monitors part
I believe that the <$300 they spend on a second monitor for each developer is far outweighed by the developer's increased productivity and convenience.
Admin rights, while comfortable, can cause bugs when run WITHOUT admin privileges. Enforces false assumptions...
@Albert Yeah, an extra monitor seems like overkill though, if only Windows ran the Compiz Desktop Cube like Linux does. It would be almost the same -$300 worth of cost...
Robert Massaioli
I'd take 2 or 3 monitors over admin rights any day
@AviD: Just because you can use sudo (or equivalent) on the machine doesn't mean you should be using it to test the code as you write it---but you might *require exactly that*, depending on what you're developing.
Roger Pate
@Shhnap: no, it's not the same thing. Being able to see the documentation and/or the running application *at the same time* as the code is worth more than being able to switch between them.
Joachim Sauer
@Joachim: Then use a tiling window manager...like xMonad. You really only should need to buy one large screen but if two floats your boat then get two. Lord knows you're making the Monitor distributor happy. :)
Robert Massaioli
If you are working on Windows you can simply not attach a debugger to a process without administrator rights. I'd take admin right any day over multiple monitors. Debugger > 500 monitors.
Try programming without admin rights when your virus scanner fights with your build. I need admin rights or the right to punch someone in the nose to relieve my stress.
@iconiK: That's simply not true, your account just needs to be member of a group that has the right to attach a debugger to a process. See http://msdn.microsoft.com/en-us/library/ff541528%28VS.85%29.aspx
@mghie yes, which directly means giving administrator privileges. If you can attach a debugger to any process you effectively own the machine.
+37  A: 

A top quality chair.

Scott Langham
I bet Steve Ballmer would approve of this suggestion ...
Pop Catalin
+22  A: 

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.

Me too - except early morning is before 10:30 :)Also, if I come in early morning it isn't just a waste of time - it means I'm tired and grumpy *all day long* so it's a waste of the entire day... My company still doesn't like it when I came and 12:30 though :P
ehh, dont know if that should be standard
Shawn Simon
@Shawn Simon Don't know where you live, but with traffic in Los Angeles you can easily spend two hours or more *per day* in traffic if you have to work 9am to 5pm. Flex time isn't just for sleeping in.
+6  A: 


Lots and lots of training.

"skimp on training and keep your devs from straying..."
Is it more important to keep your devs, or to have them perform the best they can? With the understanding that without training, they're not performing at their best.
Chris Jester-Young
"Training is what you do to dogs. What you should be doing with people is educating them, not training them. There is a big, big difference" - Erann Gat - http://www.flownet.com/gat/jpl-lisp.html?dupe=with_honor
I don't know about you, but I'm at least twice the developer I was when I was first hired.
Even if the training is about dancing?
Most of the training courses I've seen are more of developer vacations - you'd learn more by having the same amount of free time at work to bang away at free tutorials...
Dean J
+4  A: 

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.

I'm curious on how that one splits up between "22 year old developers" and "more senior folks".
Dean J
+11  A: 

Paid on time, all the time

Ryan Bigg
Every employee should have that right.
@Rob: Unless you're in Russia or the like, employees get paid on time, all the time, but I suspect Ryan was referring to contractors and the like.
Andrew Grimm
My experience with contracting is to put in a *steep* penalty for late payments, that keeps ramping up over time, or you never, ever see the money on time. If there's no penalty to screwing someone to save money, as a business, you generally screw someone.
Dean J
+2  A: 

The right to be recognized as a profession. Everything else flows from that...

Garth Gilmour
+11  A: 
  • A good ergonomic chair
  • A good clear bright large high resolution screen
  • A good combination of natural light, fluorescent light and incandescent light
Don't forget the monitor has to be flat to reduce eye strain.
@configurator, does anyone still use CRTs? (even two years ago)
Of course they do. They've already got them. I don't think anyone was buying new ones (as of two years ago), but I definitely had one at work. I used to bring my laptop and use remote desktop instead of using my work monitor. I've gone off to a far better place though. We have multiple high-res screens, ergonomic chairs, 'a good combination of lights', a good environment, drinks and snacks, and the best of all: We only make high-quality software! (We're always hiring, by the way - www.softwire.com )
@iconiK: I have a 19" CRT on my desk as my second monitor. Companies don't often replace what's not broken.
Dean J
+2  A: 

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.

+2  A: 

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.

problem with that is do it too many times after a short period and it doesn't look too hot on your CV/Resume
Some companies have that clause, allowing either side to terminate employment without notice. Two-edged sword, yes. Hope you like it. :-)
Chris Jester-Young
I do indeed like it. That's why I posted it. :)
I'd have the opposite assuming it's 2-way. I'd hate the thought I could be turfed out with no notice and no income. If I want to leave a job I have I can always hand in notice and wait a month. It'd be the best month ever!
Dunno. The original unions got us the 5-day-workweek, paid vacations, and healthcare, so perhaps there's something to a bit of formality.
Dean J
post hoc.Also, you might want to revisit your history on the provision of employer-provided healthcare insurance.

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"

Ashish C
21" isn't really big these days...
@André, three of them is certainly better than a 30", and much better than one.
+2  A: 

Are there any programming Unions, particularly international ones? If so why not join one of them?

I couldnt agree more!
Optimal Solutions
Try searching for "union" and "programming". See how well that works out for you :)
Gordon Tucker
Touché my good man
There is one in Denmark:http://www.prosa.dk/in-english/
+57  A: 

Access to Internet. Some companies still disable it, and it makes programming much more difficult than it has to.

Carl Seleborg
How can you *work* without internet access? That's just INSANE!
programming impossible w/o internet :O how do u do it?
With a rich enough intranet, it's doable. :-P</devils-advocate>
Chris Jester-Young
koldfyre: iPhone?
We worked without internet access for decades before the 90's. That said, I wish I had better access to technical blogs, and am thankful I'm allowed through the firewall to SO.
Dean J


I believe there's the IEEE and the ACM.

+22  A: 

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

include also the right to install whichever email client program, etc etc etc
whilst I acknowledge the need for email client freedom (etc, etc), many companies have a very OUTLOOK centric set of business processes, but by all means try.
Or some outdated Mozilla 4.0 from 1999 on some ancient Linux distro. And connecting via a remote desktop to it. (Not even browsing locally). Top that for a hellish work environment.
Isn't this a dup of @Matt Howells answer? admin rights let you install anything you want.
+2  A: 

A high quality keyboard and mouse.

+52  A: 

The right to speak honestly without penalty.

Wish I could +100 you for this one - great answer!
That's an employee's right. So long as the employer has the same right ...
This is the _definitive_ right, even more so because it applies to everyone, not just programmers.
Sykora - agreed.
That's human nature, though; this holds true everywhere. If you were trying to compile a universal worker's bill of rights, maybe?
Dean J
I'm ashamed to think that this "right" didn't even come to mind. I can't begin to count the number of times I've suppressed writing something to the group because it will be taken badly by someone. Even little bits of humor will inevitably be taken badly.
+28  A: 

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

Or indeed, the right to have your *opinion* taken seriously?
I'm a developer growing into a leadership role, and I *always* ask my developers for their time estimates before committing to anything (or even suggesting a schedule in the first place). Estimates should *definitely* be bottom-up.
+8  A: 
  • 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++.

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.

Michael Beck
+7  A: 

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.
Wrt the last point, I was extremely impressed when I was at Microsoft, and senior developers - known as "Individual Contributor" - ranked at a level with "managers", and werent forced to become team leads etc.
I like that concept of the "individual contributor", and will consider it in my organisation.
Glad I helped bring a little more rainbows to the world :D
Seriously, that last bit would be the best thing ever. Without choosing to "never code again", I'm approaching the point where my career is done.
Dean J
+1 for the right to be wrong.
+1  A: 

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.


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.

But if you do meet their time quotes then obviously their quote was better, it made you work harder and more efficiently. Unless you worked overtime or anything but you shouldn't do that to meet a quote you haven't specified.
+3  A: 

The right not to use Lotus Notes

Matt Joslin

The right to download .msi files in a .net shop.


Paul Creasey
  • 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 !

+1  A: 

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.

Dean J