Thursday, May 29, 2014

Pair programming

I'm currently taking the EdX course CS 169.1x from Berkeley, just for fun. I signed up ages ago but of course when it started I was busy and ignored it, so now I'm starting about four weeks late and catching up real fast.

Unfortunately, among other drawbacks, this means I'm completing a few weeks of homework in a couple evenings and don't have the time to schedule any pair programming sessions. I think pair programming would be a really interesting way to approach this and will probably try and do some when I am working at a more leisurely pace, but until then: here is my replacement discussion of pair v solo programming.

As luck would have it, I spent an hour or so the other day with a senior dev at work both trying to debug a routing issue I was having. While he knows a lot more than I do, he admitted that routing and MVC are not things he is too familiar with, so he was jumping around the code looking for what was happening, and going slow enough that I could follow along. In this case, as I mentioned, I had spent time debugging this before coming to him for help, so one of the helpful things here was that I could see where he followed the same process I had (yay!) and where he did something different, that I perhaps hadn't thought of. I'm not sure if I would have gotten the same value from just coming to him without going through it myself first. From my reading of the forums, many of the students in this class have been doing exactly that - doing the homework and then setting up a peer programming session to re-do it. When this pairs them with somebody who has no idea what they are doing, they might not get the learning experience I did, but they get the opportunity to try and explain what they did the first time which should help solidify the concepts.

In my work session, the other guy couldn't figure out what was going on either. Eventually when we'd clarified exactly what we expected to happen and what was happening, he said that it was time to start doing some simplifying refactoring to remove some of the apparently unused scaffolding code around everything - and as soon as he removed the routing registration from inside an area, the Url.Action calls began working. Neither of us knew why, and I still have to talk to one of our more MVC-knowledgeable colleagues to figure it out - but that step is one that would have taken me far far longer to go to on my own!

So, peer progamming experience: as the junior dev, I've found it very useful. Later in this course I might get the chance to be the more knowledgeable one, and we'll see how that goes.