Bitcoin Forum
November 12, 2024, 03:40:57 AM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Xtreme Programming (XP)  (Read 2136 times)
genjix (OP)
Legendary
*
Offline Offline

Activity: 1232
Merit: 1076


View Profile
February 24, 2011, 06:43:12 PM
 #1

What are your experiences of pair programming when 1 person has significantly higher skill advantage than the other? Is it a good way to teach programming?

How does it work in practice? Do they take turns to code while the other watches? Doesn't seem very efficient... Is there a looser way to code in pairs?

I'm used to agile dev in general though, but am thinking whether I can use pair programming as a teaching tool by constructing shared projects. The usual teacher-student method is too dictatorial for my tastes.
UncleHagbard
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
February 25, 2011, 09:47:05 AM
 #2

Depends on a lot.
I have had good and bad experiences with this - and learned a lot.
It seems to work if you can keep things object oriented and compartmentalize the tasks based on the skill difference.
And have periods of going over with each other what you are doing and why. Actually the skills gap diminishes quickly.

The worst was me with my background in dbase and pascal working with someone who had been handed a VB project that was over-running - he brought me into the project to help identify why it was over-running and help with working on finishing it.
Turns out the problem was really that it was being done in VB - he was a really skilled guy, he had just been worn down by the insanity of it.
There is just so very much difference with the way that VB does stuff compared to how it represents doing it and how a programmer would expect it to work that you end up getting into this kind of never-ending work/wtf?/debug/drugs/attempted suicide/fail/work cycle.
With a pair of you doing it,  you end up forming the kind of bond that I imagine soldiers formed in WW1 in the trenches after having gone over the top and survived.

Haggy.
genjix (OP)
Legendary
*
Offline Offline

Activity: 1232
Merit: 1076


View Profile
February 25, 2011, 11:51:42 AM
 #3

So am I correct to say that:
- The experienced coder is bogged down.
- The inexperienced coder makes massive leaps to the level of the experienced coder.

Definitely keen to try this out.
ribuck
Donator
Hero Member
*
Offline Offline

Activity: 826
Merit: 1060


View Profile
February 25, 2011, 01:23:52 PM
 #4

How does it work in practice? Do they take turns to code while the other watches? Doesn't seem very efficient... Is there a looser way to code in pairs?
I have only occasionally had the opportunity to do pair programming, but I would choose it every time when the opportunity arises.

I have done it with two seats at one desk with one keyboard and monitor. We never "took turns" on any formal basis, but we were always sliding the keyboard back and forth to each other without any formality. I have also done it with two seats at a larger desk with two keyboards and monitors. With that setup, we would sometimes drift off into non-pair programming, but would come back together as a pair anytime someone said anything.

In my opinion the whole strength of pair programming has nothing to do with the coding itself. It's that you are constantly discussing things with each other. This boosts both people's skills, because everyone has strengths and weaknesses, and both people naturally learn from the other person's strengths. And it's much more productive than two people working separately, because both people tend to work at the productivity of the most efficient team member. Finally, it's much more interesting than solo programming. You never find your mind drifting off onto other matters.
UncleHagbard
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
February 25, 2011, 01:37:29 PM
 #5

How does it work in practice? Do they take turns to code while the other watches? Doesn't seem very efficient... Is there a looser way to code in pairs?
In my opinion the whole strength of pair programming has nothing to do with the coding itself. It's that you are constantly discussing things with each other. This boosts both people's skills, because everyone has strengths and weaknesses, and both people naturally learn from the other person's strengths. And it's much more productive than two people working separately, because both people tend to work at the productivity of the most efficient team member. Finally, it's much more interesting than solo programming. You never find your mind drifting off onto other matters.
Well put. This describes my best experiences with pair programming. Pulled a few all-nighters and gotten through a few kilos of coffee in this way. And produced some solutions that prove that two heads can be better than one.
genjix (OP)
Legendary
*
Offline Offline

Activity: 1232
Merit: 1076


View Profile
February 25, 2011, 05:09:14 PM
 #6

OK.

Can't wait to try this with another dev.

Here's what I imagine over the net:
Gobby or shared screen session + vim over SSH -X
Skype for voice chat

Shame there's nothing like gobby for vim or vim mode for gobby...
ribuck
Donator
Hero Member
*
Offline Offline

Activity: 826
Merit: 1060


View Profile
February 25, 2011, 05:40:15 PM
 #7

... over the net:
Oh, over the net...

I will be interested to see how that goes. I don't know if the human communication bandwidth will be high enough.
genjix (OP)
Legendary
*
Offline Offline

Activity: 1232
Merit: 1076


View Profile
February 25, 2011, 05:48:16 PM
 #8

... over the net:
Oh, over the net...

I will be interested to see how that goes. I don't know if the human communication bandwidth will be high enough.

yeah the OP was talking about in real life, but then as I looked into it I got excited at the idea of trying it on some free software projects I'm currently writing.
UncleHagbard
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
February 26, 2011, 02:38:14 AM
 #9

I was looking at xkcd and this one reminded me of this thread.

http://xkcd.com/844/

Notice that the requirements only change if you code well, rather than fast.
If you code fast enough then it is possible (I have heard) to finish a project before they change the spec and you have to start all over again.

Also, if you are working as a pair, when they introduce ridiculous specs, you can say "we are right and they are insane", rather than "I am right and they are insane", for a change.

