星期六, 九月 23, 2006

Coding Horror: The Programmer's Bill of Rights - Mozilla Firefox

[webnote]
 
 
 
I <3 Steve McConnell* Coding Horror
.NET and human factors
by Jeff Atwood
 

August 24, 2006

The Programmer's Bill of Rights

It's unbelievable to me that a company would pay a developer $60-$100k in salary, yet cripple him or her with terrible working conditions and crusty hand-me-down hardware. This makes no business sense whatsoever. And yet I see it all the time. It's shocking how many companies still don't provide software developers with the essential things they need to succeed.

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.

The Bill of Rights

  1. Every programmer shall have two monitors

    With the crashing prices of LCDs and the ubiquity of dual-output video cards, you'd be crazy to limit your developers to a single screen. The productivity benefits of doubling your desktop are well documented by now. If you want to maximize developer productivity, make sure each developer has two monitors.

  2. Every programmer shall have a fast PC

    Developers are required to run a lot of software to get their jobs done: development environments, database engines, web servers, virtual machines, and so forth. Running all this software requires a fast PC with lots of memory. The faster a developer's PC is, the faster they can cycle through debug and compile cycles. You'd be foolish to pay the extortionist prices for the extreme top of the current performance heap-- but always make sure you're buying near the top end. Outfit your developers with fast PCs that have lots of memory. Time spent staring at a progress bar is wasted time.

  3. Every programmer shall have their choice of mouse and keyboard

    In college, I ran a painting business. Every painter I hired had to buy their own brushes. This was one of the first things I learned. Throwing a standard brush at new painters didn't work. The "company" brushes were quickly neglected and degenerated into a state of disrepair. But painters who bought their own brushes took care of them. Painters who bought their own brushes learned to appreciate the difference between the professional $20 brush they owned and cheap disposable dollar store brushes. Having their own brush engendered a sense of enduring responsibility and craftsmanship. Programmers should have the same relationship with their mouse and keyboard-- they are the essential, workaday tools we use to practice our craft and should be treated as such.

  4. Every programmer shall have a comfortable chair

    Let's face it. We make our livings largely by sitting on our butts for 8 hours a day. Why not spend that 8 hours in a comfortable, well-designed chair? Give developers chairs that make sitting for 8 hours not just tolerable, but enjoyable. Sure, you hire developers primarily for their giant brains, but don't forget your developers' other assets.

  5. Every programmer shall have a fast internet connection

    Good programmers never write what they can steal. And the internet is the best conduit for stolen material ever invented. I'm all for books, but it's hard to imagine getting any work done without fast, responsive internet searches at my fingertips.

  6. Every programmer shall have quiet working conditions

    Programming requires focused mental concentration. Programmers cannot work effectively in an interrupt-driven environment. Make sure your working environment protects your programmers' flow state, otherwise they'll waste most of their time bouncing back and forth between distractions.

The few basic rights we're asking for are easy. They aren't extravagant demands. They're fundamental to the quality of work life for a software developer. If the company you work for isn't getting it right, making it right is neither expensive nor difficult. Demand your rights as a programmer! And remember: you can either change your company, or you can change your company.

Posted by Jeff Atwood at August 24, 2006 11:59 PM | TrackBack

Comments

That is fantastic. This should be on a t-shirt or something. :)

I like how the URL for this post ends in "/000666.html". I wonder what the meaning of that is.

Petro Verkhogliad on August 25, 2006 01:51 PM

Is there any reason that this list should be limited to programmers and not everyone else also who works with code and computers?

mike on August 25, 2006 02:01 PM

There was a day when unlimited smokes and coffee would have made this list, but I date myself.

doug on August 25, 2006 02:05 PM

7. (proposed) Every programmer shall have the power to do the job right.

8. (proposed) Every programmer shall have the most powerful tools available for the chosen environment, and for that matter some say in the environment used.

9. (proposed) Every programmer shall have access to reasonable support tools (including but not limited to: source control, automated unit testing, nightly build scripts, etc.)

Joshua Volz on August 25, 2006 02:22 PM

I agree 100%

Jonas on August 25, 2006 02:25 PM

A great list, but I must challenge #6 - quiet working conditions drive me crazy. I have to have music going or it freaks me out.

I must also have stuff to play with in my office space or, again, it drives me nuts. We all need a good recess every several hours. Myself, I prefer LEGOs.
http://www.morningtoast.com/feature/home_away_from_home/

