I'll jump in here with a small comment about paired programming:
it's awesome. Fortunately, my current work place really
encourages it. I was kind of iffy about the whole idea
at first, but I've changed my mind
completely since I started seeing how much better my
programming is when you combine two minds. You catch a
lot of assumptions & get exposed to a lot of different
ways of seeing things. One big bonus, too, is that a lot of different people become familiar
with different areas of code. So if something breaks,
you have a larger pool of people who can fix it.
The only problems we've run into are that some folks type
dvorak & some type qwerty- there are always pairs forming
where only 1 person can actually type faster than 1 letter
a minute on the keyboard being used. (;