I'm considering ergonomics for PairProgrammingFacilities right now and I wonder: is it okay if developers still have a home cubicle where they keep their stuff, and move to another area to pair? Most folk seem to regard cubicles not just as where they work, but also as their own patch of turf where they can leave stuff, take calls, and retreat if they don't want to be bothered. -- PeterMerel
I would hope so. In addition to giving each his or her own space, I think it would be useful for flexible pairing. A might work with B on one task, then work with C on the next. If there are just enough cubes for the right number of pairs, it might start to look like musical chairs.
I would be interested in hearing about actual experiences with PairProgramming as regards the physical set up. I've been assuming that on C3, each developer has a cubicle. Is that correct? Are there groups that have tried other approaches (with good or bad results)? -- KielHodges
At C3 there are no cubicles. For two years, they have been working in a single, very large room, with long tables laid in various directions. When I visited, Ron said they are looking to get some sort of private spot for themselves (not so large as a cubicle) for the reasons you mentioned.
Ward told me that at Wycash, they had single offices, and pair programmed by visiting each other. RobMee has been trying this where he works, and I think they just have cubicles there. He told me he has success with it, but then he is senior designer and very personable, so he may be able to pair program with almost anyone. -- AlistairCockburn
The best environment I can think of is small cubbies (like a study carel) around the periphery of the room, because people need privacy to take phone calls from their proctologist. In the middle of the room are tables set up for pairing. The cubbies might or might not have computers, but the hottest machines are always in the middle. I have imagined that the cubbies are offices with doors, but really small, but the C3 space is just open. -- KentBeck
I'd be completely happy if you added 3 or 4 small "meeting rooms" where people could go as necessary. Sometimes you really need a good passionate argument which isn't being overheard. -- BetsyHanesPerry
If I had it to do all over again, I would no longer create separate offices for each programmer, as I have successfully done for the last N years. I would have a big open space. As Betsy suggests, a small meeting room or two, and I would like to have a large meeting space in the big room, as we have at C3. Walls paved with whiteboards. Windows would be nice.
In C3, we have standard cube built-in desks, with drawers on each side of the chair slot, and two side-by-side standard flip doors above. We share these desks two per developer. No one ever uses the desk except to throw their stuff on and to take phone calls. We have one phone per person. Tried it with just one phone, went to one per person. I'd stick with a similar deal for this. -- RonJeffries
Aside from how offices/cubicles are or arent arranged (which is obviously an important consideration) I would think certain issues of how the pairing area is set-up or equipped would also be fairly important.
I definitely like it when the keyboard can easily swivel/swing from one person to the other without them having to move themselves or their chairs. Ive often wished I had something that made it easier to swap the mouse (and its rolling surface) back and forth with the same ease. Any suggestions?
Does anyone think they would benefit from having two monitors and one keyboard or maybe two keyboards and one monitor (sort of like Driving Instruction Automobiles that have a steering wheel, accelerator and/or brake on both sides of the car - PairDriving anyone :-) I actually have no idea about either of those suggestions, but Im curious to know if anyone else does and what their experience is?
Many keyboard arms have built in space for a mice pad these days. Alas, every one that I've seen with a good mouse pad area was either left-handed or right-handed which would clearly be a problem with "mixed pairs".
Ron said: "I would have a big open space" Other pages, such as RingerTape, talk about the need for quiet so you can concentrate. How do you avoid distractions (such as the pair next to you that has just started a heated discussion but not yet moved to a meeting room) in a large room? Is your room sufficiently large that pairs have some BreathingSpace? between them? This is a big issue when working in Central London (UK) which has some of the highest office rents in the world, so everyone gets crammed together. -- SteveFreeman
As a coach I take silence as a sign of illness. Don't get me wrong, I love staying up late at night and getting into that solitary-pool-of-light-five-high-coke-can-stack-zen-space. But that isn't team development. When I development in a team, it doesn't matter how fast I can go, what matters is how fast the team as a whole can learn. And that takes communication, the best form of which is conversation. -- KentBeck
I think we overshot here (and I don't like cola) as the word I used was quiet. I also work better when I have someone to bounce off, but I'm really bad at filtering out other pairs' discussions when they're too loud and too close. Maybe inability to ignore is a sign that we should be getting involved in the other conversation, but then why pair off in the first place if we can't let the others get on with it? At worst, it could be like try to work next to a running television. -- SteveFreeman
I've really changed position on this. I think maybe concentration is the enemy. Seriously. If you're working on something that is so complex that you actually need to concentrate, there's too much chance that it's too hard.
At home, when I'm programming, I usually can't even listen to music, as it interferes with my thoughts. At Chrysler, when I'm PairProgramming, nothing distracts me too much. I do keep one ear open for other conversations that need attention, but what happens when you're pairing is that your focus is on the partner and the work and the noise just goes away.
At the same time, remember that everyone is in the room, and everyone is a programmer. There is a natural tendency to keep the noise down, as well as a natural learning to deal with what noise there is.
If you're not pairing, the noise may be a problem, I suppose. If it is ... take it as a sign that you need a partner, not a private room. -- RonJeffries
On a related note, there's some evidence that prolonged isolation doing IT may cause brain damage, leading to concentration problems and irritability, inability to socialize while programming, violence, cluelessness, stupidity etc. A healthy brain should be focused by interaction, not unbalanced by it.
Articles:
http://www.cnn.com/2001/BUSINESS/asia/08/20/london.gamebraindamage/
http://www.observer.co.uk/international/story/0,6903,539166,00.html
http://www.unknowncountry.com/news/?id=1741
Kent Beck's description of the best environment I can think of ... is akin to CaveAndCommons. It's a layout I prefer too, and requested it for the build out of new space for our (Interliant) software development department. However, as a compromise, we lost most of the 'caves', and instead there are 6 'pods', with continuous workspace around the periphery of each, spacious enough for 5 developers each (approximately 72" width per developer), with plenty of open space in the middle. Furthermore, pairs of pods are visually joined together, with a large common area between, to create a larger team of ten developers, if necessary. This is high-ceiling space, so the walls between pairs of pods are 8 ft. or so, but don't extend to the ceiling; there's visual separation, but still an overall feeling of openness.
The open areas have extra tables to move around at will, and some of the workspace surface can be detached to form larger tables, if necessary. Mobile whiteboards can be moved around to create temporary 'walls' to divide the space into smaller spaces, if necessary.
This is a design tailored for collaborative development, but is somewhat at a loss for privacy. 3 office spaces are off to the other end of the floor, mostly for personnel managers, but I intend to let one be used on a 'check-out' basis for some private quiet time, if necessary.
Lastly, most all developers will be equiped with laptops, facilitating movement to join up with another developer to make a pair, yet still have computer in hand. I lost out, though, on getting a supplemental wireless network for this space; perhaps later we can add that.
All of this was designed with XP in mind; our earlier experiments with team programming in an open pit environment were good, so we're willing to try this out on a grander scale. We'll be moving into this space the first week of July, and we'll let everyone know how the space works out for us. -- KevinLacobie
Let's talk keyboards and PairProgramming.
Because of the layout of the keyboard, people have a tendency to shift and also hit enter with their pinky. This can cause strain on the pinky finger. This may fall into RepetitiveStrainInjury or CarpalTunnelSyndrome.
There are many ErgonomicKeyboards which may become mainstream someday. If a person wants or needs an alternative keyboard, how do you switch between keyboards? Use a hardware switch?
Is it a good idea to ask your partner to EmbraceChange and learn how to type on your keyboard?
NO. Taste in keyboards varies far too widely. If you use USB, you can plug more than one keyboard into the same machine without a console switch. If partners have sufficiently differing ergonomic requirements, it would probably be worthwhile to set up two instances of TheSeat side-by-side, either using the same computer with two video cards, or using two computers networked. The seats could share the entire display with VNC or similar, or they could share only the contents of text consoles, using the Unix "screen" program.
However, I've never worked in an XP environment (hire me! hire me!), so take this for what it's worth. -- DanielKnapp
Both partners may have the same "ergonomic requirements" and it may be that one has not started to suffer RepetitiveStrainInjury yet. This could be thought of as similar to the requirement that all people should bend their knees when lifting something heavy. Those that do not bend their knees will eventually suffer unless something else knocks them off the earth first.
My concern was more that the partners might have equally important, but mutually exclusive, ergonomic requirements. If they're radically different heights they'll want different screen-keyboard distances, for example. -- MichaelFinney
See also AbleBodiedTwentyFiveYearOldMaleAssumption.