But thankfully, my employer seems to believe in the Programmer Bill of Rights. I have two screen, a fast PC, speedy internet, I got to pick my keyword+mouse, and I sit in a nice comfy chair.

Brian on August 25, 2006 02:29 PM

>Every programmer shall have a fast PC

Sometimes I wonder about this one. As I watch Visual Studio 2005 take a dog's age to launch on my PC, I wonder if MS shouldn't have given their developers SLOWER machines.

Kevin Dente on August 25, 2006 02:45 PM

Brian, I think he means "the choice of quiet working conditions". I too love the headphones blaring most of the time, but having the control over it when I need to really cut off my external inputs is important to me too.

Sometimes at work I wear my headphones with no music just to keep the distractions to a minimum and deaden any conversations around me.

Andre Torrez on August 25, 2006 02:45 PM

re:
8. (proposed)

i'd settle for being allowed to use the editor of my choice: vi. i do despise most IDEs.

Buggy Fun Bunny on August 25, 2006 02:48 PM

I think a lot of the proposed additions could be summarized thusly:

8: Every program shall have access to the right tools.

Jason on August 25, 2006 02:53 PM

Another proposal:

Every programmer shall not be subjected to the requirements of the corporate uniform.

or to put it another way:

Every programmer shall be allowed to wear comfortable clothing of their choice.

Chris Lively on August 25, 2006 03:10 PM

Some of these could be summarized in a "one rule pack" that reads:

Every programmer should be able to work anywhere in the world, though a fast VPN, and not in cubicles.. ;)

Martin Marconcini on August 25, 2006 03:30 PM

Don't forget good development tools... It surprises me how many companies are still using gdb for debugging, when there are much better commercial tools out there.

Jason on August 25, 2006 03:38 PM

I prefer these bills of rights:
http://c2.com/cgi/wiki?DeveloperBillOfRights
http://c2.com/cgi/wiki?CustomerBillOfRights

Jeremy Dunck on August 25, 2006 03:58 PM

Jeremy, those are great links, but they're very different animals.

My "Bill of Rights" is about basic working conditions *only*. That's why it could apply to OSX, Linux, or Windows developers working in any language, using *any* methodology, not just agile.

> Don't forget good development tools

This is also why I didn't comment on tools; the choice of software development tools is not only a religious issue, it's clearly higher level than having the core BASICS: a fast internet connection, a fast pc, and a quiet workspace.

Jeff Atwood on August 25, 2006 04:07 PM

Since almost all companies have little idea on what makes a great environment for a programmer, you are better off watching the movie "Office Space" and then figuring out what you'd do if you had a million dollars.

Steve on August 25, 2006 04:09 PM

(proposed) Every programmer should be given EXACT specifications of what he is expected to deliver.

ToMaHaWk on August 25, 2006 04:38 PM

I must disagree on the fast computer. It has been like 20 years since compiling an app took more than a minute or so. I say give the programmer the same computer the average user will have, I bet the performance of the apps they write will be a heck of a lot better if they have to feel their user's pain.

John F on August 25, 2006 06:27 PM

I agree with tis bill of programmers rights, and even though I may not be a programmer in the literal sense, I still do debigging, and testing of certain software, as well as play games on my computer, and I enjoy things much better when I get to choose my own stuff. That being said, however, not all companies are going to allow this to happen, nor will they be willing to allow it, speaking froma realists point of view. The only way that this bill of programmers rights will be used in The everyday work environment, is if the poeple who use computers, not just the programmers try to push to get this bill of rights recognized by governement, not just eh american government, but all governments, no matter what country, or location on the globe. Well tat is my 50 cents worth, if anyone else feels the same way, then please go forward and make a big stink of this on the news, on the internet, and in your local, and national newspapers, as this should be called the common everydays workers bill of rights.

Crash Override on August 25, 2006 08:13 PM

I concur with your "Bill of Programmers Rights". However, I believe that they should apply to ALL people in the IT industry. Maybe the "Bill of IT Workers Rights"?

Bald.Guy on August 25, 2006 08:33 PM