genjix (OP)
Legendary
*
Offline Offline

Activity: 1232
Merit: 1076


View Profile
March 16, 2011, 11:38:44 PM
 #10

I tried it today with someone over IRC (their connection wasn't good enough for Skype) and a shared screen session. Effective. They quickly got me synchronised and we worked wastelessly.
Nefario
Hero Member
*****
Offline Offline

Activity: 602
Merit: 513


GLBSE Support support@glbse.com


View Profile WWW
March 17, 2011, 03:33:34 AM
 #11

I tried it today with someone over IRC (their connection wasn't good enough for Skype) and a shared screen session. Effective. They quickly got me synchronised and we worked wastelessly.

Yeah, I was the other party with genjix, very effective.

I think there is a lot of talk in this thread about master/apprentice coders, I think this would work well but thats not the only use cases(I don't think it was in our case, genjix correct me if I'm wrong).

My problem is I'm a slow developer, I think that I'm quite good at getting the overall picture, while at the same time able to get down into the details of code with no problems, I'm just slow when writing(genjix opinions on this, how would you describe our working roles in this exercise?).

I think more so than being master/apprentice style relationship, it allowed the both of us to get onto the same page very quickly. The communication, the feedback was instant, which made taking action on them really easy and fast. This turns into a kind of feedback loop of fast feedback->fast changes ->fast feedback..... until it's done.

We made a lot of progress on the command line client for the stock market, genjix was pretty much brought completely up to speed on 2-3 frameworks for the server and the server itself, he got me up to speed on bitcoind's json-rpc.

I think that one of the things that sped things up was that genjix was  pre-occupied with the implementation, the very small details, getting lines of code to work. While I was thinking about what needs to be done, whats better etc.

Genjix never had to take time out to stop and think "whats the best way to do this?" because I had already done that. Once he'd done one thing, I was ready to give him what we were to move onto next. He had nothing to interupt his flow.

I think pair programming over the net works, as long as both parties are capable, not nessisarily master/apprentice.

We used ssh+gnu screen+vim and irc which worked fine. I think gobby, ssh+gnu screen & irc would work great. If both parties have a good enough connection and a headset then skype would probably be able to replace irc for the better.

genjix, a more in depth analysis of your experience would be great.

PGP key id at pgp.mit.edu 0xA68F4B7C

To get help and support for GLBSE please email support@glbse.com
Nefario
Hero Member
*****
Offline Offline

Activity: 602
Merit: 513


GLBSE Support support@glbse.com


View Profile WWW
March 17, 2011, 03:44:34 AM
Last edit: March 17, 2011, 03:58:26 AM by Nefario
 #12

On a related note, I just tried gobby, and I think it would be perfect for this task. It's great to have what feels like a multi-user version of gedit on a windows box. And actually looking into this, it includes a chat window so you don't even need to keep irc open.

http://gobby.0x539.de/

Certainly works.

PGP key id at pgp.mit.edu 0xA68F4B7C

To get help and support for GLBSE please email support@glbse.com
genjix (OP)
Legendary
*
Offline Offline

Activity: 1232
Merit: 1076


View Profile
March 17, 2011, 03:58:10 AM
Last edit: March 17, 2011, 07:07:35 AM by genjix
 #13

Yep, basically that. Not slave/master. Agreed with what you said.

It's like if one person writes something, then another can immediately correct you and continue, rather than getting hassled with a slow back and forth messaging. And it's easier to talk in code than on IRC.

I'm interested to see it working as a teaching tool also. In the summer I might have someone to try it out on.

I've been reading this,
http://codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html

Interesting read.
genjix (OP)
Legendary
*
Offline Offline

Activity: 1232
Merit: 1076


View Profile
March 17, 2011, 08:59:53 PM
Last edit: March 17, 2011, 10:54:34 PM by genjix
 #14

Just found this tool:
http://code.google.com/p/partiwm/wiki/xpra
https://help.ubuntu.com/community/Xpra

GUI version of GNU screen. Can't wait to try it out.

EDIT: xpra works *really* well. Impressed.
Edit2: heh, couldn't find support for multiple attached users...
genjix (OP)
Legendary
*
Offline Offline

Activity: 1232
Merit: 1076


View Profile
March 18, 2011, 12:39:23 AM
 #15

I emailed the author of that tool and he responded:
Quote
No -- I agree that that'd be excellent, but it's a limitation of the X
protocol that applications need to know where they are on the screen
in absolute coordinates. So you can create a virtual "screen" like VNC
does, and that can be shared (with each application in the same place
on the *virtual* screen on all the different computers), or you can
tell the applications where they are on the real screen that's
attached, but you can't get xpra-like no-virtual-screen behavior for
one app displaying in two different sessions at once.

So it's suboptimal, but for pair programming I'd stick with VNC. (Or
perhaps screen, or some tricky use of emacs' client/server support.)

http://blog.tridgell.net/?p=111

-- Nathaniel

That link he sent me is very informative.

http://blog.tridgell.net/?p=111
Nefario
Hero Member
*****
Offline Offline

Activity: 602
Merit: 513


GLBSE Support support@glbse.com


View Profile WWW
March 18, 2011, 03:23:40 AM
 #16

What other sources I've read that vnc is not great for remote pair programming. Too slow.

PGP key id at pgp.mit.edu 0xA68F4B7C

To get help and support for GLBSE please email support@glbse.com
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!