Tuesday, July 17, 2007 - 10:55

Pair Programming Part 2: The First Two Days

So how did my first two days of Pair Programming go? Well, much as I expected, to be honest. I can't say that there's a single point in my first post that I don't still agree with. I'm still trying to keep an open mind, though, since it is early days and none of us really know what we're doing yet. But now that I'm trying it, I can add emphasis and clarification to some of the points that I made before.

Ergonomics in particular is a huge problem; even with sitting in front of a straight desk it just doesn't work. You can move the keyboard and mouse backwards and forwards, but you can't move the monitor. And if the monitor isn't square in front of you, you're going to be sitting slightly twisted, and that ends up hurting your back muscles, and makes it difficult to lean back in your chair and use the support that your chair gives you. And even though you can move the keyboard and mouse, often you just reach for it instead, and that's not really good for your wrists.

I don't know that it's particularly efficient, either. Things will probably improve as we get more used to it, but so far it just seems like a waste of resources. And it's boring! Admittedly, at the moment we're doing fairly simple tasks, that doesn't require two brains, but it means that it's not really taking up a lot of your attention.

And speaking of attention, I do find it difficult to pay attention when I'm not typing. And even when I am typing, I feel that I'm only working at a surface level - I'm not really engaging my brain. And yes, I'm learning stuff since my colleague knows more about this part of the system than I do, but I don't know if I'm really learning it. Learning by doing is important, and learning by watching doesn't work. And even if I drive, I'm not getting enough time to absorb what I'm doing - and I don't have the opportunity to learn by making mistakes, which is even more important! And because I'm not the expert on this section, I feel like I'm not really contributing - in fact, I'm just slowing things down because everything has to be explained. And yes, I know that the XP principles say that I shouldn't feel like that, but I do.

I'm also very aware of the process, rather than the programming. I guess this is partly because it's new, and as we get used to it it will go away, but it stops me from getting really involved in what I'm doing.

I feel that pair programming tries to stamp everyone into the same mould, so that developers become interchangeable. But we're all unique, so it can't work. I agree that from a system point of view, it's good - if someone leaves the company or gets hit by a bus, someone else should be able to take over. But if someone's off sick for a day, is it really necessary that someone else can pick up their code and carry on? And what frustrates me is that everyone customises their PC and their IDE differently. Some things are important, like keyboard shortcuts, and some aren't, like syntax highlighting colours. But if people are interchangeable, and can work with any partner at any PC, you don't get to use all your customisations. And why should we all have to have a work environment that's exactly the same as everyone else, just in the name of redundancy?

There are two things to consider - will it help the company, and will it make me want to come to work or make me want to call in sick? I don't know if it will help the company; maybe, maybe not. But it certainly doesn't make me want to go to work, and while it may seem selfish to think about the effect of paired programming when everyone's interested in doing the best for the company, it's kinda important to me that work is somewhere I want to go.

I don't feel like I'm contributing, and I don't really get any sense of accomplishment when we get something working. I don't get involved in programming like I do when working on my own, I just don't get any sense of flow. And it's draining, being involved in a social situation all day long. And you just can't do anything personal - from checking your mail to clearing your throat, someone is sitting right next to you hearing and seeing everything you do. I know that there is no privacy at work, but this is extreme.

It's a lot like being in meetings all day. You can't do anything personal; you don't really get much done; you have to be polite and friendly all the time; your time just isn't your own.

As I said in my first post - I think a lot of the Agile/XP principles are great. And collaboration is essential - essential for team cohesion, for learning, for enjoyment of your work environment. I'm not saying that everyone should sit in a dark corner and not talk to anyone all day - I'd go insane! But informal, ad-hoc, as needed collaboration is the way to go - forcing me to work with someone all day will also drive me insane.

Labels:

0 Comments:

Post a Comment

<< Home