#0:
No programmer shall be made to report to ex-operators (who can't think in symbolic logic, but still want to leapfrog the hard work & climb up the corporate ladder).

DrillBit on August 25, 2006 10:49 PM

How about the right to a have great IT business analyst? One who can write clear requirements for the programmer?

Puddles on August 26, 2006 04:09 AM

Get over yourselves. The vast majority of you are not writing operating systems, or programming in ML! You are programming business logic in garbage collected languages. You get a paycheck. If you don't like the conditions where you work, work somewhere else.

atlscrog on August 26, 2006 04:17 AM

wow, I'm spoiled
..I have 4 monitors
..a fast computer that I spec'ed out
..ordered my own mouse + keyboard
..comfortable chair
..T3 connection (firewalled out the wasu, though)
..use Yahoo video/radio for music to my headphones
..wear jeans and T shirts to work
..have toys on my desk
..have spare (normal user) PC to test application speed

My only downside is I am analyst, developer, project manager, leader, tester...and my direct report has no clue what I do (ex-Datacenter manager).

Brad V on August 26, 2006 06:17 AM

I'd forgo the fast computer for two monitors and a good Dev server and automated builds and testing.

vm370 on August 26, 2006 07:05 AM

Programmers shouldn't be given fast computers. Fast computers let programmers write dog-slow code. If the people writing gnome or KDE (or Windows, for that matter) had been on slower machines with less memory, the desktops would be much, much more lightweight.

grendelkhan on August 26, 2006 07:36 AM

John F, grendelkhan: This only works if the company is dogfooding. Generally, it would be better to put any internal users (sales, QA) on the lousy hardware, so that *they* feel the pain, and report it to the devs.

At any rate, if you're developing webapps, there's no excuse for slow hardware.

Mike Purvis on August 26, 2006 08:07 AM

I am all for this bill of rights! I am still in college, but I think these are a must for a programmer. As for the fast PC, it would be nice, but if I can have a second one to run as a server, I am happy.

chiefbutz on August 26, 2006 08:24 AM

John F: maybe incremental builds are less than a minute, but then you change a common header and have to rebuild the project -- forget about it -- a lot of application development projects are not going to do a clean build in under a minute. More like 20-30.

With that kind of delay, devs either work around putting the code in the "right" place in order to avoid the downtime (leading to shoddy code), or they'll wander off (physically and mentally) and lose their place, and probably not notice when it's done, adding even more down time.

I think there's a magic cutoff where if the compile/link/rerun time takes more than say 30 seconds, the dev will get bored/distracted and downtime goes exponential.

Features and performance are constraints applied by management/marketing. Optimization comes at the end, no need to make devs suffer with a slow machine all along the way, just during the final polishing.

Ethan on August 26, 2006 08:35 AM

My employer believes in all of the above things... except for the paying us 60k-100k part. What would you rather have, decent pay, or a good work environment?

anonie-mouse on August 26, 2006 09:19 AM

I think Programmer should have the right to refuse writing documentation ;). Just kidding :)

Zaid

Zaid Omar on August 26, 2006 09:36 AM

Bullshit.

> 1. Every programmer shall have two monitors

No. Every programm shall have a large monitor. That's all. For debugging, they should have an additional remote PC, not a remote monitor. (You ain't never crashed a kernel, or driver obviously)

> 2. Every programmer shall have a fast PC

*ONLY* for compiling. The target PC for the application must, in fact, be the absolutely slowest computer available on the market, and barely have any disk space at all. The faster the PC the programmer targets, the more bloatware they write.

> 3. Every programmer shall have their choice of mouse and keyboard

This one I agree with. Also through in the text editor.

> 4. Every programmer shall have a comfortable chair

Yeah, whatever.

> 5. Every programmer shall have a fast internet connection

What has a fast connection got to do with anything? Krugle, and sourceforge doesn't go any faster just because you have XDSL.

> 6. Every programmer shall have quiet working conditions

So buy headphones.

Paul Hsieh on August 26, 2006 09:55 AM

I can't understand why people don't understand #6, which basically means that the programmer should work in an environment that doesn't have people coming and going and interrupting their work all the time.
Also, #3 sounds like I'm supposed to bring my own equipment o_O

Chris Lively - I wonder how the army would implement your suggestion :)

Omer van Kloeten on August 26, 2006 10:09 AM

> So buy headphones.

My company even banned headphones (on grounds of 'professionalism').

tim on August 26, 2006 11:36 AM

I'm not convinced by #2, unless there's a rider for testing to be done on mediocre machines. I'd hate for the programmer's bill of rights to take away from the end user's experience by assuming everyone will use fast machines with loads of memory.

Otherwise, good list.

Josh Peters on August 26, 2006 12:41 PM

Why limit it to 2 monitors? I have three and love it. Code on one, form on another, reference material on a third.

A programmer should have as many monitors as they want. Personally I find three to be the limit I would be comfortable with--I can't see how to place a 4th that wouldn't involve too much head turning.

