views:

230

answers:

6

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.

+1  A: 

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

zerkms
yes, but lets allow ourselves to try new things and evolve this great idea so that more might come from it. You will never discover something better if you are always stuck in tradition for traditions sake. I would love to try what I have proposed and see if things improve. If not then I don't care and it's been fun experimenting.
JonathanTech
anyway, i can't believe there is a good idea to simultaneously edit one file. let's imageine you're trying to compile your source but your colleague wrote some his code with errors. what would you do then? if you're working on different things - then my way is to use SCM + merging.
zerkms
+8  A: 

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!

RibaldEddie
now that's the type of open-mindedness that I like to hear. This sounds really good and we are already halfway there. I really like this idea, even though it isn't a pure 'one machine' fix, it still would accomplish what I'm trying to do. I think this idea could work well for remote teams as well.
JonathanTech
It works well. I paired with another developer this way for several months straight at a previous employer and we did good work together.
RibaldEddie
A: 

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.

Gabe
+1  A: 

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.

Gabe
but multi-seat gives the wrong idea as I don't want multiple logins (i.e. what BeTwin and SoftXpand give) I want to share the same desktop as the other user. But I will check out the other programs you have mentioned. Thanks
JonathanTech
I just looked over those solutions and none of them fit my situation, although they look useful for stretching resources.
JonathanTech
If you run VNC from one of the stations you can duplicate the desktop of the other station. Is that what you want?
Gabe
defiantly an option. I kind of like that as a solution, as it mixes the other solution above without having to have a 2nd computer at the workstation.
JonathanTech
A: 

You may also want to take a look at MultiMouse.

Ants
A: 

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

PCAddict