Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've been tasked with creating a fun and relaxing environment, one thing I know that I want is ergonomic mice and keyboards, others have suggested exercise balls and bands.

What is it that every programmer needs while working? What might not be necessary but would be nice to have anyway?

Note: this question was asked previously, but has been recommended to be posted here. See this link for the previous responses: http://stackoverflow.com/questions/3911911/stuff-every-programmer-needs-while-working-closed

share

locked by Yannis Mar 13 '12 at 20:41

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

3  
Wow what company is that, treat there employees so well! :) Wish I am able to join such a company too! – Jiew Meng Oct 13 '10 at 8:04
38  
Why don't you ask your developers what they want? – Thomas Stock Oct 13 '10 at 11:54
7  
Conjugal visits – Greg Nov 4 '10 at 0:29
1  
Nice salary!!!! – Amir Rezaei Nov 18 '10 at 10:50
1  
Something that may not have been mentioned - good temperature/humidity/air quality control and nice bathrooms. I, for instance, get more hungry while working during hot summers than cold winters, because the temperature inside is negatively correlated to that of outside. Ideally the correlation should be slightly positive, but still be close to zero. – Job Dec 12 '10 at 15:49

90 Answers 90

A sound-proof office.

share
    
would that be to block inbound or outbound sound? – LRE Jan 16 '11 at 5:27

Self Discipline

Like it or not, we're not all Pablo Picasos or Walt Whitmans who can code only if and when the muse strikes us.

Most programmers have likely already discovered they're asked to code things they're not personally enthused about all the time. You also need to find a way to reach inside yourself and pull out good code even when the mood is wrong.

share

Choice

While I think your motives are good, I would recommend not deciding on an ergonomic keyboard and mouse, dual monitors, etc. One of the things that motivates good people is autonomy. I would look at getting them "the best" as much defined by the individuals as possible. This can easily be accomplished by giving people a budget and allowing them to spend it as they see fit.

While the team needs to agree on some things, common source control, open concept or private offices, there are plenty of things where there no advantage to everyone having the same thing. If someone want's a different chair and they're comparable in price, why not?

share
    
+1 Possibly the best answer. – Orbling Jan 15 '11 at 1:12

A decent chair. (If you can afford it, a Herman Miller Mirra is absolutely wonderful for someone sitting in a chair for many hours a day.)

share

A change room with a good shower, and somewhere to store your stuff.

Going for a run in the day or riding to work make the day so much better, except if you stink for the rest of the day. Plus, it enables people who might not bother getting outside the chance to do so.

share

supervisor/manager

  • who cares about you as a person
  • who encourages laughter
share

Workstation OS freedom

If you're an open source shop, let your developers choose between Windows, Mac OS X, or their favorite flavor of Linux for their workstation.