Loren Pechtel on August 26, 2006 01:57 PM

"Every painter I hired had to buy their own brushes."

for consistency sake, you should apply this analogy to the entire programmer's toolbox you have listed above, including chair. this is a standard way of doing business for men who make their living as mechanics. when you come to the job, you bring your own tools, and when you leave, you take them with you. the same should go for programmers.

Proton Soup on August 26, 2006 02:36 PM

One 15" LCD.

That's all I get. :(

Quite irritating, b/c lines wrap in vi and it drives me crazy. I'll probably buy a bigger LCD for myself some day.

david on August 26, 2006 04:26 PM

Finally... i think is time to get something back...
we are humans... or not?...

Juan Diego on August 26, 2006 05:33 PM

Add to this...

"Every programmer shall have the right to install and configure all software on his PC"

As in, not be forced to work on a locked down PC where the software was slapped on as a default install by a teenager who has "IT experience" (ie: has played a computer game or two) on temporary contract to an outsourcer for whom maintaining control over the desktop is more important than having the desktop used to accomplish something and where 'lockdown' is being used as a poor substiture for security.

Paul Coddington on August 26, 2006 10:35 PM

"I can't understand why people don't understand #6, which basically means that the programmer should work in an environment that doesn't have people coming and going and interrupting their work all the time."

Some programmers don't understand it either - but then quite often they are the ones not doing anything clever enough to be concentrating on the task on hand (people who produce bad code that does not work well and isn't worth the paper its printed on do not care in the least about point #6).

Likewise for some managers (and I really have seen some who take the attitude that nervous breakdown due to environmental problems simply means "time to find another contractor and put this one out on the street, no notice required").

Paul Coddington on August 26, 2006 10:50 PM

Wahoo! Score, I've got them all! Well, I could use a new chair on Monday.. hehe

Matt on August 26, 2006 11:26 PM

Hey! I've made a translation to italian here:

http://www.napolux.com/2006/08/27/carta-dei-diritti-dei-programmatori/

What about a worldwide campaign for translation in many languages?

;)

P.s.
Of course I gave you credits!!!

Napolux on August 27, 2006 02:26 AM

My additions:

7. Every programmer shall attend a development conference once a year.

8. Every programmer shall be supplied with technical books of his choice.

I run my own company and practice this. Works very well and increases my efficiency.

Vagif Abilov on August 27, 2006 04:45 AM

Completely agree!!!

Napolux on August 27, 2006 04:58 AM

6. Every programmer shall have quiet working conditions
hehe what if he is working with sound effects in his game

Saurabh on August 27, 2006 07:27 AM

Proposed:

If you want a programmer to work more than 40 hours a week, you need to pay them for more than 40 hours a week.

Just because the boss was once an Arthur Android, and gets a heroin-like endorphin rush from working from 4AM to 10PM doesn't mean everybody else in the industry does, or should. The practice of the "exempt" employee, paid for a week's work, but continuously worked for double shifts because of artificially-skewed deadlines, poor specs, feature creep, and salesman's disease (of course it can display your data in Klingon! It'll be in the demo next Thursday!) should be banned outright. It burns out more programmers than any other practice, bar none.

My favorite poster: "A lack of planning on your part does not constitute an emergency on my part."

---Gwen (who still has nightmares of being chased by androids)

Gwen Patton on August 27, 2006 07:30 AM

I earn roughly $7500 per year, which is an average yearly salary in my country. I should be able to buy my own apartment in roughly 142 years.

My chair is about 20 years old; I brought a pillow from home to sit on and to make me more comfortable.

The PC I work on is kind of okay, except that I had to jump through hoops to get a total of 512 MB of RAM, and the curved 17" monitor is freaking me out. I do have admin rights, though, but my right wrist and my left shoulder are starting to hurt badly, so admin rights don't make me happy.

My copy of Visual Studio is illegal.

Nobody really knows *WHAT* I should do, so I regularly rewrite my apps from scratch and spend time migrating DB data as good ol' management thinks of new, incompatible things.

I work in a room with no windows and air conditioning that smells, so we prefer to have it turned off until it gets REALLY hot. There wasn't a week in the past two years that I have felt okay - I'm ill most of the time. But the noise of 10 servers near me doesn't let me think about my health conditions much.

My company spends 50 times as much on crap outsourced developers, who produce code that takes 4-5 DAYS to churn out a WEEKLY report.

