Jeff Atwood of Coding Horror, one of my favorite blogs, recently posted his list of Programmer's Bill of Rights. While I completely agree with his enumeration, I think he overstates things a bit. The list, editing out the links, is below:
-
Every programmer shall have two monitors
-
Every programmer shall have a fast PC
-
Every programmer shall have their choice of mouse and keyboard
-
Every programmer shall have a comfortable chair
-
Every programmer shall have a fast internet connection
-
Every programmer shall have quiet working conditions
I would add to that the ability to alter or modify my workstation in order to make it more productive to my style of programming. Not trash the system or make if vulnerable to exploits, of course; but to allow me to load any little utility that I need to make coding easier, faster, or cooler. I will get into some of these utilities in a later post.
I don't think it's our right to have these things, but the employers obligation to provide them. Follow me here for moment: It is my duty to do the best coding I can do given the tools I have. That includes clear requirements, necessary hardware/software, and decent working conditions. However, if my employer wants to get the greatest amount of productivity out of me, the above conditions should be met. If they wish to pay me for substandard conditions, they should expect substandard output.
As GC says, If you go out and hire the greatest distance hauler you can find in order to guarantee the delivery of goods between LA and NY, you don't give him a pickup truck to do it with.
I am fortunate; after six years, I finally have a decent system:
- A 21" Viewsonic Gfx monitor with a 17" Viewsonic sidekick
- Dual CPU 3.4GHz Xeons with 2GB RAM
- Crap keyboard, but I bought me a MS Wireless Laser 5000 mouse
- Grabbed this comfy chair my first week and never let it go
- Stupid fast Internet (OC style)
- Could be quieter, but has been much worse.
So I am pumping out some great code. At least I am not wasting any significant amount of time trying to coax my system into doing what it's supposed to be doing.