share
4  
+1 because this is so true and I wish so much I could migrate my work-environment to Linux (I'm writing .NET Software for Windows...go figure). – Bobby Oct 18 '10 at 22:30

Ergonomic keyboard trays

If you're going to be typing for most of the day, RSI will hit you at some point in your career. These help relieve the stress.

share
    
something like microsoft.com/hardware/mouseandkeyboard/…? – Jiew Meng Oct 13 '10 at 9:00
    
@jiewmeng that's a keyboard, i'm talking about newegg.com/Product/…-48-007-317--Product – wheaties Oct 13 '10 at 14:56
    
Or you could aknowledge that RSI is a psychosomatic symptom, and fix it with some mind-tricks. Check out www.tmshelp.com – Nailer Oct 28 '10 at 13:26
    
@Nailer: It most certainly isn't psychosomatic, it's highly debilitating. – Orbling Jan 15 '11 at 1:11
    
@Orbling: Oh, trust me. I've had it. I was able to reduce symptoms in 5 minutes to next to nothing once I realized it was my brain that clamped up the muscles in my hands thus reducing bloodflow to my arms. – Nailer Jan 15 '11 at 8:11

Mix Up the Workweek by Setting Your Own "20-Percent Time"

Many large companies have policies that allow employees to spend some of their time working on their own projects. These programs are often used to entice high-caliber job applicants, as well as encourage innovation. For example, Google has what it calls “20-Percent Time”, where its employees spend one day each workweek on project they’re passionate about.

Why?

  • Innovation and creativity
  • Exploration
  • Opportunity
  • Motivation
share
    
I've come to appreciate this idea so much with my current job. Sometimes, I wish I could just do something else for an hour during my day. I think it would go a long way. – Bryan Harrington Jul 18 '11 at 2:16

PC componenets:

  • High resolution and/or wide screen monitor having resolution at least 1680x1050, diagonally at least 19". Technology: LCD or higher, having response time < 10 ms. Good color reproduction and wide viewing angle are also important (thanks to Billy).
  • Processor should be Core 2 Duo or higher.
  • RAM should be 2 GB or higher.
  • Fast (>= 7200 RPM), large (>= 320 GB) hard disk. If possible, employ SSD.
  • A set of exotic keyboard and mouse, possibly wireless.

Other:

  • Large enough desk space.
  • Free beverages.
share
    
what is an exotic keyboard and mouse? – Jason Oct 12 '10 at 20:18
    
@Jason, the word is too heavy to describe what i wanted though. :P but i prefer keyboard and mouse set with which typing and point-n-clicking is very comfortable. – Donotalo Oct 12 '10 at 20:39
    
Big monitor? Yes. Fast system? Shrug, I've seen programmers run circles around most working on nothing but VT100 terminals. – Xepoch Oct 12 '10 at 20:40
    
@Xepoch, don't have idea what VT100 terminals are and what do you mean by run circles.... a fast machine will compile my code faster, will boot/restart my pc faster, will load applications faster, large ram will help to run several applications simultaneously etc. – Donotalo Oct 12 '10 at 20:46
4  
I don't think response time should matter for programming -- you're not playing games on a programming system, and that's about all response time buys you. Color reproduction and viewing angle are much more important... – Billy ONeal Oct 12 '10 at 21:20

Virtual Machine Software!

Depending on what you're developing you might also want some virtual machine software like VMWare or Parallels. For instance if you develop websites and do so on a Mac there is no way to run Internet Explorer on a Mac anymore. You either have to reboot into Bootcamp, which is a huge waste of time, or you can have a tiny VM running with Windows in it that you can use to test IE. Some people claim to use WineBottler, an API wrapper, to run IE but it never worked for me and the moment IE gets an update the wine bottle breaks. It's easier just to have a TinyXP distro in a VM.

Of course you could spend a couple grand on a second computer or have a test machine set up with Windows but that's a huge pain in the rump. When we did that someone was always breaking it and then you couldn't test. Using a VM made testing instantaneous and put the power back in the programmers' hands.

share
    
I like VMWare as it has some nice features that allow visual studio debugging of VMs – Martin Brown Oct 14 '10 at 15:31
    
Not only is it nicer to be able to have a VM to run IE, but also VM's to run XP/Vista/Win7 and IE6/7/8 and FF and Opera and... Just having a second PC won't give you that flexibility (unless it has a VM....) – Wonko the Sane Oct 15 '10 at 12:45
  • A massage chair.

enter image description here

  • A USB toaster.

enter image description here

  • Wet tissues.

enter image description here

  • A trash can.

enter image description here

  • A foot rest.

enter image description here

  • and many others.

EDIT: Among other tools, I most need a chair like below.

enter image description here

share

The best thing you could probably do, however I am unclear of your budget is get everyone maximum space and privacy (However these don't go well together). With this in place, programmers can create their own comfortable work environment

share
1  
+1. I actually really like this one. An empty office and a budget would really motivate me to accept a job offer from a company. – Stargazer712 Oct 14 '10 at 19:18

A punching bag

Great way to blow off some steam.

share
    
I have on occasion been tempted to substitute co-workers for punching bags – LRE Jan 16 '11 at 5:28

Headphones + white noise generator

I either use the one at SimplyNoise, or a free iPhone app called White Noise Lite

share

A really good text editor and knowledge of its key bindings.

share

A Phone!

Why hasn't this been said yet? I need a phone to communicate with my colleagues, much easier than e-mailing them sometimes.

(Off course, my phone has a log-out/turn-off button on it so I don't get disturbed when I want to.)

share
2  
In the old days we just used to take the handset off the hook. – Martin Brown Oct 14 '10 at 15:29
    
Having a phone is only a good thing until someone passes your phone extension on to some clients. – Bobby Oct 25 '10 at 7:47
    
I'd like my colleagues to be within walking distance. – user1249 Mar 10 '11 at 19:51

Windows that you can open.

Not the software kind. The wood/metal frames with glass you look through to see the outside world.

I hate being completely enclosed in a sterile office. I've been a dual-monitors guy since the 1990's, and I live in Seattle, but I'd give up free coffee and half of my display area to have fresh air in the summer.

share

a computer, a mouse, a keyboard, and a monitor, a REALLY nice chair. oh, and google.

share
    
+1 for Google. Best search engine ever! (At least due to its simplistic display.) – Thomas Eding Mar 10 '11 at 18:34

What I like is:
A super fast computer.
A large enough monitor. (Debugging in a 17' is horrible).
Super ergonomic chair.
A private room.
Talks via chat or emails only for most of the part.
Quality headphone
Water bottle with fresh lukewarm water.
Calm atmosphere.
A sofa to lie down.
A locker to keep personal things
A book (to scribble some thoughts).
Use which OS, IDE etc (left to the programmer).
Fast internet connection with no restriction (ok adult contents can be restricted. Nothing else.)
I need good friends and fellow programmers of preferably same age.
A girl to flirt with may be ideal since life is so boring. And programmers hardly have got any girl friends. (hah! just kidding)
A free time where we can pursue any hobby that we like. Food available locally. Needn't go out of the building to have one.

share
    
Sometimes not having a super-fast computer means you have to pay more attention to detail (and optimization), which means your program will behave better on your user's wimpy computers. – khedron Oct 14 '10 at 6:13
    
@khedron Yes that's right. For that we can have a separate test computer. Having a computer which is less powerful makes me to wait for a bit to have it build the program after I make changes, in case the program is huge. It mainly affects compiled languages. Sometimes I need to build parts by part since it runs out of memory. We can have separate build system, but this is when we develop (program). – kadaj Oct 14 '10 at 6:27
    
did you mean 17" – Midhat Oct 16 '10 at 15:32

Good enough colleagues.

I'm in a private game programming school right now, and obviously there are not enough clever people in my class, unlike the one of the same year of the last year.

By clever enough I mean maturity, interests, programming experience and self-motivation to solve a problem by his own self rather than asking other student rather than the teacher.

share
  • Quiet office with large windows
  • Good ergonomic hardware
share

Supplement and Multivitamin ....

share
  1. Other beverages (hot water for tea, fridge for cold drinks). Believe it or not, we're not all coffee nuts.
  2. Customizable workspace: coders have, if nothing else, strong opinions about how we code. I often walk off with a fountain pen and notebook to start coding (often outside, on the floor, or in other strange places). The more control coders have over our process, the more productive we can be.
  3. Business processes, etc. that allow us to customize our soft tools as we do our workspace: i.e. don't use proprietary protocols or formats that force us to all use the same client apps.
  4. Work/life balance: despite popular opinion, programmers may have lives. Some of us have significant others and/or children. Not only is it hard to attract and keep great coders if you work them 60h/week, but the ones you do keep will often be too burnt out to be productive.
  5. Work/learning/community balance: I think someone already covered this, but coders need chances to grow their skills and network with coders outside their office bubble in order to stay at the top of their game. This is especially true of coders working primarily on open-source products. A few hours/week of community coding, and a conference or two a year can make a dramatic difference in your coder's ability and productivity, as well as your company's clout with other programmers, some of whom you might want to hire.
share

This may sound ridiculous, but a music room for musically-inclined developers stocked with relatively inexpensive instruments and modest amplifiers.

While working remotely at home, there's nothing better at keeping my brain actively thinking about solutions than practicing my guitar.

share

I prefer two monitors,Quiet office, good machine.

share

Easy access to refreshments, for example a coffee pot in the room (if that's your preference).

There's nothing worse than grabbing a quick coffee before embarking on the next section of code, and being ambushed by users with support issues or managers who want "a quick chat" (or worse, vica versa).

share

A game room where he/she would not be disturb while is cleaning hes/her mind.

share

Quiet.

Low light.

A steady and never-ending supply of soda, or other caffeinated beverage of choice, never more than an arms-length away.

A computer fast enough that you don't leave the zone while waiting for a compiler or debugger to finish. Obviously for larger projects this becomes difficult, but ideally I never ever wait on the computer.

share

A window manager with multiple workspaces and a terminal-based window manager such as GNU screen. Multitasking can be very difficult without an organization system.

share

Not the answer you're looking for? Browse other questions tagged or ask your own question.