If I demand anything, I'm going to get fired, which isn't very nice considering that I have to support my parents. And if I change my company, I'll have to travel at least 4 hours each day (I don't have a car, and I don't think I'll be able to afford one in the next 40 years).

So... What do you people think I should do? (BTW, I have the lowest salary in my department, but I regularly spend time teaching "senior" developers about the very basics of HTML and programming.)

AC on August 27, 2006 10:12 AM

I agree
we are humans,
not only brains or ideas
as arm's slaves

Stefano Zaglio on August 27, 2006 05:34 PM

> I earn roughly $7500 per year, which is an average yearly salary in my country.

Wow, that is a sobering tale.

I'm beginning to see why people would want to emigrate to a different country with more favorable working conditions..

Jeff Atwood on August 27, 2006 06:19 PM

#4 is the one that *really* matters. Dual monitors are nice, but being able to walk is better.

Rob Agar on August 27, 2006 10:31 PM

Every developer should have a machine in there office/cubicle/whatever that is the same spec as the 'minimum required' as displayed on the final product. once the program actually works this machine (which will be reimaged back to a default state at will) will have the application installed on it and fired up...

1, to make sure it actually works

2, its actually usable.

I'm all for developers have the latest & greatest to work with, they do actually need it. but the result should work on more down to earth hardware.

i.e. no GUI widgets that take more cpu power than the core of the application.

I mean my old 8Mhz ST (512Mb ram, no HDD) had a nice little desktop called 'teradesk' availbile for it. frankly apart from a lack of colour i'm hard pressed to see what my XP desktop does (that I actually need/use) that teradesk didn't.

i'd add a rule that no GUI widget shall be added unless its actually needed. *until the program works* _then_ add the stuff to make it look nice, but make it configurable. if the user wants speed let them turn the fluff off...

windows itself is actually a good example of this, if only it was easy to de-install the stuff you don't use.

claire rand on August 28, 2006 12:52 AM

(ironic mode)

Every programmer shall have a BOFH so close !!

;-)

marbella lawyers on August 28, 2006 04:43 AM

@Brian

>>Myself, I prefer LEGOs.

Me too. Unfortunately, I can't bring them in to work. But they do exist in a large quantity in my home office.

I think I need to post this Bill or Rights on a certain door here... :)

Eric D. Burdo on August 28, 2006 06:08 AM

AC:

"So... What do you people think I should do? "

start your own business. save up as much money as possible enough to last a few months (rent, food, etc.). find out what kinds of licences / fees your government requires for starting a business.

try to build up a client list before you quit. use your current working conditions as incentive & inspiration to motivate you.

david on August 28, 2006 06:12 AM


(Proposed)

x. Every programmer shall have a substantial dry erase board for doodling and diagramming.

Andy on August 28, 2006 06:59 AM

>>Every programmer shall have two monitors

I had to fight and claw to get my second monitor. And so now I've got one nice LCD, and one piece of junk CRT. *sigh*


>>Every programmer shall have a fast PC

My PC is generally pretty quick but I've only got 512 MB of RAM. Try running Visual Studio 2005 (bloated as hell) and SQL Server Management Studio (2005) (beyond bloated as hell) at the same time. Yeah, I spend a LOT of time looking at an hour glass.

>>Every programmer shall have their choice of mouse and keyboard

I do have this. Whew.

>>Every programmer shall have a comfortable chair

I can barely move at the end of an 8 hour day. My legs hurt, my lower back hurts and my neck hurts. This is AFTER I swapped chairs for the one that was "more comfortable." Also you might want to add to this something about a nice working environment. Here, they keep it cranked up to about 90 degrees in the office during the summer. By the end of the day, I'm so hot and sweaty that productivity drops dramatically from about 2:00 PM to 5:00.

>>Every programmer shall have a fast internet connection

Got this.


>>Every programmer shall have quiet working conditions

I dream about the days when I used to have an office. Now I'm in a cubical and get interrupted about once every 5 minutes or less. The article you did about being in the zone was spot on: I'm only ever able to get into the zone maybe once a week if I'm lucky here.


I usually disagree with a lot of your posts, Jeff but this one was spot on.

Jeremy on August 28, 2006 07:29 AM

"So... What do you people think I should do? (BTW, I have the lowest salary in my department, but I regularly spend time teaching "senior" developers about the very basics of HTML and programming.)"


AC: Move out of New York and come to Seattle.

Scott on August 28, 2006 08:05 AM

I´m agree with most comments.

Should add this:

