Pair programming tools that are not remote

1.4k views Asked by At

I am currently in a job where we practice serious pair programming on windows machines. We both have a set of keyboards, mice, and we have two monitors, which works well for switching who's the driver really easy, but there are some points in the session that I would like to start writing tests at the same time that my pair is writing implementation.

I am wondering if there is any program that would allow me to have effectively two cursors and keyboard focuses on the same computer. If they don't exist then I am willing to experiment with my own solution, but I would like input as to how to best accomplish this. I am most familiar with .Net 3.5 technologies, but I also know Java and am willing to learn C++ to solve this problem.

If I was creating the solution myself I would go down the road of being able to grab the input of one hardware device (i.e. a specific mouse that's installed) and prevent Windows from moving the pointer, and instead move my own programs pointer independently.

6

There are 6 answers

2
RibaldEddie On BEST ANSWER

Something I did once:

Take two desks and place them up facing against each other so that when each developer sits at a desk they are facing the other developer.

Each developer gets two monitors, one of which is plugged into the OTHER developer's computer.

Each computer is set to mirror/clone its screen to the other monitor. This means that each developer is facing each other but also each developer can see what the other one is doing on her computer.

Then, each developer installs the free software called "Synergy2" (http://synergy2.sourceforge.net/) on her computer and configures it such that when the developer moves her mouse cursor over past the edge of her screen towards the side that the other monitor is visible, the developer can then interact with the other developer's interface.

This way, you can both always see what the other is doing AND also fluidly move from driving to riding shotgun for each other as the situation demands it.

Sometimes this ends up working like the classical method where one dev is always driving and the other is always riding shotgun but it at least gives the opportunity to work both independently as well as together.

Actually I think I will suggest trying this out with my current workmates on Monday!

2
zerkms On

Classic pair programming is when 2 programmers sitting at the PC, but only one programmer writing the code.

0
Gabe On

I use VNC, but RDP could probably be made to work as well. I connect to my partner's VNC server and I can see his desktop, type on his screen, move his cursor, etc. However when I want to look up an API or do some coding of my own I can minimize the window, move it to the other monitor, or just put my browser/editor over it.

4
Gabe On

After looking at your comments, it seems like you have a single computer with multiple keyboards, and want to have two people using the same computer, but typing into different programs. I wrote a program to do this once, but it only worked with custom applications.

If you're willing to pay $100 or so, there are several possible programs you can try:

All of the above programs are designed to be used with a single computer and multiple montors/keyboards/mice.

BTW, the term for a single computer with multiple monitors is multi-head; the term for a single computer with multiple monitors and keyboards is multi-seat.

0
Ants On

You may also want to take a look at MultiMouse.

0
PCAddict On

I dont know if you do any testing while you're working on it, but there is always the solution of a cheap low budget comp where you can just write the code for a single class and then just send it over and import when you're done.

Example Situation: You're making a Form Application for something and you want a Custom clock in there to show Elapsed time. While one person is on the Main Machine (has more power for testing if required?) making the form and doing the code for that, the second person is on a cheap computer writing the Class for the Time Elapsed Clock.. so is can be imported and then vairables can be called by "Namespace.Class.Variable". This would be another Option to allow both people to work at the same time, and if you're both sat next to each other, as I assume you could still see what the other is doing and still have access to typing on the others piece of work. This might be a better option than 2 computers with 2 screens each ;P