I recently read the “Bill of Rights for Programmers” on Coding Horror. I thought it was pretty good, but he missed a few, so here is his list, with a few necessary additions: (My addendums are in green)
- Every programmer shall have two monitorsWith 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.
$200 worth of monitors, to be precise. That should buy two 19″ LCDs. Pretty reasonable.
If your company won’t buy them for you, you should buy your own. Seriously, you need them. Don’t be an arse. Once you show up with your own monitors, your boss will see that you are serious and cough up the cash. It has happened for me at three different places that I worked.
- 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. (criteria omitted). Outfit your developers with fast PCs that have lots of memory. Time spent staring at a progress bar is wasted time.
I agree with some stipulations. You don’t need a fast CPU, but you do need $150-200 of RAM and $99 of HDD. Every developer needs to run 2-10 times the number of programs that a normal person needs. Since the advent of VMs and VPCs, the bar has been raised A LOT. I would say 2-4 GB RAM and 500GB HDD, but that number rises each year. A dollar amount is a much better measure.
- Every programmer shall have their choice of mouse and keyboard(anecdote about painters and paint brushes omitted). 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.
Just buy your own mouse and keyboard. You need it! Seriously, just buy your own stuff. You spent 50-200k on a college degree, but you want someone else to buy your mouse and keyboard?! You know, darn well, that they will get you the wrong gear and try to tell you it is close enough. Then they will think you are being a whiney girl, when you disagree. You are a man now (or a woman, etc). Skip all that crap and just buy yourself the tools that you need. Sheesh!
Oh, and buy your own headphones too. Seriously!
- 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. (rambling omitted).
This one is a lower priority. …unless you have back problems. I knew one programmer that pressed the contractee/employer to buy a better chair (for $900). Nope. That person was the first to get cut from the project. Asking for a chair that costs more than your computer is pretty risky. I also wouldn’t ask my employer to buy me orthotics, glasses, crutches, etc. You get the point. You shouldn’t have to sit on an upside-down bucket, but demanding a better chair than your boss, is like begging for trouble.
- Every programmer shall have a fast internet connectionGood programmers never write code 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.
True! Also, don’t put crazy filters to block people from going to the places they need to go. Just put the developers in their own DMZ. If anyone gets a virus, they will be punished by their peers. If you think the developers are surfing-porn/yahoo/playing-wow all day long, put a proxy on your inet gateway or run wireshark or something and confront the slacker. Being pessimistic or untrustful of programmers is counter-productive.
- 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.
Also, encourage developers to wear headphones. Anyone with speakers should be flogged.
If the developers are concentrating, you can be sure they will not have their noses in MS Outlook. So expect them to check email four times a day, (not every 15 minutes). Also, have the PM bring the developers to meetings (ref the previous sentence).
- (6b) Every developer shall have his cell phone on silent mode. Any calls should be answered in the break room.
(6c) Every developer shall be encouraged to use IM. It is much quieter and will not disturb your co-workers (see 6 and 6b). Also, it is easier to measure if abuse is suspected. (see 5)
- Every developer shall be an administrator of his own machine(s). He shall be allowed to install any software he needs to do his job (within reason).
- Every developer shall have dev servers (or VMs/VPCs) and have admin permissions on those dev servers. …unless the developer is a rookie. Then the rookie should know how to earn enough trust to get those admin privileges and how long that should take.
- Every developer shall be required to go to a seminar, at least once a year. Especially if that seminar is free (like MSDN Cafe, etc).