"Each developer must have a comfortable desk as well". We´re currently using these "came from china", small, without space desks. matter is that if you put in an external HD you don´t have space to move your arm, (hell of work when i try with a speaker!).

And what about free tools - every developer should have the right to choose which tools can use (if these are free or not license is required) - IT always bothers you :@

And PLEASE!! if you cannot provide even a division or a cubicle for each, please give us a monitor filter or something. Is quite annoying to be moving the monitor to left or right when people next to you want to see what you´re doing :|

No one on August 28, 2006 10:31 AM

Isn't this whole thing just what a developer needs to negotiate with their boss? If they can't negotiate what they want, what makes sense to both parties, then either bite the bullet or change job.

QAZ on August 28, 2006 10:32 AM

More specifically, the "Bill of Rights" should address fundamental and measurable rights that don't need periodic revisions. For example, why two monitors and not a personal IMAX monitor? So similar to "freedom of speech", why not "freedom of getting an ergonomically correct physical working environment"? This should cover all monitors, keyboards, mouse, chairs, desk hight, foot-rests, and etc.

The requirement of development tools is especially hard to measure. Is one tool really fit for a particular development task? Who's the judge on that? With whose money? And what if it's really expensive and you really don't have the budget? Who's going to decide that you can live with the workarounds or you absolutely need to quit the job?

On the "quiet working condition" front: sometimes putting a team in the same room (inheritly more noisy) actually improves productivity and team morale. Before Lego-cubicles becomes a reality, I think some flexibility in shared and private space would be nice (where one can easily move between the two kinds of working spaces).

There are so many things that can impact job satisfaction and being a programmer fundamentally is not too much different from being in a different occupation, in the sense that you need some things to get some other things done. It's hard sell to recognize them as "rights" because at the end of the day, they are still negotiable... It might be more helpful to recognize good and bad people/project management practices...

QAZ on August 28, 2006 11:16 AM

AC, you should start a revolution. Burn down the bastards that hold you back. Take what you deserve.

Armen on August 28, 2006 11:31 AM

I agree with you all the way!
They should make this bill.

Brian Sheridan on August 28, 2006 11:54 AM

Having a single high-resolution monitor, or multiple average-resolution monitors are both acceptable.

Philihp Busby on August 28, 2006 12:52 PM

I think every developer should have their own development server with an external facing IP. With the world of virtualization at our finger tips, companies can purchase one beefy server and provide each of their developers with a virtual machine that they're free to mess with and break as much as they like.

P.S. I love that quote:
"A lack of planning on your part does not constitute an emergency on my part"

Ryan on August 28, 2006 01:05 PM

Ha, at least you get PC's.

Here, we have these HP thin client things, and we run VS 2005 on a terminal server shared with 5 other developers. Everything lags dreadfully, even simple tasks like dragging and dropping are painful. Even browsing the web sucks on these things. And the VS debugger? Bwhahahaha. But hey, developers don't need to debug code! They should write it properly to begin with.

Also only have a single 17" LCD, and it's not even that great, a standard HP keyboard (probably the best bit of equipment on my desk), and a no name mouse with a broken wheel.

And flexible hours? HA! I can't wait until summertime, when we start an hour earlier, at 7am.

BA on August 28, 2006 05:55 PM

fantastic

Uday on August 29, 2006 01:30 AM

@AC

"I earn roughly $7500 per year, which is an average yearly salary in my country. I should be able to buy my own apartment in roughly 142 years."

Do you live in Poland too?

"So... What do you people think I should do? (BTW, I have the lowest salary in my department, but I regularly spend time teaching "senior" developers about the very basics of HTML and programming.)"

Move to Ireland as I did

PW on August 29, 2006 02:22 AM

Workspace Nirvana...

http://blogs.microsoft.co.il/blogs/kim/archive/2006/07/05/1215.aspx

Kim on August 29, 2006 02:29 AM

I do not see any problems having one monitor, but when your manager doesn't keep you motivated and interested in what you do, it really sucks. Every person has to be motivated to make his work good. Why are there so many people with no management skills whose work is to manage human resources?

JCurtis on August 29, 2006 07:10 AM

What about a bill of rights for the programmers customers (ie: the folks with the problem to solve)?

Right to engage developer in a dialog about the problem to solve, rather that demand detailed concise requirements.... Work together to build requirements. Developers have a better clue as to what a requirement really is (versus having the customer tell you how to code it)!

Right to know the progress of some project at reasonable intervals. Customer doesn't need to know status every hour, or even every day (perhaps), but not hearing from the developer until weeks later is far too late to find out that the developer and customer are disconnected.

