mirror of
https://github.com/wezm/wezm.net.git
synced 2024-12-18 18:29:54 +00:00
Add pair-programming post
This commit is contained in:
parent
8bce751467
commit
81aaaf2d1e
2 changed files with 85 additions and 0 deletions
72
content/technical/2017/10/pair-programming.md
Normal file
72
content/technical/2017/10/pair-programming.md
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
# Pair Programming
|
||||||
|
|
||||||
|
> All code to be sent into production is created by two people working together
|
||||||
|
> at a single computer.
|
||||||
|
|
||||||
|
— <http://www.extremeprogramming.org/rules/pair.html>
|
||||||
|
|
||||||
|
Recently I read [The Only Person I’ll Pair Program with is my Cat by Patrick A.
|
||||||
|
Brown][cat-programming] and it stirred up some thoughts that got too long for a
|
||||||
|
tweeted response. So I'm capturing my own feelings on the practice here.
|
||||||
|
|
||||||
|
I don't enjoy the practice of pair programming as it is defined above. It's
|
||||||
|
taken me a long time to be able to admit that because there is evidence that
|
||||||
|
pair programming is faster and produces higher quality
|
||||||
|
results,<sup>[[1]][pairprog-hannay-ist09]</sup> and that most people enjoy
|
||||||
|
it.<sup>[[2]][XPSardinia]</sup> Going against this evidence makes me feel like
|
||||||
|
I'm a bad programmer, or that I'm not doing my job well.
|
||||||
|
|
||||||
|
For me (full-time) pairing takes the fun out of my job. It may be argued that
|
||||||
|
I'm not employed to have fun but you can be damn sure that if spending half my
|
||||||
|
waking hours a day in your employ I'm going to want it to be enjoyable. I'm not
|
||||||
|
some resource that solely exists to extract maximum efficiency out of in order
|
||||||
|
to further other people's goals. I'm a person with my own goals that is
|
||||||
|
**expending a great deal of my life** in other people's employ so that I may
|
||||||
|
live, and have a fun and fulfilling life.
|
||||||
|
|
||||||
|
When pairing full time, or most of the time:
|
||||||
|
|
||||||
|
* I get tired and drained:
|
||||||
|
* As a bit of an introvert, I find extended periods of pairing extremely
|
||||||
|
draining. I don't think introversion is really factored in when the XP
|
||||||
|
crew advocate for full-time pair programming.
|
||||||
|
* I lose any chance of achieving a [flow state][flow].
|
||||||
|
* Tools and technology are diluted to the lowest common denominator:
|
||||||
|
* I have invested countless hours learning, [configuring][dotfiles], and
|
||||||
|
mastering powerful tools like [Neovim], [zsh], and [my operating
|
||||||
|
system][arch-linux], which I'd like to be able to use.
|
||||||
|
* I miss the satisfaction of working on and solving a problem myself.
|
||||||
|
* I am generally less satisfied and enthusiastic about work.
|
||||||
|
|
||||||
|
To be clear I'm not advocating for never working with a fellow developer or a
|
||||||
|
complete lack of collaboration within your team. I'm stating that I don't like
|
||||||
|
the practice of requiring or pressuring people to work as a pair for all or the
|
||||||
|
bulk of their time. Also, pairing is the practice when two people of similar
|
||||||
|
skill level work together. If there is a disparity in skill level then it's
|
||||||
|
mentoring, which is a totally different thing.
|
||||||
|
|
||||||
|
To me, "working together at a single computer", is a tool in your tool belt
|
||||||
|
like any other that you use when it makes sense. Trying to solve a
|
||||||
|
particularly complex problem? Work with someone on it. Been [stuck for a little
|
||||||
|
while, enlist some help][15-minute-rule]. When the time is right for
|
||||||
|
collaborating on a problem it is a skill like any other that can be improved
|
||||||
|
and honed. [Ellie Meredith gave a great talk at the Melbourne Ruby meetup in
|
||||||
|
August][aemeredith-pair-effectively] on some tips that contribute to
|
||||||
|
effective pairing. These tips can help improve your effectiveness, and
|
||||||
|
enjoyment when it's the right tool for the job.
|
||||||
|
|
||||||
|
If you love pairing full time, great, but keep in mind that not everyone feels
|
||||||
|
the same way. If you don't really enjoy paring full-time, rest assured you're
|
||||||
|
not alone. Look after yourself, hone your skills and pair when it makes sense.
|
||||||
|
|
||||||
|
[cat-programming]: https://medium.com/@patrickabrown/the-only-person-ill-pair-program-with-is-my-cat-86da6fb4da3d
|
||||||
|
|
||||||
|
[pairprog-hannay-ist09]: http://www.idi.ntnu.no/grupper/su/publ/ebse/R11-pairprog-hannay-ist09.pdf
|
||||||
|
[XPSardinia]: https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF
|
||||||
|
[aemeredith-pair-effectively]: https://speakerdeck.com/aemeredith/two-heads-are-better-than-one
|
||||||
|
[flow]: https://en.wikipedia.org/wiki/Flow_(psychology)
|
||||||
|
[Neovim]: https://neovim.io/
|
||||||
|
[zsh]: http://www.zsh.org/
|
||||||
|
[arch-linux]: https://www.archlinux.org/
|
||||||
|
[dotfiles]: https://github.com/wezm/dotfiles
|
||||||
|
[15-minute-rule]: https://blog.intercom.com/15-minute-rule/
|
13
content/technical/2017/10/pair-programming.yaml
Normal file
13
content/technical/2017/10/pair-programming.yaml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
title: Pair Programming
|
||||||
|
extra: My thoughts on full-time pair programming.
|
||||||
|
kind: article
|
||||||
|
section: technical
|
||||||
|
created_at: 2017-10-21 12:05:00.000000000 +10:00
|
||||||
|
keywords:
|
||||||
|
- practices
|
||||||
|
- pair
|
||||||
|
- programming
|
||||||
|
- psychology
|
||||||
|
- introversion
|
||||||
|
short_url:
|
Loading…
Reference in a new issue