How well you accommodate the needs of your developers can make or break their ability to work productively.
Many employers put little thought into how their office environments affect the production and happiness of their employees. While I can't vouch for other professions, I know that the right decisions in the workspace can pay big dividends in keeping workers happy and productive. Here are 10 things to consider when planning workspaces for your development staff.
1: Ergonomic offices
Being a software developer often involves spending hours sitting at a desk staring at a computer, so it is important to have the right ergonomics. A good desk and chair, the proper lighting, and the right computer equipment go a long way towards increasing productivity throughout the day.
2: Quality equipment
Companies love to standardize on inexpensive computer equipment. After all, most computers sit around with idle hard drives and CPUs most of the time and rarely fill up their RAM. Users typically fill up a single screen with a single application and go to work. Developers, on the other hand, need extra horsepower. Hard drives get filled with all sorts of things, and CPUs and memory get pushed hard while working on big projects, especially during testing and compiling. And screen space is at a premium; the more monitors you can put on a desk, the better. You will also possibly need a KVM and additional computers and devices (Macs in a Windows organization, various smartphones and tablets, etc.) for testing purposes.
3: Access to project stakeholders, users, and analysts
A big roadblock for a software development project occurs when a question comes up, but there is no way to get it answered quickly -- or there are so many layers of organization to talk through that the answer makes no sense. You do not need to give your programmers the cell phone number of the customer's CEO, but you do need to make sure that they have the access they need to get their questions answered promptly and accurately without having to go through a pile of middlemen.
4: Ability to adjust the workspace
Not everyone likes the same layout for their seating. A common problem, for example, is having a window or light putting glare on a screen. By allowing your team to adjust their workspace to suit their needs, you are enabling them to be as comfortable and productive as possible during their workday.
5: Privacy by default
It is hard to overestimate the productivity loss to projects because developers are shoved into close quarters. It isn't just that they need space. It's that software development is a job that requires long-term concentration and focus, and things like people having conversations right next to a cubicle can completely ruin that concentration. Obviously, you can't give everyone a soundproof box. But the more privacy people have, the better they can write their code. Yes, "open floor plans" have become a fad. But I have met only a handful of developers who prefer them, and plenty that have big issues with them.
6: Enough space for ad hoc, informal meetings
While people need privacy to work, they also need a place to share information and ideas. For programmers, informal meetings happen all the time. Maybe a question needs to be asked or a specification clarified. If you do not provide a good place for these meetings to happen, they will happen in inconvenient places instead, like the middle of hallways or someplace else that is disruptive. Either provide offices big enough for these meetings to occur or set up a few small conference rooms that do not require reservations.
7: Whiteboards or sketchpads
Talking about code is often a highly visual affair. Many of the developers I have worked with do much better when discussing their projects if they have something to write and draw on. Whiteboards or those large sketchpads are an inexpensive way to make it easier for these programmers to work together.
8: Creature comforts
When you have projects that often require extended work hours, it certainly helps if the workers have access to some things that will help them stay in the office for long stretches. A well-stocked break room with a variety of coffee and tea and snacks (remember to have some healthy options in there!) helps a lot, especially when the alternative is a drive to a gas station or convenience store or just going hungry.
9: IT support
Unfortunately, the needs, goals, and limitations of many IT departments put them at odds with the needs of developers. For example, developers need a wide variety of computers and devices to test applications on. But IT likes to have a few standard configurations, and bringing in devices into the mix that IT hasn't vetted is a risk. Likewise, IT departments frequently require certain settings or applications to work within the system that developers may not be able to live with (like not having local admin rights). It isn't a matter of who is "right" or "wrong." It is simply a problem of totally different needs. Having as much cooperation from the IT department as possible, while still allowing IT to meet its goals of security and cost management, is critical for developers to work efficiently.
10: Respectful work environment
In the last year or so, there has been a lot of talk about "brogrammers" -- a sort of combination frat boys/programmers who feel the need to turn the workplace into a truly awful environment in the name of being hip or fashionable. Well, from the stories I have read, not only are many of these workplaces blatantly illegal, but they are a miserable place to work unless you are "one of the boys." Females and those over the age of 30 are embarrassed if not offended by such places.
Not only do you need to avoid having a "boys club" environment, you need to be tolerant and respectful of a wide variety of people. And the reason is simple (above and beyond the obvious morals and ethics): Programmers come from a wide variety of cultures, backgrounds, and circumstances. If you want to have an environment where work actually gets done, you need to foster an attitude of respect for each other, plain and simple.
Are there other items you think contribute to a pleasant, productive working environment for developers? How close does your own environment map to this list? Share your thoughts with fellow TechRepublic members.