If you'd like to get PairProgramming phased out at your company, or if you'd like to ensure that you can be exempt from pairing, follow these simple tips.
Top Ten
- Interrupt every time your partner starts doing something in a way other than how you'd do it.
- Once you wrestle the keyboard away, delete your partner's last edit immediately. Then do what you were thinking of instead.
- If your partner objects, ignore it, talk over it, flim-flam around it, claim to be the XP expert, and then accuse him of playing the previous techniques. Better yet, accuse him of playing this one.
- Pair on stuff that is ambiguous so that you can diverge in intent and context every step of the way. (AmbiguityRequiresSpikes.)
- Wait until your partner is half-finished expressing an idea. Then demand they stop and do something else. Explain that you haven't seen a green bar in the last 2 hours.
- Speak non-stop, man-'splain, all the easy stuff, so your partner never has a silence in which to speak, read code, or have a thought.
- Demand silence except when absolutely necessary. When you misunderstand what your partner is doing you can have a prolonged argument about it.
- Complain before your partner does something wrong. Create elaborate theories about their failings. Never forgive, never forget.
- Suffer annoyances in silence until you just can't stand it any more, then blow up. For bonus points go red in face and storm out without explanation.
- Begin every pairing session with a long discussion of all problems you ever experienced together. Insist that all problems be resolved before a line of code is cut. For bonus points, conduct this conversation under time pressure and outside normal work hours when your partner should be curled up at home with their poor neglected spouse.
Fundamental Disrespect
- Insist on doing everything optimally the first time (even optimal keystrokes in the editor). Refactoring is not an option. Nothing fouls the current task better than PrematureOptimization and PrematureGeneralization.
- Don't allow any idea you didn't think of to be tried, no matter how small. Insist on being given a complete and conclusive argument that the idea will work and meets every standard of good code as practiced by the GangOfFour before you yield even one keystroke. Refer to authoritative books to win such arguments.
- Cheat on ExtremeProgramming. Refuse to test first, do one task at a time, do what the customer asked, or any of the other practices that make pairing work. When reminded of the practices, argue and/or accuse.
- When e-searching, or debugging a wickedly dug-in HyperBug, be sure to agree cheerfully & readily on minutia like which swatch of e-citations to drill down on, or where to apply trace statements & breakpoints. While your notebooks sit idly by, pining for the days when you interacted with them more...
- Never miss an opportunity to lecture your partner about good [OO-design|database-normalization|refactorings|math|linguistic-legalism]. Keep arguing and lecturing even after your partner agrees with you. Establish dominance.
- If you push coffee on your partner, they might do all the typing.
Shatter Concentration
Once you've mastered the basics, you can inject venom deep beneath the skin by going meta:
- While your partner is driving, read the newspaper, balance your checkbook, engage in romantic chat, work on your income taxes, sign Christmas cards, or do other personal activities. Ask your partner to summarize what they did whenever it is your turn again.
- At typo time, the odds are high your pair (from years of soloing) has noticed the typo and will fix it at the end of their flow. This flow must be destroyed. Demand the fix instantly--don't wait for the end of the line.
- When observing, push items onto the GoalStack faster than the driver can keep up, instead of quietly writing them down for later.
- Offer arguments whenever your partner suggests writing the test first or picking a smaller task. For example, "You're interrupting my flow!" or "I'm driving; you should support what I'm doing."
- Consistently begin talking one or two words after your pair begins speaking. (Not advisable if your pair is bigger than you.)
- Complain. Every time you come across anything that reminds you of something you don't like--a variable reminding you of something that should have been changed ages ago, a class name that reminds you of some bad thing that management has been doing--never miss the opportunity to rant. If it's not part of the current task and it popped into your mind, you have no choice but to talk about it.
- "How do you spell 'tittalation'?"
Turn Up the Heat
Now that your pair is annoyed, frustrated, and confused, you can cause lasting neurological damage with these:
- Either catch or simulate an annoying mental condition. Freak over certain irrelevant abstract geometric patterns. Claim a method won't work because its right margin (in a left-to-right locale) is "ragged with the wrong shape". Turn your head sideways and squint often.
- Keep your partner in the dark about goals. When they jump to the wrong conclusion you can patronizingly correct them.
- Repetitive attacks of "Hey, that 'if' statement reminds me of [a long annoying anecdote or hours of sporadic quips] from { HarryPotter | DuneTheMovie | MontyPython | FiresignTheatre | TwilightZone | XkCd | FrankZappa | DouglasAdams | DoctorWho | JrrTolkien | PinkyAndTheBrain | StarTrek | StarWars | Bonzo Dog Doo Dah Band }!"
- Lay awake at night, thinking about how you will not even notice the next time your pair types a capital A by holding down the shift with his left pinky, and diving his right index finger over it to strike the A.
For Gurus Only
That rambunctious puppy they set loose in your lab is not just distracting you and slowing you down, it is piddling on your project. Following these simple tips will help your managers understand the importance of fresh air and sunshine for young growing creatures.
- When you drive (>50% of the time - you want to get stuff done, right?) provide a non-stop patter that is misleading. Specifically, describe the outer limits of your GoalStack, not what the magic spell you are currently typing actually does.
- Switch to navigating frequently and abrubtly, by describing the next keystroke and pointing petulantly at your pair's keyboard. To help your newb feel even more disgruntled, only navigate by barking out keystrokes, never high-level goals and motivations.
- Be the only one who talks during code reviews, ensuring your newb will be even more lost than ever if you call in sick and they must add a simple feature.
- The highest risk to your coveted HighMaintenanceEmployee status is "MostQualifiedPairsWithLeastQualified". Rotate your least qualifieds early and often, using the above techniques, to carefully ensure they remain least qualified.
- That one thing they keep asking everyone, including your highness, how to do? You quietly & indirectly make sure nobody helps on it, ever.*
- Invent awesome libraries, on your own time, and de-productize their interfaces. See JobSecurity for technical tips here. Then "pair" with your newbs to install them, all the while taking care to track their complete mystification regarding your masterpiece.
- Upon returning from bio-break to ur new masterpiece, if the thing you imagined you made clear should be done is not done and spruced up ... hell. Pay it, now.
- Make sure to only solo on certain realms of your code. Pair only on well-trodden code you know the newb barely gets, and always find excuses to avoid they even learn the existence of certain mission-critical segments. The batch files and build-scripts that actually put everything together should be test-free, written in an alternative language (PerlLanguage makes a create obfuscator here), and purely pair-free. Explain you are helping your newbs focus "only on the important production code" whenever you solo to tune it up!
* Learnt me this'n at the HappiestWorkplaceOnEarth. Go figure
Remote/Virtual Pairing
- Oh, was that today? Sorry, dude, but the surfs up at Trestles. Can we push back to, say, starting Friday at 10:30 pm?
Manners
Never underestimate the annoyance power of basic social faux-pas:
- Greet, get a status update from, and chit-chat with every person who walks by. Make sure everyone knows that you are important.
- Adopt medieval personal hygiene habits.
- Drink massive amounts of coffee to get that extra rich, textured dragon breath going. Add the smell of cigarette smoke to your breath and clothing if possible.
- And don't forget that good old sibilant "GASP" sound after drinking!
- Hum or whistle classical music, off-key, preferably when your pair is speaking.
- Play the same song on your MP3 player repetitively, for days on end.
- Pair with headphones on.
- Alternately, we all know everyone likes DeathMetal and GrindCore - even the people in the low-rise across the freeway.
- Interrupt other pairs in mid-flow, ensuring retribution when yours returns.
- Pick fights with management and co-workers, inspiring them to make life difficult for you and for whatever unfortunate soul happens to be sitting next to you.
- Start calling your pair endearing names. "Cupcake" works for any combination of sexes between the pair; it is either offensive or disturbing.
- Anyone who does not share your ideological, political, religious, philosophical, & sexual viewpoints is obviously a pitiful dolt. But incessant sermons might help them - you have the responsibility to try.
- It's pronounced "khar", dammit!
- Start the AtkinsDiet?. Being up close to ketosis breath isn't fun.
- Two words: HowardStern
- Three words: Advanced Pen Twirling.
- One word: Yawn.
- Snort with derision each time your adversary types the letter Q.
- Chew your nails incessantly, and then use your wet fingers to type on the shared keyboard -- This has happened to me twice this week. Yuck!
The Phone
The telephone can be a great ally in your quest to undermine PairProgramming. Here are some ways to get the most use from it:
- Crank up your cell phone's ringer volume all the way, and set it to play "Take Me Out to the Ball Game".
- Answer your phone in the middle of a pairing session.
- Let it ring at least five or six times before picking up, to maximize tension.
- When you answer, make sure the phone is on the far edge of your desk, so you immobilize your partner and/or strangle him with the cord.
- Then, discuss what you and your partner are doing with the caller, and discuss the phone conversation with your partner afterward.
- Ask friends and family members to call you every half hour, at both your cell phone and your desk phone.
Oh, btw...
The Fox and the Stork
If you work at a place where people "own" their own desks and workstations (as opposed to communal pairing stations), customization provides innumerable ways to keep your pair off-balance:
- Remap Alt+Tab to something disruptive, like "minimize every window".
- DvorakKeyboard.
- Configure your e-mail and InstantMessaging clients, your stock and sports score alert services, and any other notification mechanisms to pop up modal message boxes and play sounds whenever any event occurs. Insist upon dealing with them as they happen.
- Everyone likes EmacsVsVi, so switch your command prompt so it only edits with these commands, not the standard ones.
- Lazy mouse.
- Get LASIK, then switch your desktop to an absurdly small font, and push the monitor far away from the keyboard.
- Alternatively, ignore your vision problems. Run your 32-inch monitor in 800x600 pixel mode (the factory default) because "the fonts are bigger like this".
- Get (or create) the weirdest desktop theme you can. Turn innocent window frames into jungles of clinging vines. Switch the colors to very low contrast. See GnomeDesktopEnvironment for more ideas here.
- A feed from news:alt.binaries.pictures.tasteless makes for a great rotating wallpaper
- If you use EmacsVsVi, remap the Home and End keys to do anything except move to the first character in a line or the last.
- Invent your own standards for key behavior (like that last one). And enforce 'em!
- Complain about every preference of your partner's that's different from yours. Try to shame or argue them out of their preferences.
- If your partner suggests that we instead use your preferred editor or shell, ignore him and keep complaining that his settings are wrong or non-standard. As you operate in his preferred environment, bang on the keys sulkily.
- Put things under your desk that knock their shins.
- Remember, a clean desk is a sign of a sick mind. Advertise your mental health.
- The same goes for a desktop. Leave every file you ever copied in scattered all over the backdrop.
- Remove all the standard icons and hotlinks from your tool bar, and put in only ones that do funky things you like.
See also:
http://home.att.net/~g.johnson/readroom/aesop/aesop23.htm,
CompulsiveCustomizer.
Contrarily, if you use dual keyboards and mice, but your OS's Desktop using only a single mouse pointer cursor and single text input caret...
- The possibilities are endless.
When I was an undergraduate, I spent one summer doing AI hacking at the MIT AI Lab. We'd hired this west coast guy to do Lisp hacking, and I can clearly remember being a little stranged out by his attitudes. He just wouldn't shut up about Interlisp and Browning Hi-Power's. Every time I tried to explain to him the way our project did things, he'd interrupt with "the right way," i.e. the West Coast Way, to do it. He just couldn't get it through his head that I didn't want to hear about Interlisp, and I damn sure didn't want to hear about 9-fucking-millimeter automatics; we were a Zetalisp/.223 project. I finally gave up on him; that was the first time I'd ever personally encountered the east coast/west coast split in Lisp style and weapons choice.
- You can always tell East Coast weenies; they're the ones who meet someone from the left coast who happens to be a jerk with borderline personality disorders, and for the rest of his life believes that that person was a perfect archetype of everyone from the West Coast. Fortunately we realize that you are an aberration, and don't represent the East Coast.
I'm not quite as adamant about that sort of thing as I used to be. I guess these days I tend to have a "whatever gets the job done" attitude -- even if it's franz or a .22 Woodsman. -- stolen from http://www.cc.gatech.edu/~shivers/autoweapons.html
Yeah, those Parabellum weenies are enough to make you want to join the ACLU, aren't they? Well, almost. And only if I can join and not give up my .50 AE Desert Eagle and Armalite M15A4. But if the ACLU insists on me using Interlisp...
This sounds like my boss's standard mode of operation. I don't know whether to laugh or cry. ("We need to do a better job on our comments - they suggest to our clients that we don't know what we're doing") - right, our customers are definitely spending their spare time grammar checking the comments on the database access layer..
Hmmm, once I had a boss like that (although his boss was in the position of the customers ;-)) so we just created a script that would remove any comments without an "ok" marker (and all "ok" markers) from that copy of the code files that would leave the room for deployment or outside inspection. M4 works great, for that matter...
Nah. Too expensive. It'll be replaced by the HK XM-8 or some variant eventually. 5.56 is here to stay, though.
CategoryPairProgramming