Eric on August 29, 2006 07:35 AM

A nice collection of items that, no doubt, would improve the overall *effectiveness* of a developer.

However, do we believe these rights to be *inalienable*. From whence do these rights flow? I am not against Better Conditions, but rights implies either a vaguely disguised threat - or plea. If these rights come from the Great Developer in the Sky, so be it.

As for the "developer should be on the slowest machine" nonsense (yes, nonsense): This argument has been picked up, touted, and reasonably knocked down for decades now. Is no one listening - or do they believe that all the work in software development processes: agile, RUP, etc is just to make the Developer *better*? No - the cost of the "development" hour is the single, largest, expense in the creation of new software.

So, if you have no economical sense: Go ahead! Give them slow computers. And watch your budget EATEN alive as developers lean back in those New Comfy Chairs and stretch while the current compile/test/debug goes on and on.

The only addition I have, and it isn't exactly a right is this:

Developers ARE business people.

Okay, just a statement and not a right. However, allowing the old stereotype of the "developer who don't know nothing but code" never really existed but it does allow the non-technical to look down their collective noses at Developers - even though that same group is the group IMPLEMENTING their business rules.

Slow computers for Developers. Think Business!

Dan

Dan Lundy on August 29, 2006 07:41 AM

Regarding #1: Personally, I like 3 monitors. It's a good consistent plane, puts a monitor directly in front of you, and popup dialogs always seem to work better on 3. (On 2, some split the desktop instead of being on one or the other)

One really big monitor would be ok as well, but you get a lot more real estate from two or more for the same price, I've seen.

Regarding #3: The statement is right, but the reasoning is wrong, I think. Pride of ownership isn't what makes a keyboard and mouse better, it's comfort. Plus, they become an extension of you, your input into your working environment, and as such should be something that you feel comfortable with.

#4: Heck yeah...

#6: Maybe it should be a "workspace free of distractions" I work with headphones on when I'm at the office, and every time the phone rings, I have to look to see if it's for me, or the main line. Hard on the concentration. Plus, I can't get my boss to leave me to focus on anything to get it done.

Chris Szurgot on August 29, 2006 12:25 PM

I have a concern about #5. I apperciate the idea of grabbing some else's lines to help with your project, but the ethics bother me. I propose that you should add a comment saying where you got that line from. But then again, if someone of higher power sees that comment...hmm...I'd have to think about this so more.

Daniel Nunan on August 29, 2006 02:09 PM

I agree with Chris Szurgot - I don't mind too much whether the workplace is silent or has a lot of background noise, but I don't see that anyone can work productively if they're faced with constant distractions.

What we need is a big sign.

GO AWAY
(No, really - I mean it)

Simon Geard on August 29, 2006 07:02 PM

Oh, and regarding fast machines, I agree with the point that developers need two machines - a high-spec box for coding and building, and a testing machine with similar spec to what a customer will use.

Although testing on a customer-spec box may not help if the developer isn't testing with customer-level data. A UI might be fine on the small volume the developer tested with, but fail miserably when put into production with a thousand times the volume.

Simon Geard on August 29, 2006 07:12 PM

If you agreed to a salary, you already sold your rights and soul away. The only one that in the long run matters is that you have a right to code for yourself instead of building an asset for someone else.

older_than_you on August 30, 2006 08:11 AM

Quick PC - depends. If you're running VMs, or server part of an app, then yes (you have to get something done!), otherwise, then no (you should suffer like the users).

The two rights I'd add would be:

The right to work late when you're on a roll (I know, it seems wrong, but I can't and it's frustrating).

The right to do something else when you've been focussed on a problem for two long. A pinball machine or pool table would be ideal.

