5

I was speaking with an ex-colleague the other day about the most productive way to write code and he said he found it best "to CIMP, or Code In My Pants".

When I asked him exactly what he meant, he explained he found it best to work at home, coding at his own pace, dressed comfortably (in his pants), and communicating with his team through emails, IM, or the telephone.

Digesting his approach (which he describes to clients as the Complete Integrated Method of Programming), I realised my coding is also more productive when working in an isolated environment, which made me wonder if the software industry has got it all wrong and should development be really done by dispersed teams of individuals, or are there advantages to geographical herding that make up for the added interruptions it brings?

So has business got it wrong? Should development occur predominantly across geographically isolated individuals to increase productivity, or are there real reasons why herding developers together makes sense?

4
  • 3
    As with most such questions, the answer is: "it depends". At times, you can accomplish a lot more, much more quickly, with a F2F conversation. Especially when you're just hammering out code, you maby be better off alone. Feb 22, 2011 at 17:31
  • 1
    If he was coding without his pants I am not sure I need to know.
    – user1249
    Feb 22, 2011 at 20:45
  • I'm with Frustrated. It sounds dirty to me!
    – Marcie
    Feb 23, 2011 at 21:57
  • Recommended TED talk related to this: ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work May 30, 2016 at 17:21

4 Answers 4

15

He's right -- the best way to code is generally by yourself, without interruptions, despite all the extreme/pair programming fads that have been going on. However, coding isn't the whole story when it comes to development -- there's also design, and design is best done in (small) groups face-to-face, so ideas can be bounced around.

1
  • 3
    For some value of "best".
    – Marcie
    Feb 23, 2011 at 21:57
6

A good coding environment is such an important part of a good workplace that it's included as part 8 of the Joel Test.

There are extensively documented productivity gains provided by giving knowledge workers space, quiet, and privacy. The classic software management book Peopleware documents these productivity benefits extensively.

I wont quote the entire thing here because it's worth reading. Essentially you need to have a work environment where you can "Code In Your Pants" at work, but you also need to be at work to keep away from distractions that might appear at home.

My work computer has work software on it, my home computer has games on it. If I work on my home computer I often find that I accidentally click on the wrong shortcut and find myself engaged in various forms of multimedia distractions.

That all being said, there's no reason work has to be at an office, if you work from home, it can be as simple as a separate space (office, room, whatever) to help avoid distractions. The advantage to physically being at an office is that you can easily be interrupted.

Yes, interruption is an advantage at work. You don't want to send someone off to work on a particular aspect of a program and then not be able to contact them when the client has changed their mind completely on the spec or something absurd like that. Having a work space allows people to keep in close contact when they need to, but doesn't mean they should have to be in close contact 24/7.

"Moderation in all things" is best, working from home comfortably is alright, as long as you have some time with the rest of the team to go over the details and review your work.

1
  • Any reason for the downvote?
    – zzzzBov
    Feb 22, 2011 at 22:36
2

I worked for two fortune 500 companies in the past as both a developer and an analyst intern. Company A knew of nothing but the classic cubicle setting in which developers were herded together and had close contact. Company B believed in a more progressive approach in which you could work from home, other office locations for a certain time period, and many other options. This of course had to be an approved internet connection for communication reliability since you weren't on the intranet and was sometimes based on supervisor approval and performance reviews.

I saw different co-workers have differing performance which I believe was rooted in their personal preferences, motivation, etc.. But personally I enjoy coding in Multiple environments. Let's face it. No matter what project you're working on it's always just going to be you and your workstation. I think if the software development industry or corporations with a sizable IT dept placed their developers into cycles in which they could experience the classic cubicle setting and also be dispersed geographically from team members, it would lead to increased productivity in the long run. I would think that the challenges the different communication channels could offer along with the self management,(since your boss wouldn't be breathing down your neck and counting your smoke breaks), would only make an individual more adaptable and more efficient.

0

There is no "most productive" coding environment; it really depends on the task at hand.

I find that for certain tasks, I work best alone, but at work (reproducing customer-facing bugs, for instance). For others, I like to have a pair and to work in a ping-pong style. Others still I do best at home. I can get into a good rhythm in any one of those environments, but every environment is not well-suited to every task.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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