Pair Programming? I Quit.
Edit 9/27/2020: since I wrote this, pair programming has abruptly all but vanished from the industry. Apparently enough people hate it as much as I do and there have been protests and resignations. It still has its advocates who claim it’s useful but it’s drawing to a close, and good riddance.
I had worked five times previously at Microsoft. Each time the place had gotten worse although my own experience varied positively and negatively. I had worked both full time and as a contractor.
This job was as a contractor and was to be several successive projects in the same group. It was the group that makes software extensions that come with a Microsoft mouse or keyboard. I was chosen because I had worked in accessibility, software for the disabled and I was writing extensions for the Windows 7 taskbar.
On my first day I was handed a 20 page document of team coding standards. There was not a single good idea anywhere in it. It was an arbitrary collection of rules that would result in illegible and hideous code. I told my manager on the first day that I couldn’t read that stuff and that in my last half hour I would bring my code into conformance with theirs, meanwhile I had to be able to read it. He was fine with that.
The job was going fine, except for one Chinese guy I worked with who fumed all day about my nonconformity with their coding standards; Every 20 minutes or so he would start all over as though he had never raised it before, “we have coding standard.” It got very old. I told him their coding standard stunk and what my manager would agreed to but conformity was his highest virtue so it was a waste of time.
But I had nothing but praise for my work; the first six weeks were feasibility, proving it could be done, then I did so and used most of my test code and wrote the application. It worked perfectly, passed all its tests
My Father Dies
Then in late December my father went into his final decline. He had mesothelioma. I knew he was in decline, his doctor had ended his chemotherapy two weeks earlier since it was no longer working.
We had a huge snowfall and I was housebound for eight days with no power when my father started to die. I was able to get out to see him in his last four lucid hours, we talked and made our peace even though he never opened his eyes. I had missed my sister’s visit, she had come to see him not knowing she was coming to his bedside.
I went back to work, and it wasn’t long before I got the phone call that my father had just died. I told the Chinese guy, he said nothing, at least he shut up for a few minutes about “we have coding standard.”
I told my manager I needed to take the usual three days bereavement leave. I told him that as a contractor I had been in very few meetings but now I wanted none.I wasn’t going to sit at my desk sobbing but I wanted to work alone. He agreed.
But during the funeral in the church I got three meeting requests on my phone. I was stunned. One was the Chinese guy calling a meeting for “visibility,” very important at Microsoft. And another, a review of my work.
This made me angry. I’d said I wanted no meetings. Thinking I’d act all self-righteous about getting called during a funeral I accepted the meetings. Big mistake. I should have just hit Decline. Had anyone insisted I attend my own code review I would have told him to go to hell.
Back to Work
I returned to work, and went right into these meetings. Something had definitely changed. I was being treated completely differently by the people in my immediate team and one other I had never met before was openly hostile. I was being nit-picked on my code formatting; I reminded my manager what we had agreed to at the beginning of my contract. He didn’t even respond. The guy I had never met asked me “do these functions throw?” in a tone of voice one uses to start a fight in a bar. I told him I didn’t use throw, he didn’t like that. An Indian guy who had been on holiday until a few days before my father died sat there obediently writing everything down until, getting more exasperated, I told him not to bother because I was not making these changes. He was going to maintain the project, he could reformat my work to their hideous convention once it was no longer mine.
The awful part came after this meeting when my manager told me I was to work with this Indian guy doing “pair programming,” a new term for me. I had taken an instant dislike to him on meeting though I never showed it. He was one of those obedient people Microsoft hires so many of. During the fake code review he had diligently written down all the criticisms as though I was going to lower myself to make such changes.
I had never heard of pair programming nor could I ever have imagined that anyone could think this was a productive way to work. I thought I was walking him through my work but in fact I was expected to write code while he whined about every keystroke I made. He sat literally hip to hip, extremely uncomfortable proximity and my heart was racing the entire time. He was condescending as many Microsoft Indians are despite that he was half my age and had a quarter my experience. He treated me like a junior developer and at one point went to my whiteboard to explain polymorphism, a concept I had learned when he was in his infancy.
It was horrible. I couldn’t concentrate at all, I could only think of getting away from him and getting some privacy.
Finally it was over, I went home, and that night I couldn’t sleep, my heart was racing, my breathing was ragged, it was like a long panic attack. I had panic attacks before this, usually for no obvious reason, but they were brief. This went on all night.
Finally as it was getting light out I picked up my phone and emailed him, told him I absolutely could not continue this, that I would walk him through the code in however much detail he needed, but that this “pair programming” thing was hideously uncomfortable for me. To my surprise he answered at once, sounded as though he had understood, and asked me to let him know when I was in the office. Relieved, I got a few hours of sleep.
The Next Day
I got into the office late. I emailed him and let him know I was in, what did he want to talk about? Two minutes later he showed up and pulled up the chair. Exactly like the previous afternoon. I asked him what the hell he was doing. We’re going to continue pair programming. Like hell we are. Didn’t you read what I wrote? Devon told us to pair program. I don’t give a goddamn what Devon told us. Get out of here. Now. I was getting really angry at being ignored and I probably would have physically thrown him out if he hadn’t left and as lousy as I felt I would probably have split his skull.
I knew what I was doing; I was refusing to do something and there was no possible outcome other than ending my contract, but I would rather be homeless than work like this. I don’t remember how much I got done that day, I’d had very little sleep. The next morning I had a call from the contracting agency, they were in the building and wanted to meet me. I asked if they were coming for my cardkey “It is possible your contract is ending.” I got mad, don’t dick me around with this “it is possible” shit.
We went to my manager’s office, where I learned that the asshole who had asked me about “throw” was supposed to be my next manager, and had said after the meeting he didn’t want me working for him. I laughed at that, who the hell would want to work for a jerk like that? I gave him an earful. I told him that he was incompetent and didn’t know anything about managing, I picked up a pair of scissors from his pencil cup and cut my cardkey in half and walked out.
Four months later I was still getting calls from recruiters about what was supposed to have been my next job; it seems that everyone who had interviewed with this jerk decided they didn’t want to work for him either. I wouldn’t have lasted an hour. He was a complete jerk.
In the eleven years since then I have not gone a day without thinking about those three hours. I did have another job at another company that went perfectly fine but I resolved to never work for Microsoft again.
About six months ago I was talking to a writer on Medium who told me that her work on Wall Street had left her with PTSD, Post-Traumatic Stress Disorder. I had thought this only came from being in combat. When she described it to me I realized that I had the same thing; the pair programming had only been a single three-hour session. Writing about it like this helps me put it behind me but I am stunned when I read others who claim it’s useful; that’s impossible.
Yes there are situations such as mentoring or code walkthroughs that could be done in similar circumstances but coding? While in constant communication? That’s ridiculous.
I spoke with one of my former managers; a few years ago he was at a company that was full-throated with the fads and had everyone doing pair programming and TDD. After a few days a delegation consisting of all the senior developers came to his office and announced that if the pair programming continued they were all quitting.
The junior developers didn’t have the leverage for such an ultimatum and had to continue doing it.
Many of them ended up in therapy.