The surprising effectiveness of extreme programming
Today was my first day out at a client site. On Friday my boss told me I might be going out to a client site today. On Saturday I got my marching orders. So today, I went. I have a week or two of overlap with one of my coworkers who is training me because his wife is very pregnant (as opposed to a little bit) and he expects to go on leave for awhile as soon as the baby is born. I’ll be his temporary replacement. So I don’t have much time to get fully caught up on everything before I end up in charge of things. The whole situation is a mess that I’ve walked smack dab into; a major project with a firm deadline is behind schedule, as well as other problems that aren’t appropriate to talk about. It’s different from the relaxed atmosphere back at the office, and it’s also the only client site that’s within driving distance of the office (meaning no air travel). The commute is longer there though.
But the main focus of this post is Extreme Programming. Since I only have a week or two of overlap with my coworker, and it would take awhile to get everything set up on a new computer, they aren’t giving me one. So my coworker and I are using the same computer. He goes about with his work, taking time to explain everything to me (I think I’m catching on!), and I offer my input whenever I have any. It’s Extreme Programming the way I first heard it defined: two programmers at one computer.
It’s actually going extremely well. I’m surprised by how productive we are. When I first heard about Extreme Programming about six years ago, my naive assumption was that it was a waste. Computers aren’t that expensive, whereas salaries are; why limit people’s productivity by forcing them into situations where only one can be typing away at a time? Now, having actually experienced it, I can see some actual benefits.
It’s all about that old adage, “Two heads are better than one.” I’m not up to speed on this software just yet, so my coworker was the main driver and I was the copilot. But the program is written in Java, and I have a lot of experience in Java, so I was able to offer up some help with that. Also, I caught a few simple mistakes that neither he nor Eclipse noticed right away; for instance, a missing space in a SQL query string. That would’ve been a bitch to debug. I was able to help during debugging; I made several educated guesses about modifications to try to get the code working that ended up being correct. We managed to finish up the code in a single day. Had he been working alone, I’m not so certain it would have been finished.
Whether we did more together than we could do apart is debatable, but it’s certainly not like we were throwing away an entire person’s worth of productivity. I think the resultant code was better, too. We each knew tricks and techniques that the other didn’t that ended up producing better code. Another advantage of Extreme Programming is that it keeps both programmers focused. When I’m programming alone, my attention span is short and my mind easily wanders. But with a coworker sitting at the exact same computer, you can’t really do that, and you feel a strong obligation to continue working because you don’t want to leave your partner hanging. And you can’t exactly goof off by reading tech news sites while another person is sitting at the computer. We worked straight through the whole day, stopping only for lunch, and added significant functionality to the software. Not bad for my first day!
But above all else, there is one severely underestimated advantage to Extreme Programming that I learned today: it allows socialization. I’m bored to tears if I try to program straight for eight hours all alone. Humans are social animals, after all. But programming in a pair is actually fun. We were having a good time, cutting up with programming anecdotes and jokes. It didn’t feel nearly as much like work as programming alone does. And I mean that in a good way, not in a bad way. When you’re having fun, you’re much more motivated to do better, and the hours just seem to melt away as you continue making progress to your goal. So these days we’re programming together look like they’re going to be fun. It’s just that, when he leaves, things will get a lot trickier.
September 10th, 2007 at 23:56
I went through some of that with a consultant guy who was a genius. It was a lot more fun going through things together than me just slaving away, not quite sure what I was doing due to my newbness. Though it was more productive than I would have been alone, the problem is that the dude was so smart that his brains could have been put to better usage had he not been sitting there with me. It was indeed more social, more interesting, and better in just about every way. For menial tasks having two people on the same problem is a waste, but otherwise I’d say it’s a pretty good deal, especially if you pair people up where one person’s strengths help out another’s weaknesses. I’m better at concepts and ideas than I am at actual math and detail work, whereas someone else might be good at that and lack broader comprehension, so the two of us would make for a good programming team.
What company do you work for, anyway? I quit the job I mentioned above because the boss was a ‘tard who also constantly wanted me to stay 12 hours for no damn reason (beyond the fact that the company was way too small for its own good — two programmers and a consultant who came for two days a week!). Still don’t know if quitting was a good idea since I miss having an income, but that’s what happened, so oh well. ^__^
September 11th, 2007 at 00:30
Oh, it’s just a small IT consulting company that sells its product and services to large corporations. You haven’t heard of it.