(All my best ideas come when I'm not thinking about the problem itself)

Andy on August 30, 2006 09:38 AM

I don't have a frickin' chance of getting these fulfilled when our employer won't even provide legal copies of Visual Studio to us.

djork on August 30, 2006 03:36 PM

I would add an unlimited supply of caffeine (pick your flavor) to this list. I see a huge difference after I have had a few cups of coffee in the morning, or after sucking back a Coke in the afternoon when the day is starting to drag on.

Brandon on August 30, 2006 06:49 PM

Quote : '(proposed) Every programmer should be given EXACT specifications of what he is expected to deliver.'


This one is my favorite LOL. I hate running off and trying to do a project with nothing but a general idea of whats going on. A GOOD systems analysis is a must!

Polymorpher on August 30, 2006 07:03 PM

//Error: I'm big, but my nick is Brasil Import//
//I from Brasil, i'm a recent programer//
Wow, if
______i find (a job) with
______these: conditions;
________then
_________i will be happyfully;
_________and
___________i gotoxy(lots of money);
___________for
_____________ever;
___________end;
______end;
end.

Error: Brasil Import on August 30, 2006 11:41 PM

Put things into perspective..... You missed the most important one ... "A bolnde under the desk!"

Sin City on August 31, 2006 06:29 AM

yes
i vote it ^^

Copy-Right-Killer on August 31, 2006 08:25 AM

Good list. They are all necessary for a programmer to be productive.

Yan on August 31, 2006 09:10 AM

This post is really really nice!

> 1. Every programmer shall have two monitors

I don't have. I wish I have. RIght now I have a LCD. that's it.


> 2. Every programmer shall have a fast PC

Well, i have a 2.8GHZ Intel Pentium with 1GB memory. The PC unit is unbrand though but it is still fast.


> 3. Every programmer shall have their choice of mouse and keyboard

I was allowed to pick from several left-over keyboard hahaa.. my boss bought a special mouse for me though.


> 4. Every programmer shall have a comfortable chair

I need a more confy chair.

> 5. Every programmer shall have a fast internet connection

Amen to this! Luckily I have but i'm kind'a pissed off when one of our designers visits youtube and watch anime!!!! draining all of our bandwidth!


> 6. Every programmer shall have quiet working conditions

So far, yes quite but i usually received requests from client via e-mail.. multiple projects, multiple clients.. It makes me crazy sometimes.

Jun on September 1, 2006 03:30 AM

fair point but if it bothers you so much, why not change things themselves, as you know buying an LCD screen is cheaper, even cheaper if you get a second hand old style monitor, so that sorts the monitor problem. A keyboard and mouse, they're cheap as well and you can also bring a good chair in.

I know it should be provided, but if someone else won't do it why not immediately solve the problem, on a computer programmers salary these items are affordable.

As for your PC, you can point out that the cost of a new one would be a fraction of your wages and would be value considering the boost in productivity this would achieve.

A broadband connection should surely be supplied as standard, you can't be using dial up?

Surely that's quick enough to get source code.

Quiet working environment? Put your ear plugs in (or industrial strenght ear protectors id it's that bad), put your phone on vibrate, you only need to take them off if you need to talk to other people.

If you can take direct action such as this, why wait for someone who knows what the problems are but hasn't lifted a finger and probably has no intention of doing so to do something about the situation, when you can do something quicker which could make your life a little more comfy?

finestcuts on September 5, 2006 11:52 AM

Someone mentioned free coffee and unlimited smokes. Yes I remember those days too. Now I solve the problem of the uncomfy chair by going out for a smoke. Gets the circulation going (in the legs at least) and as someone else observed, getting away from the problem often helps. Indeed it does, especially when one is enjoying a fine smoke and the superb eye-candy of midtown Manhattan. Ciao tutti!

Braso on September 7, 2006 01:55 PM

yo de acuerdo

papa on September 7, 2006 03:09 PM

That's awesome. It will improve everyone's working effeciency. And If I were a programmer, it would allow me to secretly play the most hardware demanding games of today x)

UltraSonicSite on September 8, 2006 08:31 PM

really a nice suggetion for a good and skilled programmer. i want to add one thing that, every programmer have the right to think free. so he can take any short of innovative and advantageble step in the field of programming.

Chandra Mohan on September 13, 2006 06:07 AM

Boss told me that she wouldn't buy the guy next cube over a silent keyboard. This guy is loud, and when he gets on instant messaging, he loves to hear himself type. I don't. Boss said to ket some headphones. So .. . .it took a while to adjust to the million radio stations that stream their music over the internet. Found a "world music" program that is killier. I have fallen in love with Lila Downs (www.liladowns.com). I also love www.hawaiianrainbow.com. Hawaiian music all day, lots of good guitar. www.Pandora.com is cool because I can design my own radio stations. Got one on Bob Dylan and also a swing one. I just click on the song I really like and put it on my wish list and someday I will be a $30 swing dj (.99 per song) with only hits I like on a CD. I guess I better stop now. Got a noisy place where I work. Boss doesn't get it.

Just John on September 22, 2006 11:20 PM









(no HTML)




Content (c) 2006 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.

没有评论:

google站内搜索

Google