views:

211

answers:

10

I was talking with a recruiter about an opportunity where paired programming is used.

To me there are some concerns about two senior developers working together, as I expect I would be reading while the other is working.

But, as I talked with this recruiter I had a vision of a way that paired programming could be useful, if there was an editor that allowed two people to make changes to the same file at the same time, so, one person could be making comments in a file, as someone else is working on implementing the functionality. The comments could be useful to help explain what the thought patterns were when that functionality was designed, as, if two senior developers are working on some functionality, then it should be a problem of sufficient complexity to warrant some further explanation.

I don't know of any editor that would allow this, as it would probably have to be web-based, in order to see and modify the same problem at the same time.

Would something like this be useful?

What other uses would such a tool have that I would be missing?

I don't care to discuss whether paired programming is a good idea, I have my own opinions, but this concept is very interesting to me.

+6  A: 
Duncan Beevers
etherpad.com is another one.
Amir
A: 

That might be useful, but most of the time it would have nothing to do with pair programming (which I am also sceptic about).

Maybe for the case of distributed pair programming it may help — not really editing the same file, but having one programmer edit the file while the other comments on the changes on-screen. That's less disturbing for the one who does programming and still provides for real-time communications.

My more or less humble opinion.

Michael Krelin - hacker
If you're sceptic about pair programming, grab someone who has already done so and try it out. That got me converted.
sbi
sbi, well, one thing I'm sure of that it indeed GREATLY depends on who you are in pair with. It's not just about someone who's tried it before, it's about someone who's compatible with you. But, anyway, it's him who should grab me, no the other way around ;-)
Michael Krelin - hacker
@hacker: In fact, I found that the compatibility factor is smaller than I thought it would be. (Or maybe it's that I try very hard to always end up in small shops with nice people?) I would suggest you just go and try. I'm not overly fond of Kent Beck's almost religious books, but pair programming certainly was a revelation. `:)`
sbi
To tell you the truth, I have *never ever* since my first encounter with computers about 25 years ago read a single book on computing (references excluded, you don't read them, you look them up). I got better things to read, that, I firmly believe, make me a better programmer too. But back to the subject, yes, I may have to try, but I need to pick up someone really nice for the first night ;-) I'll keep in mind that Berlin is full of small chunks of nice people ;-)
Michael Krelin - hacker
+2  A: 

Such collaborative editors already exist - Gobby is one I've used, but there are a few others.

We used it last semester to proof read our report - it's a nice tool for such a purpose, although there can be a bit of chaos if everyone tries to edit the same place at the same time.

Would it work? Perhaps. It does require that they maintain that strict division of responsibilities in order to keep the benefits pair programming helps with - it's a bit easier to enforce this when there's only one keyboard. It may also be a bit harder to discuss implementation details - some things can be easier to explain when you have a whiteboard and can talk face-to-face.

On the other hand, using a collaborative editor makes the practice possible without having to bring the two people together in the same room. The two programmers could even sit in different parts of the world while doing this.

Michael Madsen
+2  A: 

Mozilla created BeSpin which if I recall is precisely that https://bespin.mozilla.com/

Chad
Wow, this looks so cool.
James Black
+10  A: 

To have 2 people working simultaneously on different aspects of the same file seems to me to be completely avoiding what pair programming is all about. In pair programming, as I understand it, it's actually the point that only one person is making modifications at any given time. The other person is supposed to be at the same screen, watching the new code for any mistakes, suggest better ways of implementing the code in question, and offer a second mind to bounce ideas off to reach a more effective implementation. So no, I don't think it would be useful in this context.

Kylotan
But if the other person can be realizing that there is some comments that can be useful, then can add them, without breaking the train of thought of the other programmer, then the code becomes clearer to others. As opposed to two people working on two different functions, I am considering a small case where two people are able to work on the same function at the same time, but only one is making a functional change.
James Black
You made a good argument for why it would be a bad idea, and then your last sentence actually answered my question, though the other responses showing that it has already been implemented has been very useful to me.
James Black
+1  A: 

Pair programming is about one having keyboard and mouse, and the other one providing feedback. You can switch these roles or give the keyboard to one and the mouse to the other, but you will always have to work on/think about the same piece of code for it to be pair programming.

I don't see how such an editor could help with this, but I can see how it could hinder.

sbi
Well, one keyboard + mouse at a time at least. At our pairing stations we have 2 keyboards + 2 mice hooked up to the same machine with 2 monitors, like JB King below.
Chris Simmons
+1  A: 

Such tools doesn't have to be web based. Here are a few one that aren't:

  • Gobby, the collaborative text editor
  • XPairtise, a Distributed Pair Programming Plug-in For Eclipse
  • Jupiter, a code review plug-in tool for the Eclipse IDE (not really pair programming)

But actually, I don't really see the point of using such tools if people are collocated (which is the best configuration for pair programming). For people that are geographically distributed, they might help but it'll never be as good as sitting next to someone.

Pascal Thivent
I will look at these Eclipse plug-ins, as I tend to primarily use Eclipse when not using VisualStudio.
James Black
+2  A: 

I agree with Kylotan's initially any about 2 people working on different aspects of the same file is avoiding why there is pair programming. My understanding of pair programming is that together choices are made and while one types in the code that was agreed, the other is acting as that second set of eyes to ensure that it is what was understood. Thus, it isn't just one person typing whatever they want, but putting in what was agreed and getting that agreement can work out many of the details in someone's initial idea that may end up being a good solution thanks to some feedback.

Sometimes we've used 2 keyboards and 2 mice on a computer but generally it is easier to just have one and take turns typing up stuff. If we find some grunt work, we may split up so each does the part that has to be done that isn't hard or tricky, just boring and almost monotonous.

JB King
A: 

Etherpad is an online, collaborative text editor that I have used in the past. The kind of problem that requires a collaborative text editing solution has been rare in my experience.

fbrereto
+1  A: 

The situation you have outlined I would describe as "simultaneous editing", not Pair Programming. As others have pointed out, there's a big difference, and there are several tools out there that aim to allow simultaneous editing.

Eric King