Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question

migrated from stackoverflow.com Mar 19 '11 at 2:20

This question came from our site for professional and enthusiast programmers.

    
@Jonathan Simpleton... I think you need to work with your peers. –  natas Jun 24 '09 at 21:31
add comment

15 Answers 15

  • 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.
share|improve this answer
    
+1 A door I can close! Haha. –  Anonymous Jun 4 '10 at 15:17
add comment

A quiet environment with minimal interruption.

share|improve this answer
    
Do you think a white-noise generator is helpful? –  Jonathan Sampson Jan 19 '09 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 '09 at 15:34
add comment

Freedom for the programmers to experiment a little bit

share|improve this answer
    
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 '09 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. –  Nikhil Kashyap Jan 19 '09 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 '09 at 16:21
    
Working for google must be so good. sigh... –  annakata Jan 25 '09 at 18:00
add comment

People that are enjoyable to work with.

share|improve this answer
add comment

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.

share|improve this answer
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 '09 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 '09 at 16:25
add comment

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.

share|improve this answer
    
+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 '09 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 '09 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. –  Will Sargent Jan 12 '11 at 5:51
add comment

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

share|improve this answer
add comment

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
share|improve this answer
    
+1 for Physical Separation from sales & marketing. Not because I admire that but because how strange it is that I understand this requirement. –  naxa Nov 21 '12 at 12:10
add comment

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.

share|improve this answer
add comment

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 :)

share|improve this answer
add comment

"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.

share|improve this answer
add comment
  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).
share|improve this answer
add comment

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.

share|improve this answer
add comment
  • Quiet, repetitive music (ie: Infected Mushroom)
  • Dual Monitors
  • Fast PC
  • Leather Chair
  • Dunkin Donuts number 4
share|improve this answer
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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