15
votes

Many of us have worked in multiple environments over the years, and have found that some are more productive than others. In many cases, it's not directly related to the abilities of the developers, but instead to their environment. I myself have experienced this, being in places where I seemed to develop faster, and better. And yet other places I seem to be dragging time, and developing less thoughtfully.

What do you think creates a productive development environment?

0

16 Answers 16

26
votes
  • A door I can close.
  • People I respect and vice versa.
  • Good senses of humor.
  • A shop that values quality, longevity and customer experience more than get it done fast or via a death march.
  • Management that removes rather than places impediments.
  • Pinball machine.
0
21
votes

A quiet environment with minimal interruption.

2
  • Do you think a white-noise generator is helpful?
    – Jonathan Sampson
    Jan 19, 2009 at 15:29
  • @Jonathan - Personally that would drive me crazy, but if you have enough computers, you don't need one ;)
    – Jon B
    Jan 19, 2009 at 15:34
19
votes

Freedom for the programmers to experiment a little bit

4
  • Great suggestion. I've heard that Google actually allows their developers to work on personal projects during the work-day. I can imagine how nice that would be! Most of my personal projects give me new ideas for work-related projects.
    – Jonathan Sampson
    Jan 19, 2009 at 15:37
  • True. I've seen and worked in places where there's so much rigidity and bureaucracy that it stifles creativity. Hence a little freedom to explore and experiment will go a great deal in making the workplace comfortable. Jan 19, 2009 at 15:44
  • One of 3M's cash cows, the Post-It note, came as a result of the company's "bootleg" policy, which allows employees to spend 10% of their time on personal projects. Heh, but try to get a PMO to approve that in most companies.
    – Bernard Dy
    Jan 19, 2009 at 16:21
  • Working for google must be so good. sigh...
    – annakata
    Jan 25, 2009 at 18:00
13
votes

People that are enjoyable to work with.

11
votes

A clearly-understood business strategy in the company. If the company does not have a long-term vision, short-term goals, and well-understood, immediate needs, then even great programmers will be chasing their tails trying to keep up with the shifting winds of management.

2
  • 2
    That's actually a very good point that I've not really considered before. In retrospect, it explains why in previous companies specs were constantly changed, and software was never shipped, and developers were growing weary constantly.
    – Jonathan Sampson
    Jan 19, 2009 at 15:34
  • 2
    i am leaving my current job for this very reason. The company has lots of money, i work with great people, excellent benefits and whatnot.. but i need to be working on something that has some vision for the future.. And I dont believe I will be the last good person they will lose.
    – mike
    Jan 19, 2009 at 16:25
9
votes

Continuously embracing new technologies.

This is often taken for granted. I can say that after hearing the heartache of a programmer who was still using Access as their backend database and a sales manager who fights with Citrix terminals all day.

3
  • +1 - I quit a job after being forced to work in spaghetti code VB6 all day. My motivation and skills were backsliding.
    – womp
    Mar 24, 2009 at 21:29
  • 1
    This is good, but it needs to be controlled. You need to embrace new technologies that will help development and improve the product, not just whatever is on the back of this month's magazines.
    – Jeff Barger
    Aug 24, 2009 at 23:11
  • -1 I saw a company that continously embraced new technology. They had a hell of a time getting anything out the door because as soon as they finished writing their code, there was "something better" that they could rewrite it in. Jan 12, 2011 at 5:51
8
votes

Something that hasn't been mentioned yet: a gigantic white board.

6
votes

Environment:

  • Low Cube Walls
  • Physical Separation from sales & marketing
  • Natural / full spectrum lighting
  • Comfortable and ergonomic chairs / computer setup
  • Close proximity to team members
  • Close proximity to QA
  • Lots of conference rooms

Team:

  • Smart
  • Motivated
  • Good communication skills
  • Outspoken
  • Entertaining

Computer:

  • 2 or more monitors
  • Ergonomic wireless Keyboard & mouse
  • Good headphones
1
  • 1
    +1 for Physical Separation from sales & marketing. Not because I admire that but because how strange it is that I understand this requirement.
    – n611x007
    Nov 21, 2012 at 12:10
5
votes

The best environments I've been in were when you have a good team, with fun problems to solve. If the work isn't fun or interesting no matter what you do the team won't excell.

The next thing is the physical environment, minimal noise, good lighting (Which doesn't always mean light but light in the qty that the developer(s) at hand work best in.

The final things are good tools / toys. Good computers, good software, multiple monitors etc. And toys to wind down on, foosball table etc...We used to have our adhoc standups around the foosball table and while yes it was less productive, it was a lot more fun and allowed us to wind down as we prepared for the next steps.

3
votes

In my last job we developers would meet once a week in our own private meeting room, and just talk about technologies we've been playing with or frameworks we've been exploring. At times we would write problems we had up on the board, and solve them as a team. It was nothing as crazy as playing pool, or video games, but it offered such a release from the tension of the office that we were able to revive our excitement for the day, and finish the task-list.

Today I work as the sole developer on a small project - and boy do I miss those meetings! StackOverflow is my replacement :)

2
votes

"Dan Pink on Motivation" notes a few ideas that I really like for where I work: Autonomy, Mastery, and Purpose. Give me the freedom to do the work, let me become proficient and have a purpose.

On the technical side, good hardware like dual monitors and a machine with a reasonable sized hard drive and RAM, along with good tools like an IDE, source control, and continuous integration machine also prove quite useful.

1
vote
  1. A quiet work enviornment free from interuptions and distractions
  2. Free soda
  3. Nice equipment (fast computer, comfortable chair)
  4. Engagement (the people working on the team need to feel a since of ownership and connection to the project).
0
votes

Adding to the the above.

1) Good relation with work colleagues

2) A nice big table

3) Two big monitors

I think its very important to be confortable.

0
votes
  • Quiet, repetitive music (ie: Infected Mushroom)
  • Dual Monitors
  • Fast PC
  • Leather Chair
  • Dunkin Donuts number 4
0
votes

In order:

The tools I need to keep doing this for years, without hassle. OSHA-compliant ergonomic chair and desk setup, keyboard that fits me. Lots of screen. Adequate computing hardware.

Interaction with people who are smarter than myself. Isolation when I need it.

Interesting projects which impress me, new challenges, and other things which make me want to be productive.

An agile process with participation in all aspects of development, to some extent. The ability to guide requirements and properly implement the non-negotiable ones.

Lack of code ownership, at least somewhat. A process which lets my co-workers check changes into my project, or vice versa. The ability to do the right thing when I find a problem without being doomed to maintain it forever.

0
votes

Quiet, library type environment with higher cubicles to focus and concentrate to be creative and productive. Not sure about others but when coding, I have all the code in my head before putting it to terminal. Any distractions visual or audio can severely impact the speed and accuracy of the task at hand. As always, testing and debugging comes next but you are leaps and bounds ahead of the game.

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