0

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.

James Black
  • 41,583
  • 10
  • 86
  • 166

10 Answers10

12

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
  • 18,290
  • 7
  • 46
  • 74
  • 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 Sep 16 '09 at 16:53
  • 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 Sep 17 '09 at 00:27
6

For people who like such things, there's an interesting editor called SubEthaEdit.

It allows you to see who is working on a document, see their editing region in its own color, track who made changes to a file, etc…

alt text
(source: codingmonkeys.de)

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Duncan Beevers
  • 1,830
  • 11
  • 17
2

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
  • 54,231
  • 8
  • 72
  • 83
2

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

CaffGeek
  • 21,856
  • 17
  • 100
  • 184
2

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
  • 11,860
  • 4
  • 38
  • 49
1

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
  • 219,715
  • 46
  • 258
  • 445
  • 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 Sep 16 '09 at 16:51
1

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
  • 562,542
  • 136
  • 1,062
  • 1,124
1

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
  • 11,594
  • 5
  • 43
  • 53
0

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
  • 138,757
  • 24
  • 193
  • 173
  • If you're sceptic about pair programming, grab someone who has already done so and try it out. That got me converted. – sbi Sep 16 '09 at 16:34
  • 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 Sep 16 '09 at 17:00
  • @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 Sep 16 '09 at 19:49
  • 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 Sep 16 '09 at 19:56
0

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
  • 35,429
  • 19
  • 126
  • 178